from os import listdir from modules.logging import logWrite from modules.utils import configGet, locale from pyrogram.types import BotCommand, BotCommandScopeChat from pyrogram.errors import bad_request_400 def commands_register(app): valid_locales = [] files_locales = listdir(f'{configGet("locale", "locations")}') for entry in files_locales: valid_locales.append(".".join(entry.split(".")[:-1])) # Registering user commands commands_list = [] for command in locale("commands"): commands_list.append(BotCommand(command, locale("commands")[command])) app.set_bot_commands(commands_list) # Registering user commands for each locale for lc in valid_locales: commands_list = [] for command in locale("commands", locale=lc): commands_list.append(BotCommand(command, locale("commands",locale=lc)[command])) app.set_bot_commands(commands_list, language_code=lc) # Registering admin commands commands_admin_list = [] for command in locale("commands"): commands_admin_list.append(BotCommand(command, locale("commands")[command])) for command in locale("commands_admin"): commands_admin_list.append(BotCommand(command, locale("commands_admin")[command])) for admin in configGet("admins"): try: app.set_bot_commands(commands_admin_list, scope=BotCommandScopeChat(chat_id=admin)) except bad_request_400.PeerIdInvalid: pass try: app.set_bot_commands(commands_admin_list, scope=BotCommandScopeChat(chat_id=configGet("owner"))) except bad_request_400.PeerIdInvalid: logWrite(f"Could not register commands for bot owner. Perhaps user has not started the bot yet.") # Registering admin group commands commands_group_admin_list = [] for command in locale("commands_group_admin"): commands_group_admin_list.append(BotCommand(command, locale("commands_group_admin")[command])) try: app.set_bot_commands(commands_group_admin_list, scope=BotCommandScopeChat(chat_id=configGet("admin_group"))) except bad_request_400.ChannelInvalid: logWrite(f"Could not register commands for admin group. Bot is likely not in the group.") # Registering destination group commands commands_group_destination_list = [] for command in locale("commands_group_destination"): commands_group_destination_list.append(BotCommand(command, locale("commands_group_destination")[command])) try: app.set_bot_commands(commands_group_destination_list, scope=BotCommandScopeChat(chat_id=configGet("destination_group"))) except bad_request_400.ChannelInvalid: logWrite(f"Could not register commands for destination group. Bot is likely not in the group.")