节点 Telegraf 回调按钮
Node Telegraf callback button
对于我们需要在简单键盘(非内联)中将数据传递给回调按钮的内容,如果这无关紧要?
示例:
const mainMenuKeyboard = Markup.InlineKeyboard([
Markup.callbackButton('Add', 'addAction),
]).resize().extra();
现在,如果我想捕捉 "addAddress" 动作,我可以这样做:
bot.action('addAction',(ctx) => <WHATEVER>);
一切正常&
但是,当我想在我的项目中使用简单的键盘(非内联)时,我无法使用 "bot.action("addAction")" 我必须使用 "bot.hears("Add")" :
const mainMenuKeyboard = Markup.keyboard([
Markup.callbackButton('Add', 'addAction),
]).resize().extra();
不工作
bot.action('addAction',(ctx) => <WHATEVER>);
工作
bot.hears('Add',(ctx) => <WHATEVER>);
您不应该使用 Markup.callbackButton(即 InlineKeyboardButton on the Bot API) inside Markup.keyboard(ReplyKeyboardMarkup)。
根据 Telegram Bot API 文档,Markup.keyboard(ReplyKeyboardMarkup) should contain Array of Arrays (not just an array BTW, fix that as well) of KeyboardButton. And Markup.callbackButton(which is Inlinekeyboardbutton on the API) should be used for InlineKeyboard(不回复键盘)。
有关如何在 telegraf 上使用这些的更多示例,check this example out
对于我们需要在简单键盘(非内联)中将数据传递给回调按钮的内容,如果这无关紧要?
示例:
const mainMenuKeyboard = Markup.InlineKeyboard([
Markup.callbackButton('Add', 'addAction),
]).resize().extra();
现在,如果我想捕捉 "addAddress" 动作,我可以这样做:
bot.action('addAction',(ctx) => <WHATEVER>);
一切正常& 但是,当我想在我的项目中使用简单的键盘(非内联)时,我无法使用 "bot.action("addAction")" 我必须使用 "bot.hears("Add")" :
const mainMenuKeyboard = Markup.keyboard([
Markup.callbackButton('Add', 'addAction),
]).resize().extra();
不工作
bot.action('addAction',(ctx) => <WHATEVER>);
工作
bot.hears('Add',(ctx) => <WHATEVER>);
您不应该使用 Markup.callbackButton(即 InlineKeyboardButton on the Bot API) inside Markup.keyboard(ReplyKeyboardMarkup)。
根据 Telegram Bot API 文档,Markup.keyboard(ReplyKeyboardMarkup) should contain Array of Arrays (not just an array BTW, fix that as well) of KeyboardButton. And Markup.callbackButton(which is Inlinekeyboardbutton on the API) should be used for InlineKeyboard(不回复键盘)。
有关如何在 telegraf 上使用这些的更多示例,check this example out