Переделана обработка миграции чата 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
|
return
|
||||||
|
|
||||||
database.DB.delete_user(chat_id, member.id)
|
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):
|
async def cleanup_chats(bot: Bot):
|
||||||
me = await bot.get_me()
|
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():
|
for chat in database.DB.get_chats():
|
||||||
chat_id = chat['id']
|
chat_id = chat['id']
|
||||||
if chat_id > 0:
|
if chat_id > 0:
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ class TgDatabase(database.BasicDatabase):
|
||||||
warnings TINYINT NOT NULL DEFAULT 0,
|
warnings TINYINT NOT NULL DEFAULT 0,
|
||||||
about VARCHAR(1000),
|
about VARCHAR(1000),
|
||||||
PRIMARY KEY (chat_id, user_id),
|
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()
|
self.conn.commit()
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ class VkDatabase(database.BasicDatabase):
|
||||||
happy_birthday TINYINT NOT NULL DEFAULT 1,
|
happy_birthday TINYINT NOT NULL DEFAULT 1,
|
||||||
about VARCHAR(1000),
|
about VARCHAR(1000),
|
||||||
PRIMARY KEY (chat_id, user_id),
|
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()
|
self.conn.commit()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue