Skip to content

Instantly share code, notes, and snippets.

@alekssamos
Created March 8, 2020 23:37
Show Gist options
  • Select an option

  • Save alekssamos/9501c2779fe7d4ff00a282ab68daead0 to your computer and use it in GitHub Desktop.

Select an option

Save alekssamos/9501c2779fe7d4ff00a282ab68daead0 to your computer and use it in GitHub Desktop.
Telegram inlinekeyboardbutton callback_data query example
/* https://ru.stackoverflow.com/q/557656 */
/* Теперь понятно, как работает callback-data */
<?php
$access_token = 'xxx';
$api = 'https://api.telegram.org/bot' . $access_token;
$output = json_decode(file_get_contents('php://input'), TRUE);
$chat_id = $output['message']['chat']['id'];
$message = $output['message']['text'];
$callback_query = $output['callback_query'];
$data = $callback_query['data'];
$message_id = ['callback_query']['message']['message_id'];
$chat_id_in = $callback_query['message']['chat']['id'];
switch($message) {
case '/test':
$inline_button1 = array("text"=>"Google url","url"=>"http://google.com");
$inline_button2 = array("text"=>"work plz","callback_data"=>'/plz');
$inline_keyboard = [[$inline_button1,$inline_button2]];
$keyboard=array("inline_keyboard"=>$inline_keyboard);
$replyMarkup = json_encode($keyboard);
sendMessage($chat_id, "ok", $replyMarkup);
break;
}
switch($data){
case '/plz':
sendMessage($chat_id_in, "plz");
break;
}
function sendMessage($chat_id, $message, $replyMarkup) {
file_get_contents($GLOBALS['api'] . '/sendMessage?chat_id=' . $chat_id . '&text=' . urlencode($message) . '&reply_markup=' . $replyMarkup);
}
@alekssamos
Copy link
Author

Долго не мог понять, как работает callback data,теперь благодаря этому ответу понял. Сохранил здесь, чтобы не потерять.

Telegram bot php. Inline keyboard. Подскажите, что делать дальше с callback_data. Что бы после нажатия на кнопку inline keyboard - бот ее обработал
Подскажите, пожалуйста как написать простой сценарий для бота, например:
написал команду "/test",
бот спрашивает: "Вы уверены?"
пишешь в ответ: "Да"
бот отправляет следующее сообщение по сценарию, если пишешь "нет" - сценарий заканчивается.
Важно, что бы мой ответ "Да" не обрабатывался ботом, пока он не спросит "Вы уверены?"(после команды /test)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment