2023-09-11 20:21:55 +00:00
|
|
|
|
from handlers.send_button import show_request_msg
|
|
|
|
|
from api import delete_message
|
|
|
|
|
from storage import Profile, storage
|
|
|
|
|
from config import FEEDBACK_CHAT_ID
|
2023-04-23 16:54:58 +00:00
|
|
|
|
|
2023-09-11 20:04:53 +00:00
|
|
|
|
|
|
|
|
|
async def handle_join(msg):
|
|
|
|
|
chat_id = str(msg["chat"]["id"])
|
|
|
|
|
from_id = str(msg["from"]["id"])
|
2023-04-23 16:54:58 +00:00
|
|
|
|
|
|
|
|
|
actor = Profile.get(from_id, msg)
|
|
|
|
|
|
2023-09-11 20:04:53 +00:00
|
|
|
|
newcomer_id = str(msg["new_chat_member"]["id"])
|
2023-04-23 16:54:58 +00:00
|
|
|
|
if from_id == newcomer_id:
|
2023-09-11 20:04:53 +00:00
|
|
|
|
if len(actor["parents"]) == 0 and str(chat_id) != FEEDBACK_CHAT_ID:
|
2023-04-23 16:54:58 +00:00
|
|
|
|
# показываем сообщение с кнопкой "поручиться"
|
2023-09-11 20:04:53 +00:00
|
|
|
|
r = await show_request_msg(msg)
|
|
|
|
|
print(r)
|
2023-04-23 16:54:58 +00:00
|
|
|
|
else:
|
|
|
|
|
# за пользователя поручились ранее
|
|
|
|
|
pass
|
|
|
|
|
else:
|
|
|
|
|
# пользователи приглашены другим участником
|
2023-09-11 20:04:53 +00:00
|
|
|
|
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(str(from_id))
|
2023-04-23 16:54:58 +00:00
|
|
|
|
Profile.save(newcomer)
|
2023-09-11 20:04:53 +00:00
|
|
|
|
actor["children"].append(str(m["id"]))
|
2023-04-23 16:54:58 +00:00
|
|
|
|
# обновляем профиль пригласившего
|
|
|
|
|
Profile.save(actor)
|
|
|
|
|
|
|
|
|
|
|
2023-09-11 20:04:53 +00:00
|
|
|
|
async def handle_left(msg):
|
|
|
|
|
print("handling member leaving")
|
2023-04-23 16:54:58 +00:00
|
|
|
|
member_id = msg["left_chat_member"]["id"]
|
2023-09-11 20:04:53 +00:00
|
|
|
|
chat_id = msg["chat"]["id"]
|
2023-04-23 16:54:58 +00:00
|
|
|
|
|
|
|
|
|
# удаление сообщения с кнопкой в этом чате
|
2023-09-11 20:04:53 +00:00
|
|
|
|
prev_msg = storage.get(f"btn-{chat_id}-{member_id}")
|
2023-04-29 20:37:28 +00:00
|
|
|
|
if prev_msg:
|
2023-09-11 20:04:53 +00:00
|
|
|
|
r = await delete_message(chat_id, prev_msg["id"])
|
2023-04-23 16:54:58 +00:00
|
|
|
|
print(r)
|
2023-09-11 20:04:53 +00:00
|
|
|
|
storage.remove(f"btn-{chat_id}-{member_id}")
|