1

我正在通过Botman开发一个电报机器人,它显示带有回调模式的电报内联键盘。收到callback_query电报后,我会第一次回复answerCallbackQuery哪个工作得很好。

问题是第一次点击回调按钮后,该按钮会从消息中消失。

callback_query在机器人服务器上完成电报的请求执行之前,该按钮会一直显示。安装botsleep(10)服务器后,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);
});

我什至尝试在answerCallbackQuery通过editMessageReplyMarkup方法发送后更新键盘。即使按钮得到更新,但在请求执行完成后它们仍然消失。

4

1 回答 1

0

通过在配置条目hideInlineKeyboard下设置 config解决了该问题。telegram此配置没有记录或存在于botman包中的示例电报配置文件中,所以我不知道。

最终的botman配置文件:

return [
    'telegram' => [
        'token' => env('TELEGRAM_BOT_TOKEN'),

        'hideInlineKeyboard' => false,
    ],
];
于 2022-03-01T17:02:56.337 回答