from pyrogram import filters from pyrogram.errors import RPCError from pyrogram.types import Message from Powers import LOGGER from Powers.bot_class import Gojo from Powers.database.approve_db import Approve from Powers.database.blacklist_db import Blacklist from Powers.database.chats_db import Chats from Powers.database.disable_db import Disabling from Powers.database.filters_db import Filters from Powers.database.greetings_db import Greetings from Powers.database.notes_db import Notes, NotesSettings from Powers.database.pins_db import Pins from Powers.database.reporting_db import Reporting from Powers.database.rules_db import Rules from Powers.database.users_db import Users @Gojo.on_message(filters.group, group=4) async def initial_works(_, m: Message): chatdb = Chats(m.chat.id) try: if m.migrate_to_chat_id or m.migrate_from_chat_id: new_chat = m.migrate_to_chat_id or m.chat.id try: await migrate_chat(m, new_chat) except RPCError as ef: LOGGER.error(ef) return elif m.reply_to_message and not m.forward_from: chatdb.update_chat( m.chat.title, m.reply_to_message.from_user.id, ) Users(m.reply_to_message.from_user.id).update_user( ( f"{m.reply_to_message.from_user.first_name} {m.reply_to_message.from_user.last_name}" if m.reply_to_message.from_user.last_name else m.reply_to_message.from_user.first_name ), m.reply_to_message.from_user.username, ) elif m.forward_from and not m.reply_to_message: chatdb.update_chat( m.chat.title, m.forward_from.id, ) Users(m.forward_from.id).update_user( ( f"{m.forward_from.first_name} {m.forward_from.last_name}" if m.forward_from.last_name else m.forward_from.first_name ), m.forward_from.username, ) elif m.reply_to_message: chatdb.update_chat( m.chat.title, m.reply_to_message.forward_from.id, ) Users(m.forward_from.id).update_user( ( f"{m.reply_to_message.forward_from.first_name} {m.reply_to_message.forward_from.last_name}" if m.reply_to_message.forward_from.last_name else m.reply_to_message.forward_from.first_name ), m.forward_from.username, ) else: chatdb.update_chat(m.chat.title, m.from_user.id) Users(m.from_user.id).update_user( ( f"{m.from_user.first_name} {m.from_user.last_name}" if m.from_user.last_name else m.from_user.first_name ), m.from_user.username, ) except AttributeError: pass # Skip attribute errors! return async def migrate_chat(m: Message, new_chat: int) -> None: LOGGER.info(f"Migrating from {m.chat.id} to {new_chat}...") notedb = Notes() gdb = Greetings(m.chat.id) ruledb = Rules(m.chat.id) userdb = Users(m.chat.id) chatdb = Chats(m.chat.id) bldb = Blacklist(m.chat.id) approvedb = Approve(m.chat.id) reportdb = Reporting(m.chat.id) notes_settings = NotesSettings() pins_db = Pins(m.chat.id) fldb = Filters() disabl = Disabling(m.chat.id) disabl.migrate_chat(new_chat) gdb.migrate_chat(new_chat) chatdb.migrate_chat(new_chat) userdb.migrate_chat(new_chat) ruledb.migrate_chat(new_chat) bldb.migrate_chat(new_chat) notedb.migrate_chat(m.chat.id, new_chat) approvedb.migrate_chat(new_chat) reportdb.migrate_chat(new_chat) notes_settings.migrate_chat(m.chat.id, new_chat) pins_db.migrate_chat(new_chat) fldb.migrate_chat(m.chat.id, new_chat) LOGGER.info(f"Successfully migrated from {m.chat.id} to {new_chat}!")