无法使用 Stage.enter 和变量名称进入电报场景

tes*_*ele 1 node.js telegraf

我使用创建一个电报机器人telegraf使用向导。我想在我的机器人中有几个向导。如何进入另一个场景?我正在使用以下代码,但出现错误Cannot read property 'enter' of undefined

const Stage = require("telegraf/stage");
const WizardScene = require("telegraf/scenes/wizard");
const wiz1 = new WizardScene('task1',
    ctx => {...},
    ctx => {...}
);
const wiz2 = new WizardScene('task2',
    ctx => {...},
    ctx => {...}
);
const wiz3 = new WizardScene('task3',
    ctx => {...},
    ctx => {...}
);

const stage =new Stage([wiz1,wiz2,wiz3],{default: 'task1'})
bot.hears('anAction', (ctx) => {Stage.enter('wiz2')}); // this does not work
Run Code Online (Sandbox Code Playgroud)

Mer*_*aye 7

这是一个迟到的回应,但它可能对某人有所帮助。您需要注册之后 const stage = new Stage ...之前的阶段的中间件 bot.hears...

bot.use(stage.middleware())
Run Code Online (Sandbox Code Playgroud)

您也可以使用它们的 id 而不是变量名称进入场景。所以代替Stage.enter('wiz2')使用Stage.enter('task2')进入wizard2。