Как получить данные с callback_data в telegram bot sdk?

259
09 января 2019, 21:20

Использую библиотеку telegram bot sdk, дошёл до момента, когда нужно сделать inline кнопки. При нажатии на них должно отдаваться содержимое параметра callback_data, которое позже мы обрабатываем и выводим, к примеру, другую клавиатуру. В issue к репозиторию на гитхабе я видел, как, обновившись до 3 dev master, data можно получить примерно так:

$this->bot->getWebhookUpdate()->getCallbackQuery()->getData();

Однако у меня данные не приходят. Делал таким способом:

$this->bot->getWebhookUpdate()["callback_query"]["data"]

Тоже ничего.

Вот так выглядит файл обработчик бота:

<?php
require 'vendor/autoload.php';
use Kafkiansky\Engine\Progbot\Helper;
use Kafkiansky\Engine\Database\EasyOrm;
use Telegram\Bot\Keyboard\Keyboard;

$settings = require 'settings.php';
$token = require 'token.php';
$bot = new Helper($token["token"]);
$db = new EasyOrm($settings);
$message = $db->findOneEntity()->content;
$keyboard_default = Keyboard::make()
    ->inline()
    ->row(
        Keyboard::inlineButton(['text' => 'Создать пост', 'callback_data' => '/get'])
    )
    ->row(
        Keyboard::inlineButton(['text' => 'Отложенные', 'callback_data' => 'Данные сохранены']),
        Keyboard::inlineButton(['text' => 'Редактировать', 'callback_data' => 'Данные не сохранены'])
    )
    ->row(
        Keyboard::inlineButton(['text' => 'Опубликовать', 'callback_data' => 'Данные сохранены']),
        Keyboard::inlineButton(['text' => 'Назад', 'callback_data' => 'Данные не сохранены'])
    );
$keyboard_get_new = Keyboard::make()
    ->inline()
    ->row(
        Keyboard::inlineButton(['text' => 'Библиотеку программиста', 'callback_data' => ''])
    )
    ->row(
        Keyboard::inlineButton(['text' => 'Назад', 'callback_data' => ''])
    );

switch ($bot->getText()) {
    case "/start":
        $bot->sendMessage([
            'chat_id' => $bot->getChatId(),
            'text' => $bot->getUsername()
        ]);
        $db->store($bot->getFirstName(), $bot->getUsername(), $bot->getChatId());
        break;
    case "/help":
        $bot->sendMessage([
            'chat_id' => $bot->getChatId(),
            'text' => $message,
            'reply_markup' => $keyboard_default,
            'one_time_keyboard' => true
        ]);
        break;
    default:
        $bot->sendMessage([
            'chat_id' => $bot->getChatId(),
            'text' => 'Я не понимаю, о чём вы'
        ]);
        break;
}
switch ($bot->getCallbackData()) {
    case "/get":
        $bot->sendMessage([
            'chat_id' => $bot->getChatId(),
            'text' => 'Текст',
            'reply_markup' => $keyboard_get_new,
            'one_time_keyboard' => true
        ]);
        break;
}

Кто сталкивался с подобным, как решили?

READ ALSO
cmd команда в php

cmd команда в php

Мне необходимо в своем php скрипте в цикле выполнять windows cmd команду icacls

153
Как удалить символ char из его же массива

Как удалить символ char из его же массива

Всем приветЕсть такая задача : В Входном файле дается никнейм, нам надо, чтобы в таблице сортировки по имени этот ник стоял как можно ниже,...

196
Как сделать переменную в if, глобальной

Как сделать переменную в if, глобальной

Нужно сделать простейший калькулятор чтобы он работал с числовыми и строковыми значениямиОперации + - * /

159