电报机器人现在有 3 个按钮,单击后,它们会在聊天中写入简单的文本。如何制作 4 个按钮,但将它们排列成一行中的 2 个?点击第一个按钮/help,会显示另外 4 个按钮,就像一个多级菜单。
$data = file_get_contents('php://input');
$data = json_decode($data, true);
if (empty($data['message']['chat']['id'])) {
exit();
}
define('TOKEN', '7444555:AAHomfgjN0mM');
// Функция вызова методов API.
function sendTelegram($method, $response)
{
$ch = curl_init('https://api.telegram.org/bot' . TOKEN . '/' . $method);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
// Ответ на текстовые сообщения.
if (!empty($data['message']['text'])) {
$text = $data['message']['text'];
$keyboard = [
[ "/start" ],
[ "/help" ],
[ "Кнопка 3" ]
];
$reply_markup = json_encode([
"keyboard"=>$keyboard,
"resize_keyboard"=>true
]);
// Команда /start.
if (mb_stripos($text, '/start') !== false) {
sendTelegram(
'sendMessage',
array(
'chat_id' => $data['message']['chat']['id'],
'text'=>'Добро пожаловать в бота! /help /photo',
'reply_markup'=>$reply_markup
)
);
exit();
}
if (mb_stripos($text, '/help') !== false) {
sendTelegram(
'sendMessage',
array(
'chat_id' => $data['message']['chat']['id'],
'text' => 'Помощь!'
)
);
exit();
}
// Отправка фото.
if (mb_stripos($text, '/photo') !== false) {
sendTelegram(
'sendPhoto',
array(
'chat_id' => $data['message']['chat']['id'],
'photo' => curl_file_create(__DIR__ . '/img/edem.jpg'),
'caption' => "Подпись к изображению",
'parse_mode' => 'HTML',
)
);
exit();
}
}
您需要使用
inline_keyboard
:text
- 按钮名称callback_data
- 当您点击时将发送给您的密钥(或/command
- 将被执行)要水平放置按钮,您可以执行以下操作:
当点击时,
/help
您需要处理此操作并将第二个准备好的集合返回给用户。inline_keyboard
该请求本身只是一个例子。
要向‘页脚’添加按钮,您可以执行以下操作: