A powerful and flexible pagination library for Pyrogram bots that automatically handles help commands and module organization.
- π Automatic module discovery and help text organization
- π± Beautiful paginated help menus with inline buttons
- π― Support for both command-based and button-based help
- π¨ Customizable button layouts and texts
- π Easy integration with existing Pyrogram bots
- π Support for rich media in help messages (photos, videos)
- π Deep linking support for direct access to help menus
- π Group chat support with private message options
- π Flexible parse mode selection
- πΌοΈ Media support with photo and video options
pip install pyrohelpo
from pyrogram import Client
from Helpo import Helpo
from pyrogram.enums import ParseMode
# Initialize your Pyrogram client
app = Client("my_bot")
# Initialize Helpo
helpo = Helpo(
client=app,
modules_path="plugins",
buttons_per_page=6
)
json
custom_texts = {
"help_menu_title": "**π Custom Help Menu**",
"help_menu_intro": "Available modules ({count}):\n{modules}\n\nTap on a module to explore.",
"module_help_title": "**π Details for {module_name} Module**",
"module_help_intro": "Description:\n{help_text}",
"no_modules_loaded": "β οΈ No modules available at the moment.",
"back_button": "βοΈ Go Back",
"prev_button": "β¬
οΈ Previous Page",
"next_button": "β‘οΈ Next Page",
"support_button": "π¬ Contact Support",
"support_url": "https://t.me/YourSupportBot",
"short_help": True,
"support_as_callback": True,
"support_c_back_name": "say_hi"
}
helpo = Helpo(
client=app,
modules_path="plugins",
buttons_per_page=6,
texts=custom_texts,
help_var="HELP",
module_var="MODULE",
photo="path/to/photo.jpg", # Optional: Add photo to help messages
video="path/to/video.mp4", # Optional: Add video to help messages
parse_mode=ParseMode.HTML, # Optional: Change parse mode (default: MARKDOWN)
disable_web_page_preview=False, # Optional: Enable web preview (default: True)
short_help=True # Optional: Enable short help mode
)
Create Python files in your modules directory with the following structure:
MODULE = "Admin" # Module name displayed in help menu
HELP = """
**Admin Commands**
/ban - Ban a user
/unban - Unban a user
/mute - Mute a user
/unmute - Unmute a user
"""
from pyrogram import Client
from Helpo import Helpo
class Bot(Client):
def __init__(self):
super().__init__(
"my_bot",
api_id=API_ID,
api_hash=API_HASH,
bot_token=BOT_TOKEN
)
self.helpo = Helpo(
client=self,
modules_path="plugins",
buttons_per_page=6,
texts=custom_texts
)
async def start(self):
await super().start()
print("Bot Started")
print(f"Loaded Modules: {', '.join(self.helpo.modules.keys())}")
async def stop(self):
await super().stop()
print("Bot Stopped")
Helpo automatically handles group chats by providing options to:
- View help menu in private chat
- View help menu directly in the group
- Customize group chat behavior through the texts dictionary
@app.on_message(filters.command("start"))
async def start_command(client, message):
if len(message.text.split()) > 1:
param = message.text.split(None, 1)[1]
if param == "help":
await client.show_help_menu(message.chat.id)
else:
await message.reply("Welcome! Use /help to see available commands.")
To automatically handle the /help
command in your bot, you can use the monkeypatch_client
method:
from pyrogram import Client
from Helpo import Helpo
app = Client("my_bot")
helpo = Helpo(
client=app,
modules_path="plugins",
buttons_per_page=6,
texts=custom_texts
)
helpo.monkeypatch_client()
app.run()
client
: Pyrogram Client instancemodules_path
: Path to modules directorybuttons_per_page
: Number of buttons per pagehelp_var
: Variable name for help text (default: "HELP")module_var
: Variable name for module name (default: "MODULE")photo
: Optional photo URL/pathvideo
: Optional video URL/pathparse_mode
: Message parse modedisable_web_page_preview
: Web preview settingtexts
: Customizable text dictionaryshort_help
: Boolean to enable short help mode
load_modules()
: Loads all modules from the specified pathshow_help_menu(chat_id: int, page: int = 1, message_id: int = None)
: Displays the main help menushow_module_help(query_or_message, module_name: str)
: Shows help for a specific modulesend_message(chat_id: int, text: str, reply_markup: InlineKeyboardMarkup = None, message_id: int = None)
: Sends a message with optional media and keyboardmonkeypatch_client()
: Patches the Pyrogram client to handle the/help
command
Helpo includes comprehensive error handling for:
- Invalid module files
- Missing required attributes
- Media loading failures
- Message sending errors
- Callback query processing
This project is licensed under the MIT License - see the LICENSE file for details.
Need help? Join our support chat or create an issue on our GitHub repository.
Made with β€οΈ by the Helpo team