diff --git a/modules/help.py b/modules/help.py index e562b01..e6bf2f7 100644 --- a/modules/help.py +++ b/modules/help.py @@ -11,79 +11,76 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -from pyrogram import Client -from pyrogram import filters +from pyrogram import Client, filters from pyrogram.types import Message from utils.misc import modules_help, prefix from utils.scripts import format_module_help +current_page = 0 +total_pages = 0 + +async def send_page(message, module_list, page, total_pages): + start_index = (page - 1) * 10 + end_index = start_index + 10 + page_modules = module_list[start_index:end_index] + text = f"Help for Moon-Userbot\n" + text += f"For more help on how to use a command, type {prefix}help [module]\n\n" + text += f"Page {page}/{total_pages}\n\n" + for module_name in page_modules: + commands = modules_help[module_name] + text += f"• {module_name.title()}: {', '.join([f'{prefix + cmd_name.split()[0]}' for cmd_name in commands.keys()])}\n" + text += f"\nThe number of modules in the userbot: {len(modules_help)}" + await message.edit(text, disable_web_page_preview=True) + @Client.on_message(filters.command(["help", "h"], prefix) & filters.me) async def help_cmd(_, message: Message): if len(message.command) == 1: - msg_edited = False - text = ( - "Help for Moon-Userbot\n" - f"For more help on how to use a command, type {prefix}help [module]\n\n" - "Available Modules:\n" - ) - - for module_name, module_commands in modules_help.items(): - text += f"• {module_name.title()}: {', '.join([f'{prefix + cmd_name.split()[0]}' for cmd_name in module_commands.keys()])}\n" - if len(text) >= 2048: - text += "" - if msg_edited: - await message.reply( - text, - disable_web_page_preview=True, - ) - else: - await message.edit( - text, - disable_web_page_preview=True, - ) - msg_edited = True - text = "" - - text += f"The number of modules in the userbot: {len(modules_help)}" - - if msg_edited: - await message.reply(text, disable_web_page_preview=True) - else: - await message.edit(text, disable_web_page_preview=True) + global current_page, total_pages + module_list = list(modules_help.keys()) + total_pages = (len(module_list) + 9) // 10 + current_page = 1 + await send_page(message, module_list, current_page, total_pages) elif message.command[1].lower() in modules_help: await message.edit(format_module_help(message.command[1].lower(), prefix)) else: command_name = message.command[1].lower() - for name, commands in modules_help.items(): + module_found = False + for module_name, commands in modules_help.items(): for command in commands.keys(): if command.split()[0] == command_name: cmd = command.split(maxsplit=1) cmd_desc = commands[command] + module_found = True return await message.edit( f"Help for command {prefix}{command_name}\n" - f"Module: {name} ({prefix}help {name})\n\n" + f"Module: {module_name} ({prefix}help {module_name})\n\n" f"{prefix}{cmd[0]}" f"{' ' + cmd[1] + '' if len(cmd) > 1 else ''}" f" — {cmd_desc}", ) - await message.edit(f"Module {command_name} not found") - # TODO: refactor this cringe - command_name = message.command[1].lower() - for name, commands in modules_help.items(): - for command in commands.keys(): - if command.split()[0] == command_name: - cmd = command.split(maxsplit=1) - cmd_desc = commands[command] - return await message.edit( - f"Help for command {prefix}{command_name}\n" - f"Module: {name} ({prefix}help {name})\n\n" - f"{prefix}{cmd[0]}" - f"{' ' + cmd[1] + '' if len(cmd) > 1 else ''}" - f" — {cmd_desc}", - ) - await message.edit(f"Module {command_name} not found") + if not module_found: + await message.edit(f"Module or command {command_name} not found") + +@Client.on_message(filters.reply & filters.text & filters.me) +async def handle_navigation(_, message: Message): + global current_page + if message.reply_to_message: + if message.text.lower() == "n": + if current_page < total_pages: + current_page += 1 + await send_page(message, list(modules_help.keys()), current_page, total_pages) + await message.reply_to_message.delete() + else: + await message.edit("No more pages available.") + elif message.text.lower() == "p": + if current_page > 1: + current_page -= 1 + await send_page(message, list(modules_help.keys()), current_page, total_pages) + await message.reply_to_message.delete() + else: + await message.edit("This is the first page.") modules_help["help"] = {"help [module/command name]": "Get common/module/command help"}