【问题标题】:Handle callback from inline keyboard ( telegram bot ) with javascript使用 javascript 处理来自内联键盘(电报机器人)的回调
【发布时间】:2019-03-19 00:26:29
【问题描述】:

我将这个电报机器人创建为一个谷歌应用程序(在电子表格中),所以我不能为 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 页面获得任何信息……你能帮帮我吗?

【问题讨论】:

    标签: javascript bots spreadsheet telegram


    【解决方案1】:

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

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

    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 的字段是相同的。

    你可以查看我是如何实现的here

    这可能有点令人困惑,因为我使用了使用 MVC 的 telegram-node-bot,因此需要在我的 index.js file 中设置内联查询,然后才能使用 answercallbackquery 方法。

    但是它工作得非常好。欢迎提出更多问题。

    干杯)

    【讨论】:

      猜你喜欢
      • 2017-12-10
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 2016-03-22
      • 2020-10-08
      • 1970-01-01
      • 2017-06-04
      相关资源
      最近更新 更多