Переделана обработка миграции чата Telegram.
This commit is contained in:
parent
abd54d50a4
commit
f89b8e8446
4 changed files with 9 additions and 23 deletions
|
|
@ -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)
|
||||
|
|
|
|||
21
tg/tasks.py
21
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:
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue