From bf31e8aa51552daa3f1001325ea140d94273ae65 Mon Sep 17 00:00:00 2001 From: Untone Date: Mon, 18 Sep 2023 14:45:08 +0300 Subject: [PATCH] fix-graph3 --- bot/main.py | 12 +++++++++--- bot/storage/profile.py | 11 +++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/bot/main.py b/bot/main.py index 671e357..6a3df07 100644 --- a/bot/main.py +++ b/bot/main.py @@ -15,6 +15,7 @@ from handlers.handle_join_request import handle_join_request from handlers.handle_startup import handle_startup from handlers.handle_members_change import handle_join, handle_left from state import State +from storage import Profile logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) @@ -66,11 +67,16 @@ async def chat_members_change(update: ChatMemberUpdated): msg["chat"] = vars(update.chat) msg["from"] = vars(update.from_user) logger.debug(msg) - if update.old_chat_member.status == ChatMemberStatus.KICKED: - # был забанен, удаляем все поручения + old_member = update.old_chat_member + new_member = update.new_chat_member + if old_member: + if old_member.status == ChatMemberStatus.KICKED: + Profile.erase(update.from_user.id) await handle_left(msg) - else: + elif new_member: await handle_join(msg) + else: + logger.info("unhandled members update") async def main() -> None: diff --git a/bot/storage/profile.py b/bot/storage/profile.py index b1e8a3a..2664ac9 100644 --- a/bot/storage/profile.py +++ b/bot/storage/profile.py @@ -34,3 +34,14 @@ class Profile: else: r = json.loads(data) return r + + def erase(self, member_id): + data = self.storage.get(f"usr-{member_id}") + if data: + member = json.loads(data) + for child in member["children"]: + child_member = self.storage.get(f"usr-{child}") + if child_member: + child_member = json.loads(child_member) + child_member["parents"].remove(member_id) + self.storage.set(f"usr-{child_member['id']}", json.dumps(child_member))