Переделана обработка миграции чата Telegram.

This commit is contained in:
Kirill Kirilenko 2026-01-21 18:09:42 +03:00
parent abd54d50a4
commit f89b8e8446
4 changed files with 9 additions and 23 deletions

View file

@ -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)

View file

@ -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:

View file

@ -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()

View file

@ -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()