第一次点击后电报机器人内联键盘消失
Telegram bot inline keyboard disappeared after first click
我正在通过 Botman 开发电报机器人,它显示带有回调模式的电报内联键盘。从电报中收到 callback_query
后,我将回复 answerCallbackQuery
,这是第一次正常工作。
问题是第一次点击回调按钮后,该按钮会从消息中消失。
该按钮一直出现,直到电报的 callback_query
请求在机器人服务器上执行完毕。将 sleep(10)
放到 bot 的服务器上后,按钮在 10 秒后消失。
Botman 处理程序代码:
$botman->hears('/inline', function (BotMan $bot) {
$bot->reply(
"Inline Keyboard Message",
Keyboard::create()
->type(Keyboard::TYPE_INLINE)
->addRow(KeyboardButton::create("callback")->callbackData("callback"))
->oneTimeKeyboard(false)
->toArray()
);
});
$botman->hears('callback', function (Botman $bot) {
$callback = Request::input('callback_query.id');
$bot->sendRequest('answerCallbackQuery', [
'callback_query_id' => $callback,
'text' => 'Message Received',
'show_alert' => true,
]);
sleep(10);
});
我什至尝试在通过 editMessageReplyMarkup
方法发送 answerCallbackQuery
后更新键盘。即使按钮得到更新,但在请求执行完成后它们仍然消失。
通过在 telegram
配置条目下设置 hideInlineKeyboard
配置解决了这个问题。 botman
包中的示例电报配置文件中没有记录或存在此配置,所以我不知道它。
最终的 botman 配置文件:
return [
'telegram' => [
'token' => env('TELEGRAM_BOT_TOKEN'),
'hideInlineKeyboard' => false,
],
];
我正在通过 Botman 开发电报机器人,它显示带有回调模式的电报内联键盘。从电报中收到 callback_query
后,我将回复 answerCallbackQuery
,这是第一次正常工作。
问题是第一次点击回调按钮后,该按钮会从消息中消失。
该按钮一直出现,直到电报的 callback_query
请求在机器人服务器上执行完毕。将 sleep(10)
放到 bot 的服务器上后,按钮在 10 秒后消失。
Botman 处理程序代码:
$botman->hears('/inline', function (BotMan $bot) {
$bot->reply(
"Inline Keyboard Message",
Keyboard::create()
->type(Keyboard::TYPE_INLINE)
->addRow(KeyboardButton::create("callback")->callbackData("callback"))
->oneTimeKeyboard(false)
->toArray()
);
});
$botman->hears('callback', function (Botman $bot) {
$callback = Request::input('callback_query.id');
$bot->sendRequest('answerCallbackQuery', [
'callback_query_id' => $callback,
'text' => 'Message Received',
'show_alert' => true,
]);
sleep(10);
});
我什至尝试在通过 editMessageReplyMarkup
方法发送 answerCallbackQuery
后更新键盘。即使按钮得到更新,但在请求执行完成后它们仍然消失。
通过在 telegram
配置条目下设置 hideInlineKeyboard
配置解决了这个问题。 botman
包中的示例电报配置文件中没有记录或存在此配置,所以我不知道它。
最终的 botman 配置文件:
return [
'telegram' => [
'token' => env('TELEGRAM_BOT_TOKEN'),
'hideInlineKeyboard' => false,
],
];