首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Telegraf中注销中间件?

如何在Telegraf中注销中间件?
EN

Stack Overflow用户
提问于 2021-03-31 20:15:29
回答 1查看 203关注 0票数 0

当我添加bot.hears(...)时,它会注册用于处理匹配文本消息的中间件。但现在它将处理这些消息,即使它们是在任何时间发送的,即使不是预期的。因此,如果我正在创建一个有状态的服务,我只想在适当的时候监听特定的消息。

如何注销中间件,使其不再hear以前处理过的消息?

EN

回答 1

Stack Overflow用户

发布于 2021-04-01 00:16:49

我发现我是在找Scenes。在Github上描述了如何使用它们。

我将从上面的链接中发布一个稍微修改过的代码:

代码语言:javascript
运行
复制
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的场景代码中找到它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66887703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档