Задать вопрос
@easycode
не боюсь задавать глупые вопросы ))

Как отловить callback_data от настраиваемой клавиатуры Телеграм-бота?

Как отловить callback_data от нажатия кнопки в настраиваемой клавиатуре Телеграма-бота?

Итак, юзаю в Laravel с либой: https://github.com/westacks/telebot
Имеется, такой хэндлер:
class TeleBotHandler extends UpdateHandler
{
    public function trigger(): bool
    {
        return true;
    }

    public function handle()
    {
        $message = '';

        if (isset($this->update->callback_query) && isset($this->update->callback_query->data))
            $message .= ' callback_query->data: ' . $this->update->callback_query->data;
        if (isset($this->update->message) && isset($this->update->message->text))
            $message .= ' message->text: ' . $this->update->message->text;

        return $this->sendMessage([
            'text' =>  $message,
            'chat_id' => $this->update->chat()->id,
            'reply_markup'   =>  [
                'inline_keyboard' => [[
                    ['text' => 'Найти товар', 'callback_data' => '/search_product' ],
                    ['text' => 'Отправить тикет', 'callback_data' => '/send_ticket' ],
                ]]
            ],
        ]);


и тут всё прекрасно работает, если жмакать по встроенным в сообщение кнопкам: Найти товар или Отправить тикет получаем callback_data:

63cbb769594e9410448561.png

далее переделываем клавиатуру на специальную:

'reply_markup'   =>  [
                'keyboard' => [[
                    ['text' => 'Найти товар', 'callback_data' => '/search_product' ],
                    ['text' => 'Отправить тикет', 'callback_data' => '/send_ticket' ],
                ]],
                'resize_keyboard' => true,
            ],


и видим, что в callback_data пусто - а нажатие по кнопкам настраиваемой клавиатуры принимается как просто отправка сообщений с текстом нажатой кнопки:

63cbb7ff0e5cb040744232.png

Кто-нибудь знает, как отловить callback_data от настраиваемой клавиатуры?
  • Вопрос задан
  • 287 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Так и должно быть: не-inline клавиатура - это просто помощник по отправке текстовых сообщений с текстом, написанным на кнопке. У них нет и никогда не было никаких callback_data.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы