onCallback
Метод onCallback
создает маршрут для обработки callback_query
(нажатий на inline-кнопки).
Этот метод полезен, когда вы создаете клавиатуру вручную или получаете колбэки от внешних систем, и callback_data
не соответствует ID кнопки, определенной через btn()
. В большинстве случаев для создания меню рекомендуется использовать связку btn()
и inlineKbd()
, так как это упрощает код.
Параметры
# | Название | Тип | Описание |
---|---|---|---|
1 | id | string | Уникальный идентификатор для этого маршрута. |
2 | data | string | Значение callback_data , на которое должен среагировать этот маршрут. Если не указано, используется id . |
Возвращает
Action
— экземпляр класса Action
(Вспомогательный класс), на который можно навешивать дальнейшие действия (text
, func
и т.д.).
Пример использования
В этом примере мы создаем inline-кнопку "на лету", не используя btn()
, и затем ловим ее нажатие через onCallback()
.
php
<?php
require_once __DIR__ . 'vendor/autoload.php';
use ZhenyaGR\TGZ\TGZ;
use ZhenyaGR\TGZ\Bot;
$tg = TGZ::create('ТОКЕН');
$bot = new Bot($tg);
// По команде /vote отправляем сообщение с кнопками, созданными вручную
$bot->onBotCommand('vote', '/vote')
->text('Вам нравится эта библиотека?')
->inlineKbd([
[
// Кнопка, созданная "на лету"
$tg->buttonCallback('Да 👍', 'vote_yes'),
$tg->buttonCallback('Нет 👎', 'vote_no')
]
]);
// Обработчик для callback_data 'vote_yes'
$bot->onCallback('handle_vote_yes', 'vote_yes')
->query('Спасибо за ваш голос!') // Всплывающее уведомление
->edit('Вы проголосовали "Да". Отлично!'); // Редактируем исходное сообщение
// Обработчик для callback_data 'vote_no'
$bot->onCallback('handle_vote_no', 'vote_no')
->query('Спасибо за ваш голос!')
->edit('Вы проголосовали "Нет". Жаль!');
$bot->run();