将可点击的按钮添加到telegram-bot

时间:2017-03-14 12:59:46

标签: javascript node.js telegram-bot

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

制作
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种消息,当他点击它们时,他不会发回任何东西。 我需要另一种类型的按钮(它位于客户端应用程序的底部)。

2 个答案:

答案 0 :(得分:2)

您需要倾听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字段中的一个。

答案 1 :(得分:2)

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

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