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"}