Клавиатура для бота телеграм
Я уже писал о том, как сделать бота для телеграм на PHP и Java. При этом наш бот может как сам отправлять сообщения, так и реагировать на команды. В последнем случае команды – это просто текстовые сообщения, что не всегда удобно. Гораздо чаще удобнее просто ткнуть кнопку с командой (или для перехода в меню). Сделать эти кнопки несложно.
Итак, подразумевается, что вы уже ознакомились с данной заметкой и создали своего первого (ну или не первого) бота для телеграм на PHP. Теперь требуется сделать этого бота более комфортным для работы/общения – с помощью клавиатуры.
Если посмотреть официальную документацию, то можно увидеть, что есть 4 типа reply_markup
- InlineKeyboardMarkup
- ReplyKeyboardMarkup
- ReplyKeyboardRemove
- ForceReply
Начнем с инлайновой клавиатуры. А вообще нет, лучше начнем с создания метода, который будет отправлять сообщения. Причем как обычные, так и содержащие эту самую инлайновую клавиатуру. Вот она
function sendMessage($tg_chat_id, $message, $keyboard = "") { global $token; $response = array( 'chat_id' => $tg_chat_id, 'text' => $message, 'parse_mode' => "HTML" ); if ($keyboard){ $arr = array('reply_markup' => json_encode($keyboard, TRUE)); $response = array_merge($response, $arr); } $ch = curl_init('https://api.telegram.org/bot' . $token . '/sendMessage'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $response); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_exec($ch); curl_close($ch); }На вход принимаем чат ид, сообщение и клавиатуру (последний параметр необязателен). В самом методе создаем массив из значений, если есть, то суем туда и клавиатуру, предварительно переведенную в формат json.
А теперь само создание клавиатуры с кнопками «да» и «нет»:
$button_yes = array('text' => 'Да', 'callback_data' => '/yes'); $button_no = array('text' => 'Нет', 'callback_data' => '/no'); $keyboard = array('inline_keyboard' => array(array($button_yes, $button_no))); sendMessage($chat_id, "Вы любите пиццу?", $keyboard);Тут все просто: создаем кнопки, создаем из них клавиатуру и отправляем вместе с вопросом. Вы спросите, а что за ссылки «/yes» «/no»? А это так называемые колбэки – в данном случае под этим термином подразумеваются те данные, которые отправляются обратно при нажатии соответствующей кнопки. Их надо отлавливать и обрабатывать. Например, так
$postData = file_get_contents('php://input'); $data = json_decode($postData, true); $inline_id = $data["callback_query"]["message"]["chat"]["id"]; $callback = $data["callback_query"]["data"];Ну и дальше уже идет ветвление в зависимости от того, какой колбэк вы получили. Вот так просто можно создать кнопки прямо в боте телеграм.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.