welcomecenterbot/tgbot/handlers/callback_unlink.py

43 lines
1.8 KiB
Python
Raw Normal View History

2023-04-29 20:37:28 +00:00
from tgbot.api import send_message, delete_message, kick_member
2023-04-28 12:24:14 +00:00
from tgbot.handlers.command_my import handle_command_my
2023-04-29 20:37:28 +00:00
from tgbot.utils.mention import userdata_extract
2023-04-23 16:54:58 +00:00
from tgbot.storage import Profile
# remove link of callback sender
# from member vouched before
def handle_unlink(callback_query):
print('handle unlink button pressed, private chat only')
from_id = str(callback_query['from']['id'])
2023-04-28 12:24:14 +00:00
linked_id = str(callback_query['data'].replace('unlink', ''))
2023-04-23 16:54:58 +00:00
2023-04-28 12:24:14 +00:00
# удаляем связь с потомком
2023-04-23 16:54:58 +00:00
actor = Profile.get(from_id, callback_query)
2023-04-28 12:24:14 +00:00
actor['children'].remove(linked_id)
Profile.save(actor)
# удаляем связь с предком
linked = Profile.get(linked_id)
linked['parents'].remove(from_id)
Profile.save(linked)
2023-04-23 16:54:58 +00:00
# удаляем старое сообщение с кнопками
2023-04-28 12:24:14 +00:00
reply_msg_id = callback_query['message']['message_id']
2023-04-23 16:54:58 +00:00
r = delete_message(from_id, reply_msg_id)
print(r)
2023-04-28 12:24:14 +00:00
# если ещё есть связи - посылаем новое сообщение
if len(actor['children']) > 0:
handle_command_my(callback_query)
2023-04-23 16:54:58 +00:00
2023-04-29 20:37:28 +00:00
# если больше никто не поручился - kick out
2023-04-28 12:24:14 +00:00
if len(linked['parents']) == 0:
2023-04-29 20:37:28 +00:00
lang = callback_query['from'].get('language_code', 'ru')
2023-04-28 12:24:14 +00:00
for chat_id in linked['chats']:
2023-04-29 20:37:28 +00:00
r = kick_member(chat_id, linked_id)
print(r)
if r['ok']:
_, identity, username = userdata_extract(linked['result']['user'])
body = ('Участник %s%s был удалён' if lang == 'ru' else 'Member %s%s was deleted') % (identity, username)
r = send_message(chat_id, body)
print(r)