Перейти к содержимому

onCallback

Метод onCallback создает маршрут для обработки callback_query (нажатий на inline-кнопки).

Этот метод полезен, когда вы создаете клавиатуру вручную или получаете колбэки от внешних систем, и callback_data не соответствует ID кнопки, определенной через btn(). В большинстве случаев для создания меню рекомендуется использовать связку btn() и inlineKbd(), так как это упрощает код.

Параметры

#НазваниеТипОписание
1idstringУникальный идентификатор для этого маршрута.
2datastringЗначение 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();

Опубликовано под лицензией MIT.