我刚刚开始使用Telegraf制作一个带有节点的Telegram机器人程序,该机器人程序使用内联键盘供用户从给定选项中进行选择。但在用户选择一个选项并得到响应后,用户仍然可以点击其他选项并得到他们的响应。
ctx.reply("Do you want to order the product?", {
parse_mode: "HTML",
...Markup.inlineKeyboard([
Markup.button.callback("Order", "order"),
Markup.button.callback("Cancel", "cancel"),
]),
});
我试图使用bot.hears方法禁用它
bot.hears("order", (ctx) => {
"removed",
{
reply_markup: {
remove_keyboard: true,
},
};
});
bot.hears("cancel", (ctx) => {
"removed",
{
reply_markup: {
remove_keyboard: true,
},
};
});
但这些方法似乎并没有禁用/删除这些选项。那么,有没有一种方法可以在点击后禁用内联键盘
您必须使用bot.action
而不是bot.hears
。试试这个代码:
bot.action("order", (ctx) => {
ctx.editMessageReplyMarkup();
ctx.editMessageText("removed");
});
bot.action("cancel", (ctx) => {
ctx.editMessageReplyMarkup();
ctx.editMessageText("removed");
});
不带参数的bot.editMessageReplyMarkup
函数将删除内联键盘。bot.editMessageText
功能将用另一个文本编辑消息。
我希望这能有所帮助:(