Клавиатура для бота телеграм
Я уже писал о том, как сделать бота для телеграм на 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты