Use this file to discover all available pages before exploring further.
CactusLib предоставляет элегантный способ создания инлайн-клавиатур и обработки нажатий на кнопки. Вся необходимая логика находится в пространстве имен CactusUtils.Inline.
Вы можете использовать иконки и Premium-эмодзи в тексте кнопки.
Синтаксис: <emoji id=5427317234403930129/> и <icon id=msg_search/>. Например:
Пример кнопки с premium-эмодзи
button = CactusUtils.Inline.Button( # ID премиум эмодзи text="<emoji id=5427317234403930129/> Нажми меня", query="привет exteraGram", # Это будет выставлено в поле сообщения)
Пример кнопки с Drawable-иконкой
button = CactusUtils.Inline.Button( # ID Drawable иконки text="<icon id=msg_search/> Нажми меня", query="привет AyuGram", # Это будет выставлено в поле сообщения)
Все Drawable иконки (R.Drawable.name) можно найти в плагине DevSettingsIcons
# Создаем экземпляр разметкиmarkup = CactusUtils.Inline.Markup()# Добавляем ряд с одной или несколькими кнопкамиmarkup.add_row(button1, button2)# Добавляем следующий рядmarkup.add_row(button3)# или# Создаем экземпляр разметкиmarkup = CactusUtils.Inline.Markup().add_row(button1, button2).add_row(button3)
@CactusUtils.Inline.on_click(method): Декорирует функцию, которая будет вызвана, когда пользователь нажмет на кнопку с callback_data, где method совпадает с method в CallbackData.
Отправка сообщения с клавиатурой в чат с метаданными внутри
Чтобы отправить сообщение с клавиатурой в чат с метаданными, нужно передать is_global=True в конструктор CactusUtils.Inline.Markup.
clickme.plugin
class MyPlugin(CactusUtils.Plugin): @command(doc="Показывает интерактивное меню всем пользователям") def items(self, cmd: CactusUtils.Command): # Создаем клавиатуру с 1 рядом в 1 кнопку markup = CactusUtils.Inline.Markup(is_global=True).add_row( CactusUtils.Inline.Button( "Нажми меня!", url="https://t.me/CactusPlugins" ) ) cmd.answer(f"Сообщение с Inline-кнопками для всех", markup=markup) return HookResult(strategy=HookStrategy.CANCEL) @command(doc="Показывает интерактивное меню всем пользователям альтернативным методом") def items2(self, cmd: CactusUtils.Command): # Создаем клавиатуру с 1 рядом в 1 кнопку markup = CactusUtils.Inline.Markup(is_global=True).add_row( CactusUtils.Inline.Button( "Нажми меня!", url="https://t.me/CactusPlugins" ) ) # Ставим ссылку с метаданными в пробел, чтобы не было заметно cmd.answer(f"Сообщение с<a href='{markup.to_url_with_data()}'> </a>Inline-кнопками для всех") return HookResult(strategy=HookStrategy.CANCEL)