welcomecenterbot/tgbot/handlers/callback_vouch.py

64 lines
2.2 KiB
Python
Raw Normal View History

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)