Javascript 节点Telegraf回调按钮

Javascript 节点Telegraf回调按钮,javascript,node.js,telegram,telegram-bot,Javascript,Node.js,Telegram,Telegram Bot,我们需要在简单键盘(非内联)中将数据传递给回调按钮,如果这不重要的话 例如: const mainMenuKeyboard = Markup.InlineKeyboard([ Markup.callbackButton('Add', 'addAction), ]).resize().extra(); 现在,如果我想捕捉“addAddress”操作,我可以这样做: bot.action('addAction',(ctx) => <WHATEVER>); 不工作 bot

我们需要在简单键盘(非内联)中将数据传递给回调按钮,如果这不重要的话

例如:

const mainMenuKeyboard = Markup.InlineKeyboard([
  Markup.callbackButton('Add', 'addAction),
  ]).resize().extra();
现在,如果我想捕捉“addAddress”操作,我可以这样做:

bot.action('addAction',(ctx) => <WHATEVER>);
不工作

bot.action('addAction',(ctx) => <WHATEVER>);
bot.action('addAction',(ctx)=>);
工作

bot.hears('Add',(ctx)=>);

您不应该在标记.键盘中使用标记.callbackButton(位于Bot API上)

根据Telegram Bot API文档,Markup.keyboard()应该包含数组的数组(不只是一个数组,顺便说一句,也要修复)。和标记。callbackButton(位于API上)应用于(而不是应答键盘)


有关如何在telegraf上使用这些功能的更多示例,请参见,

谢谢,但我还有一个问题。Markup和Extra.Markup有什么区别。我应该用哪一个?在本例中,它们同时使用这两种方式,但如果我将其中一种方式替换为另一种方式,则不会有任何变化。Extra object具有更广泛的功能范围(如控制消息的通知模式、指定“inReplyTo”、将parse_mode设置为HTML/markdown等等),而标记主要与键盘和按钮相关。记住这一点,Telegraf方法(如
reply()
replyWithHTML()
)接受额外的对象作为最后一个参数(而不是标记)。因此,如果我们使用
标记。
,我们应该调用
.extra()
(将其转换为extra)。但是我们可以使用具有相同效果的
Extra.markup
(但是在这种情况下,我们不使用
.Extra()
,因为我们操作的是一个额外的对象)
bot.action('addAction',(ctx) => <WHATEVER>);
bot.hears('Add',(ctx) => <WHATEVER>);