第一次点击后电报机器人内联键盘消失

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,
    ],
];