我刚刚开始使用Telegraf制作带有节点的Telegram bot,并且机器人使用内联键盘让用户从给定的选项中进行选择。但是,在用户选择一个选项并获得响应之后,用户仍然可以单击其他选项并获得他们的响应。
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,
},
};
});但是这些方法似乎并没有禁用/删除这些选项。那么,有什么方法可以在一次单击后禁用内联键盘吗?
发布于 2022-09-09 02:18:00
而不是bot.hears,您必须使用bot.action。试试下面的代码:
bot.action("order", (ctx) => {
ctx.editMessageReplyMarkup();
ctx.editMessageText("removed");
});
bot.action("cancel", (ctx) => {
ctx.editMessageReplyMarkup();
ctx.editMessageText("removed");
});没有参数的bot.editMessageReplyMarkup函数将删除内联键盘。bot.editMessageText函数将用另一个文本编辑消息。
我希望这有帮助:)
https://stackoverflow.com/questions/73093363
复制相似问题