如何解决如何在 Telegraf 中注销中间件?
当我添加 input: 0
expected output: 0
input: 9
expected output: 9
input: 26
expected output: 27
input: 39
expected output: 39
时,它会注册中间件来处理匹配的文本消息。但是现在它会处理这些消息,即使它们是随时发送的,即使不是预期的。
因此,如果我正在创建有状态服务,我希望仅在适当的时间收听特定消息。
如何取消注册中间件,使其不再bot.hears(...)
以前处理过的消息?
解决方法
原来我在寻找Scenes。 Github 上描述了如何使用它们。
我会从上面的链接中发布一个稍微修改过的代码:
const { Telegraf,Scenes,session } = require('telegraf')
const contactDataWizard = new Scenes.WizardScene(
'CONTACT_DATA_WIZARD_SCENE_ID',// first argument is Scene_ID,same as for BaseScene
(ctx) => {
ctx.reply('Please enter guest\'s first name',Markup.removeKeyboard());
ctx.wizard.state.contactData = {};
return ctx.wizard.next();
},(ctx) => {
// validation example
if (ctx.message.text.length < 2) {
ctx.reply('Please enter real name');
return;
}
ctx.wizard.state.contactData.firstName = ctx.message.text;
ctx.reply('And last name...');
return ctx.wizard.next();
},);
const stage = new Scenes.Stage();
stage.register(contactDataWizard);
bot.use(session());
bot.use(stage.middleware());
但是一般还是不知道怎么实现,需要在Telegraf的Scenes代码中找到。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。