首页 > 解决方案 > 使用 javascript 处理来自内联键盘(电报机器人)的回调

问题描述

我将这个电报机器人创建为谷歌应用程序(在电子表格中),所以我不能使用任何 nodejs 包,如 Telegraph 或 Telebot。

我需要做的是,对于每个按下的内联按钮,机器人都会执行特定的操作。这是在消息下显示键盘的代码

bot.replyToSender("Quello inserito non è un codice utente valido. Il codice utente deve essere un numero!",JSON.stringify({
        "inline_keyboard": [
          [{ "text": "BUTTON_1", url: "SOME_RANDOM_URL_HERE"}], //This button does work, it sends me to the specific url
          [{ "text": "BUTTON_2", "callback_data" :"B"}]
        ]
      }));

当我想用 BUTTON_2 做某事(比如更改生成该回调的消息或只是回复用户)时,问题就从这里开始了。

我只是无法从 Telegram 的 API 页面得到任何东西......你能帮帮我吗?

标签: javascriptbotsspreadsheettelegram

解决方案


我创建了一个类似的机器人,它与谷歌电子表格一起工作,并在采取行动后更新电子表格,你可以检查一下。我没有在电子表格中使用谷歌应用程序。在我看来,这种方法会更加困难,因为您无法利用大多数可用的库来为您完成大部分艰苦的工作。

要回答这个问题,您需要使用docsanswercallbackquery中提供的方法。我不知道使用 google 应用程序会是什么样子,但它应该看起来像这样

if (query.data === "B") {  // query is an object from the response you get when the user clicks the inline button
  bot.answercallbackquery(query.id, {
     text: `You successfully clicked the button`
  });
}

这对您来说可能不是完全相同的实现,但对于answerInlineQuery.

你可以在这里查看我是如何实现它的

这可能有点令人困惑,因为我使用了使用 MVC 的电报节点机器人,因此需要在我的index.js 文件中设置内联查询,然后才能使用该answercallbackquery方法。

但是它工作得很好。随时问更多问题。

干杯)


推荐阅读