如何在单击后禁用Telegraf.js内联键盘



我刚刚开始使用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功能将用另一个文本编辑消息。

我希望这能有所帮助:(

最新更新