2023-04-29 20:37:28 +00:00
|
|
|
from tgbot.api import send_message, forward_message, delete_message, \
|
2023-05-04 08:42:52 +00:00
|
|
|
approve_chat_join_request, edit_replymarkup, get_chat
|
2023-04-29 20:37:28 +00:00
|
|
|
from tgbot.storage import Profile, storage
|
2023-04-23 16:54:58 +00:00
|
|
|
|
|
|
|
|
2023-05-04 08:42:52 +00:00
|
|
|
def update_button(chat_id, member_id, text='❤️'):
|
|
|
|
print('update reply markup')
|
|
|
|
prevmsg_id = storage.get(f'btn-{chat_id}-{member_id}')
|
|
|
|
if prevmsg_id:
|
|
|
|
premsg_id = prevmsg_id.decode('utf-8')
|
|
|
|
newcomer = Profile.get(member_id)
|
|
|
|
amount = len(newcomer['parents']) + 1
|
|
|
|
text += f' {amount}'
|
|
|
|
rm = {
|
|
|
|
"inline_keyboard": [
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"text": text,
|
|
|
|
"callback_data": 'vouch' + member_id
|
|
|
|
}
|
|
|
|
]
|
|
|
|
]
|
|
|
|
}
|
|
|
|
r = edit_replymarkup(chat_id, prevmsg_id, reply_markup=rm)
|
|
|
|
print(r)
|
|
|
|
|
|
|
|
|
2023-04-23 16:54:58 +00:00
|
|
|
def handle_button(callback_query):
|
|
|
|
# получаем профиль нажавшего кнопку
|
|
|
|
actor_id = str(callback_query['from']['id'])
|
|
|
|
actor = Profile.get(actor_id, callback_query)
|
|
|
|
|
|
|
|
callback_data = callback_query['data']
|
2023-04-28 12:24:14 +00:00
|
|
|
if callback_data.startswith('vouch'):
|
|
|
|
print(f'button pressed by {actor_id}')
|
|
|
|
|
|
|
|
newcomer_id = callback_data[5:]
|
|
|
|
print(f'button pressed for {newcomer_id}')
|
2023-04-23 16:54:58 +00:00
|
|
|
|
|
|
|
newcomer = Profile.get(newcomer_id)
|
2023-04-28 12:24:14 +00:00
|
|
|
print(f'newcomer profile {newcomer}')
|
2023-04-23 16:54:58 +00:00
|
|
|
if newcomer_id == actor_id:
|
|
|
|
# нажал сам, не реагируем, прописываем данные
|
|
|
|
newcomer = Profile.get(newcomer_id, callback_query)
|
2023-04-28 12:24:14 +00:00
|
|
|
else:
|
|
|
|
# нажал кто-то другой
|
|
|
|
|
2023-05-01 16:31:17 +00:00
|
|
|
if str(actor_id) not in newcomer['parents']:
|
2023-04-28 12:24:14 +00:00
|
|
|
print(f'save parent for {newcomer_id}')
|
2023-05-01 16:31:17 +00:00
|
|
|
newcomer['parents'].append(str(actor_id))
|
2023-04-28 12:24:14 +00:00
|
|
|
Profile.save(newcomer)
|
2023-04-23 16:54:58 +00:00
|
|
|
|
2023-05-01 16:31:17 +00:00
|
|
|
if str(newcomer_id) not in actor['children']:
|
2023-04-28 12:24:14 +00:00
|
|
|
print(f'save child for {actor_id}')
|
2023-05-01 16:31:17 +00:00
|
|
|
actor['children'].append(str(newcomer_id))
|
2023-04-28 12:24:14 +00:00
|
|
|
Profile.save(actor)
|
2023-04-23 16:54:58 +00:00
|
|
|
|
2023-04-28 12:24:14 +00:00
|
|
|
chat_id = str(callback_query['message']['chat']['id'])
|
|
|
|
|
|
|
|
print('accept join request')
|
|
|
|
r = approve_chat_join_request(chat_id, newcomer_id)
|
|
|
|
print(r)
|
|
|
|
|
2023-05-04 08:42:52 +00:00
|
|
|
update_button(chat_id, newcomer_id)
|