javascript - 使用 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 页面得到任何东西......你能帮帮我吗?
解决方案
我创建了一个类似的机器人,它与谷歌电子表格一起工作,并在采取行动后更新电子表格,你可以检查一下。我没有在电子表格中使用谷歌应用程序。在我看来,这种方法会更加困难,因为您无法利用大多数可用的库来为您完成大部分艰苦的工作。
要回答这个问题,您需要使用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
方法。
但是它工作得很好。随时问更多问题。
干杯)
推荐阅读
- pandas - 仅使用选定列跨行和向下列的分位数
- java - 使用java将内容从一个文件复制到多个文件
- javascript - 摩卡描述“意外的字符串错误”
- javascript - 动态更改 JqGrid 复选框名称?
- java - 调用rest api时无论使用lomboks @Data,方法都是未定义的
- vba - 将行增加 250 以复制和粘贴数据
- google-bigquery - Google API 从 BigQuery 表中获取数据
- spring - 使 org.springframework.security.oauth 使用 com.fasterxml.jackson 而不是 org.codehouse.jackson
- javascript - 如何获得答案的结果并对该结果执行计算
- bash - 在多个单词中查找公共子字符串并将其删除