From f89b8e844655961c8b5485d22005a870846b181c Mon Sep 17 00:00:00 2001 From: Kirill Kirilenko Date: Wed, 21 Jan 2026 18:09:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BC=D0=B8=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D0=B8?= =?UTF-8?q?=20=D1=87=D0=B0=D1=82=D0=B0=20Telegram.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tg/handlers/action.py | 7 +++++++ tg/tasks.py | 21 --------------------- tg/tg_database.py | 2 +- vk/vk_database.py | 2 +- 4 files changed, 9 insertions(+), 23 deletions(-) diff --git a/tg/handlers/action.py b/tg/handlers/action.py index 2dddc09..fc1f4a7 100644 --- a/tg/handlers/action.py +++ b/tg/handlers/action.py @@ -36,3 +36,10 @@ async def user_join_handler(message: Message): return database.DB.delete_user(chat_id, member.id) + + +@router.message(F.content_type == ContentType.MIGRATE_TO_CHAT_ID) +async def migration_handler(message: Message): + old_id, new_id = message.chat.id, message.migrate_to_chat_id + database.DB.chat_delete(new_id) + database.DB.chat_update(old_id, id=new_id) diff --git a/tg/tasks.py b/tg/tasks.py index 4e9be66..b891af2 100644 --- a/tg/tasks.py +++ b/tg/tasks.py @@ -27,27 +27,6 @@ async def is_user_in_chat(bot: Bot, chat_id: int, user_id: int) -> bool: async def cleanup_chats(bot: Bot): me = await bot.get_me() - # Обработка миграций чатов - for chat in database.DB.get_chats(): - chat_id = chat['id'] - if chat_id > 0: - continue - - try: - await bot.get_chat(chat_id) - except TelegramMigrateToChat as e: - new_id = e.migrate_to_chat_id - new_chat = database.DB.get_chat(new_id) - - if new_chat is None or new_chat['active'] == 0: - database.DB.chat_delete(new_id) - database.DB.chat_update(chat_id, id=new_id) - else: - database.DB.chat_delete(chat_id) - except Exception: - continue - - # Удаление чатов, в которых больше нет бота for chat in database.DB.get_chats(): chat_id = chat['id'] if chat_id > 0: diff --git a/tg/tg_database.py b/tg/tg_database.py index 313cb41..2f3bc03 100644 --- a/tg/tg_database.py +++ b/tg/tg_database.py @@ -25,7 +25,7 @@ class TgDatabase(database.BasicDatabase): warnings TINYINT NOT NULL DEFAULT 0, about VARCHAR(1000), PRIMARY KEY (chat_id, user_id), - CONSTRAINT fk_users_chats FOREIGN KEY (chat_id) REFERENCES chats (id) ON DELETE CASCADE) + CONSTRAINT fk_users_chats FOREIGN KEY (chat_id) REFERENCES chats (id) ON UPDATE CASCADE ON DELETE CASCADE) """) self.conn.commit() diff --git a/vk/vk_database.py b/vk/vk_database.py index 4ba8b2e..2a41407 100644 --- a/vk/vk_database.py +++ b/vk/vk_database.py @@ -28,7 +28,7 @@ class VkDatabase(database.BasicDatabase): happy_birthday TINYINT NOT NULL DEFAULT 1, about VARCHAR(1000), PRIMARY KEY (chat_id, user_id), - CONSTRAINT fk_users_chats FOREIGN KEY (chat_id) REFERENCES chats (id) ON DELETE CASCADE) + CONSTRAINT fk_users_chats FOREIGN KEY (chat_id) REFERENCES chats (id) ON UPDATE CASCADE ON DELETE CASCADE) """) self.conn.commit()