welcomecenterbot/src/handlers/callback_vouch.py

66 lines
2.4 KiB
Python
Raw Normal View History

2023-09-06 10:20:50 +00:00
from 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-09-06 10:20:50 +00:00
from 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='❤️'):
2023-09-06 10:08:05 +00:00
button_message_id = storage.get(f'btn-{chat_id}-{member_id}')
print(f'button_message_id: {button_message_id}')
if button_message_id:
button_message_id = button_message_id.decode('utf-8')
print(f'button_message_id: {button_message_id}')
print('update reply markup')
newcomer = Profile.get(member_id)
amount = len(newcomer['parents']) + 1
text += f' {amount}'
rm = {
"inline_keyboard": [
[
{
"text": text,
"callback_data": 'vouch' + member_id
}
]
2023-05-04 08:42:52 +00:00
]
2023-09-06 10:08:05 +00:00
}
r = edit_replymarkup(chat_id, button_message_id, reply_markup=rm)
print(r)
2023-05-04 08:42:52 +00:00
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)