# Moon-Userbot - telegram userbot # Copyright (C) 2020-present Moon Userbot Organization # # This program is free software: you can redistribute it and/or modify # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . from pyrogram import Client, filters from pyrogram.types import Message from utils.misc import modules_help, prefix from utils.scripts import format_module_help, with_reply 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: 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() 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: {module_name} ({prefix}help {module_name})\n\n" f"{prefix}{cmd[0]}" f"{' ' + cmd[1] + '' if len(cmd) > 1 else ''}" f" — {cmd_desc}", ) if not module_found: await message.edit(f"Module or command {command_name} not found") @Client.on_message(filters.command(["pn", "pp", "pq"], prefix) & filters.me) @with_reply async def handle_navigation(_, message: Message): if message.reply_to_message: global current_page if message.command[0].lower() == "pn": if current_page < total_pages: current_page += 1 await send_page(message, list(modules_help.keys()), current_page, total_pages) return await message.reply_to_message.delete() else: await message.edit("No more pages available.") elif message.command[0].lower() == "pp": if current_page > 1: current_page -= 1 await send_page(message, list(modules_help.keys()), current_page, total_pages) return await message.reply_to_message.delete() else: return await message.edit("This is the first page.") elif message.command[0].lower() == "pq": await message.reply_to_message.delete() return await message.edit("Help closed.") modules_help["help"] = { "help [module/command name]": "Get common/module/command help", "pn/pp/pq": "Navigate through help pages" + " (pn: next page, pp: previous page, pq: quit help)", }