welcomecenterbot/tgbot/handlers/handle_members_change.py

52 lines
1.7 KiB
Python
Raw Normal View History

2023-04-23 16:54:58 +00:00
from tgbot.handlers.send_button import show_request_msg
from tgbot.api import unmute_member, mute_member, delete_message
2023-04-24 06:14:35 +00:00
from tgbot.storage import Profile, storage
2023-04-23 16:54:58 +00:00
def handle_join(msg):
chat_id = str(msg['chat']['id'])
from_id = str(msg['from']['id'])
actor = Profile.get(from_id, msg)
newcomer_id = str(msg['new_chat_member']['id'])
if from_id == newcomer_id:
if len(actor['parents']) == 0:
# показываем сообщение с кнопкой "поручиться"
2023-04-28 12:24:14 +00:00
show_request_msg(msg)
2023-04-23 16:54:58 +00:00
# до одобрения - мьют
r = mute_member(chat_id, newcomer_id)
print(r)
else:
# за пользователя поручились ранее
pass
else:
# пользователи приглашены другим участником
print(f'{len(msg["new_chat_members"])} members were invited by {from_id}')
for m in msg['new_chat_members']:
newcomer = Profile.get(m['id'])
newcomer['parents'].append(from_id)
Profile.save(newcomer)
actor['children'].append(m['id'])
r = unmute_member(chat_id, newcomer['id'])
print(r)
# обновляем профиль пригласившего
Profile.save(actor)
def handle_left(msg):
print(f'handling member leaving')
member_id = msg["left_chat_member"]["id"]
chat_id = msg['chat']['id']
# удаление сообщения с кнопкой в этом чате
2023-04-28 12:24:14 +00:00
prev_msg = storage.get(f'btn-{chat_id}-{member_id}')
2023-04-24 06:14:35 +00:00
if prev_msg_id:
2023-04-28 12:24:14 +00:00
r = delete_message(chat_id, prev_msg['id'])
2023-04-23 16:54:58 +00:00
print(r)
2023-04-24 06:14:35 +00:00
storage.remove(f'btn-{chat_id}-{member_id}')
2023-04-23 16:54:58 +00:00