welcomecenterbot/handlers/handle_members_change.py
2024-01-06 14:25:35 +03:00

48 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from handlers.send_button import show_request_msg
from bot.api import delete_message
from storage import Profile, storage
from bot.config import FEEDBACK_CHAT_ID
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
async 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 and str(chat_id) != FEEDBACK_CHAT_ID:
# показываем сообщение с кнопкой "поручиться"
r = await show_request_msg(msg)
logger.debug(r)
else:
# за пользователя поручились ранее
pass
else:
# пользователи приглашены другим участником
logger.info(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(str(from_id))
Profile.save(newcomer)
actor["children"].append(str(m["id"]))
# обновляем профиль пригласившего
Profile.save(actor)
async def handle_left(msg):
logger.info("handling member leaving")
member_id = msg["left_chat_member"]["id"]
chat_id = msg["chat"]["id"]
# удаление сообщения с кнопкой в этом чате
prev_msg = storage.get(f"btn-{chat_id}-{member_id}")
if prev_msg:
r = await delete_message(chat_id, prev_msg["message_id"])
logger.debug(r)
storage.remove(f"btn-{chat_id}-{member_id}")