如何重启TelegrafJS中的向导场景?

问题描述 投票:0回答:1
我有一个处理进入向导场景的“/start”的函数。
  • 现在,我收到一条带有 inline_keyboard 的消息,其中包含一个名为“redo”的 btn。
  • 当我单击“重做按钮”时,我想要的是它重新启动整个场景意味着它应该再次启动向导。
我尝试使用重做 btn 来做到这一点
superWizard.action("redo", (ctx) => {
  ctx.reply("Restarting Session!");
  ctx.session = {};
  ctx.scene.leave();
  ctx.scene.enter("super-wizard");
});

那么我们怎样才能重新启动向导场景呢?

我也尝试过下面的代码

return ctx.wizard.selectStep(0);

这仍然不起作用,下面是我的完整代码。

const superWizard = new Scenes.WizardScene(
  "super-wizard",
  (ctx) => {
  ... 
     return ctx.wizard.next();
  },
  (ctx) => { 
   ...
    return ctx.wizard.next();
},
  (ctx) => {
  ...
   return ctx.wizard.next();
  },
  (ctx) => {
      bot.telegram.sendMessage(ctx.chat.id, `Perform Action`, {
        reply_markup: {
          inline_keyboard: [
            [
              { text: "Confirm & Send!", callback_data: "confirm" },
              { text: "Redo!", callback_data: "redo" },
              { text: "Stop!", callback_data: "stop" },
            ],
          ],
        },
      });
    }
  }
);


superWizard.action("redo", (ctx) => {
  ctx.reply("Restarting Session!");
  ctx.session = {};
  ctx.wizard.selectStep(0);
});

请提供一些帮助。

javascript node.js telegram-bot restart telegraf.js
1个回答
0
投票

你可以尝试做

ctx.scene.reenter()
代替
ctx.wizard.selectStep(0)

© www.soinside.com 2019 - 2024. All rights reserved.