Задать вопрос
doniyorbekm
@doniyorbekm
Yii-шник

Inline кнопки в Telegram — Callback?

Всем привет!

Нужно оформить обработчик нажатия на inline кнопки в Telegram, что не совсем получается...

Сценарий такой: юзер кликает на предопределённую команду "/stop", а бот отвечает вопросом "Вы уверены?" и отображает два варианта: "Да" и "Нет". Если кликнуть на "Да" - то нужно перехватить эту команду и выполнить определённое действие на сервере.

Мой код:
require_once('TelegramUserBot.php');
        
        $api = new TelegramUserBot();
        $api->token = '433336723:AAF*******************';
        $updates = json_decode(file_get_contents('php://input') ,true);

        $chat_id =   $updates['message']['chat']['id'];
		
		$callback_query = $updates['callback_query'];
		$data = $callback_query['data'];

        if($updates['update_id']) {
            switch($updates['message']['text']) {		
				case '/stop':
					//disable notifications for this user
					$inline_button1 = array("text"=>"Да","callback_data"=>'/stop-confirm');
					$inline_button2 = array("text"=>"Нет","callback_data"=>'/stop-continue');
					$inline_keyboard = [[$inline_button1,$inline_button2]];
					$keyboard=array("inline_keyboard"=>$inline_keyboard);
					$api->sendMessage($chat_id, "Вы уверены?", json_encode($keyboard));
					break;
                    
                default:
                    $api->sendMessage($chat_id, "Команда \"".$updates['message']['text']."\" не найдена");
                    break;
					
				if($updates['message']['text'] == '/stop-confirm') {
					$api->sendMessage($chat_id, "Вы ответили подтверждением");
                                        //TODO - disable notifications
				}
            }
        }

Всё кроме проверки callback данных работает. Не могу перехватить нажатие на inline кнопку(((
  • Вопрос задан
  • 4178 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
glebovgin
@glebovgin
Full Stack Web Developer
День добрый.

Callback-запросы иначе обрабатываются.
Получаете $callback_query = $updates['callback_query'];
Потом
$cq_command = mb_strtolower($callback_query['data']);

Chat id будет тут $callback_query['message']['chat']['id'];

Так что смотрите в сторону $cq_command
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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