将可点击的button添加到电报机器人

我正在用node.js电报机器人开发一个简单的电报机器人。 https://github.com/yagop/node-telegram-bot-api现在,我想让用户停止input消息(用字母),只需按几个button之一。 当他点击button时,他的电报客户端必须发回给我的机器人另一个信息(有点像“点击是”或“点击否”)。 我发现它可以做成

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种消息,当他点击他们时,他不会再给我任何回应。 我需要另一种types的button(这将在客户端的应用程序的底部)。

您需要监听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); }); 

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

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

TelegramBot收到callback查询时发出callback_query

这涉及到这里的文档: https : //core.telegram.org/bots/api#callbackquery

如果该button被附加到通过机器人发送的消息(inline mode),则inline_message_id字段将会出现。

其中一个字段data或者game_short_name将会出现。

您正在使用内联键盘,而不是像您所说的那样尝试回复出现在电报屏幕底部的键盘标记。

它很容易实现,你可以在这里和这里find一些有用的信息。