📃 Help Страница
Предоставление понятной справочной информации очень важно для пользователей. PBModular предлагает два способа определения содержания помощи для модулей, которая обычно отображается командой ядра, например /mhelp YourModuleName
.
1. Автоматическая генерация (по умолчанию)
Если вы явно не определили страницу помощи, фреймворк попытается сгенерировать ее автоматически при вызове /help YourModuleName
.
- Она перечисляет все команды, зарегистрированные модулем, используя декоратор
@command
. - Для каждой команды используется docstring.
- Формат вывода обычно следующий:
/имя_команды
- описание из docstring.
Чтобы эффективно использовать автоматическую страницу помощи:.
- Убедитесь, что все ваши методы, декорированные
@command
, имеют четкие и краткие документальные описания, объясняющие их назначение и использование.
2. Пользовательская страница помощи (свойство help_page)
Для большего контроля над содержимым помощи, включая пользовательское форматирование, пояснения к спискам команд или добавление встроенных кнопок, вы можете переопределить свойство help_page
в вашем основном классе BaseModule
.
Это свойство должно возвращать либо:
- Объект
base.module.HelpPage
: Этот класс данных позволяет указывать как текст, так и дополнительные кнопки встроенной клавиатуры. - Простой
str
: Для обратной совместимости вы можете вернуть просто строку, которая будет использоваться в качестве текста сообщения. ИспользованиеHelpPage
предпочтительно для новых разработок.
Использование класса данных HelpPage
:.
python
# main.py (внутри вашего класса BaseModule)
from base.module import HelpPage # Импорт класса данных
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
# ... прочий импорт ...
@property
def help_page(self) -> HelpPage:
"""Предоставляет пользовательскую страницу помощи для этого модуля."""
text = (
f"**{self.module_info.name} v{self.module_info.version} Help**\n\n"
f"{self.module_info.description}\n\n"
"**Доступные команды:**\n"
f"`/command1` - {self.S['help']['command1_desc']}\n" # Используйте переводы!
f"`/command2 [option]` - {self.S['help']['command2_desc']}\n\n"
"Используйте кнопки ниже для получения дополнительных опций."
)
buttons = [
[ # Ряд 1
InlineKeyboardButton("Подробный Гайд", url=self.module_info.src_url or "https://example.com/docs"),
InlineKeyboardButton("Обратный вызов настроек", callback_data=f"{self.module_info.name}:settings")
],
[ # Ряд 2
InlineKeyboardButton("Закрыть Помощь", callback_data="close_help")
]
]
return HelpPage(text=text, buttons=buttons)