Не могу обработать ответ от inline кнопок telegram bot php sdk

178
30 марта 2019, 03:50

Уже довольно долго мучаюсь, решил зарегистрироваться уже тут. К сути. Использую библиотеку Telegram Bot PHP SDK. Вот куски кода.

<?php
include('vendor/autoload.php'); //Подключаем библиотеку
use Telegram\Bot\Api; 
$telegram = new Api('ххх'); //Устанавливаем токен, полученный у BotFather
$updates = $telegram->getWebhookUpdates(); //Передаем в переменную $updates полную информацию о сообщении пользователя
$text = $updates["message"]["text"]; //Текст сообщения
$chat_id = $updates["message"]["chat"]["id"]; //Уникальный идентификатор пользователя
$name = $updates["message"]["from"]["username"]; //Юзернейм пользователя
$callback_query = $updates['callback_query'];
$data = $callback_query['data'];
...
}elseif ($text == "Work plz") {
        require('keyboard.php');
        $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Test", 'reply_markup' => $replyMarkup1 ]);
        if ($data == "1") {
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "1" ]);
        } else {
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "2" ]);}

keyboard.php

<?php
// Inline keyboard #1
$inline_button0 = array("text"=>"0","callback_data"=>"1");
$inline_button1 = array("text"=>"1","callback_data"=>'/2');
$inline_button1 = array("text"=>"2","callback_data"=>'/3');
$inline_keyboard = [[ $inline_button0,$inline_button1,$inline_button2],
];
$keyboard1=array("inline_keyboard"=>$inline_keyboard);
$replyMarkup1 = json_encode($keyboard1); 
?>

Она впринципе (как и всё остальное) работает исправно. Могу ответственно сказать что я пересмотрел все темы тут, и заходил ДАЖЕ на вторую страницу гугла. Что тут может быть не так, хз. Версия не dev, пробовал ставить её, так код переставал работать вообще, делал как тут -> Как обработать нажатие на кнопку клавиатуры бота, созданном на Telegram Bot API — PHP SDK? толку - 0.

Answer 1

Если кому понадобится, то вот как я это решил. (я всё таки обновился до dev версии, также у @botfather включил inline mode) Kod :

$inline_id = $updates["callback_query"]["message"]["chat"]["id"];
$data = $updates["callback_query"]["data"];
if (isset($data)) {
    $telegram->sendMessage([ 'chat_id' => $inline_id, 'text' => "Test" ]);
}
READ ALSO
Алгоритм для онлайн-записи

Алгоритм для онлайн-записи

Заказчик поставил цель: создать для салона красоты онлайн запись на какую то услугуТ

176
Прибавка к date и time

Прибавка к date и time

Всем привет, прощу помощи

176
Перебор многомерного массива в PHP

Перебор многомерного массива в PHP

Как в PHP перебрать массив, который содержит как простые элементы, так и элементы, которые тоже являются массивами? То есть мне нужно получить...

144
Входит число в интервал или нет PHP

Входит число в интервал или нет PHP

Предположим что у нас есть числа:

145