【问题标题】:Add clickable buttons to telegram-bot向电报机器人添加可点击按钮
【发布时间】:2017-08-04 19:57:14
【问题描述】:

我正在使用 node.js 电报机器人开发一个简单的电报机器人。 https://github.com/yagop/node-telegram-bot-api 现在我希望用户停止输入消息(带字母),只需按几个按钮之一。当他单击按钮时,他的电报客户端必须向我的机器人发送另一条消息(例如“单击是”或“单击否”)。 我发现它可以用

var options = {
      reply_markup: JSON.stringify({
        inline_keyboard: [
          [{ text: 'Some button text 1', callback_data: '1' }],
          [{ text: 'Some button text 2', callback_data: '2' }],
          [{ text: 'Some button text 3', callback_data: '3' }]
        ]
      })
    };
bot.sendMessage(msg.chat.id, "answer.", option);

所以用户收到 3 种消息,当他点击它们时,他没有给我发回任何东西。 我需要另一种类型的按钮(位于客户端应用程序的底部)。

【问题讨论】:

标签: javascript node.js telegram-bot


【解决方案1】:

您需要收听callback_query .. 概述:

bot.on('callback_query', function onCallbackQuery(callbackQuery) {
  const action = callbackQuery.data;
  const msg = callbackQuery.message;
  const opts = {
    chat_id: msg.chat.id,
    message_id: msg.message_id,
  };
  let text;

  if (action === '1') {
    text = 'You hit button 1';
  }

  bot.editMessageText(text, opts);
});

更多信息可以在图书馆本身中找到。 :https://github.com/yagop/node-telegram-bot-api/blob/0174b875ff69f6750fc80a049315c9a0d7a5e471/examples/polling.js#L78

一些进一步的阅读表明:https://core.telegram.org/bots/api#callbackquery

TelegramBot 在收到回调查询时发出 callback_query

这与这里的文档有关:https://core.telegram.org/bots/api#callbackquery

如果按钮附加到通过机器人发送的消息(内联模式),则将显示字段inline_message_id

将出现 datagame_short_name 字段之一。

【讨论】:

  • 非常适合我。谢谢。如果您知道的话,您能否解释一下如何制作自定义按钮(位于电报应用程序屏幕的底部)?
  • @Kamiky 我实际上不太确定您是否可以访问本机层,但也许 one_time_keyboard 会是您可以使用的东西? core.telegram.org/bots/api#replykeyboardmarkup它被称为自定义键盘。这里也有:core.telegram.org/bots#keyboards
【解决方案2】:

您正在使用内联键盘,而不是您可以尝试回复键盘标记,如您所说,它出现在电报屏幕底部。

它很容易实现,你可以在herehere找到一些有用的信息。

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 2019-03-27
    • 2016-11-11
    • 1970-01-01
    相关资源
    最近更新 更多