Использую библиотеку 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;
}
Кто сталкивался с подобным, как решили?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Мне необходимо в своем php скрипте в цикле выполнять windows cmd команду icacls
Всем приветЕсть такая задача : В Входном файле дается никнейм, нам надо, чтобы в таблице сортировки по имени этот ник стоял как можно ниже,...
Нужно сделать простейший калькулятор чтобы он работал с числовыми и строковыми значениямиОперации + - * /