谈理想
2026-09-01
来自浙江
// 练习,末尾加表情 ctx.on('demo/transform', (input, next) => { const downstream = next() // 先拿到下游结果 return `${downstream} :)` // 加上表情 }) // Listener 1: 给下游结果加上署名 ctx.on('demo/transform', (input, next) => { const downstream = next() // 先拿到下游结果 return `[Bot] ${downstream}` // 加上署名 }) // Listener 2: 遇到敏感词就短路 ctx.on('demo/transform', (input, next) => { if(input.includes('脏话')) return '内容已拦截' // 直接返回,不调用next(),短路 return next() // 正常情况,继续往下走 }) 实操1:结果:正常回复: [Bot] 你好,很高兴遇见你 :) 被拦截的回复: [Bot] 内容已拦截 :) ctx.on('jike/serial', (text) => { console.log('天气接单') if(text.includes('天气')) { return 'weather' // 我负责天气,返回非空值 = 我接单了 } // 返回undefine = 我不处理,继续问下一个 }) ctx.on('jike/serial', (text) => { console.log('时间接单') if(text.includes('时间')) { return 'time' // 我负责时间,返回非空值 } }, {prepend: true}) const res = await ctx.serial('jike/serial', '帮我查一下天气') console.log('返回的结果: ', res) 实操2,为了更好地看出顺序,我在判断前增加了log。结果:时间接单 天气接单 返回的结果: weather
展开
作者回复: 赞👍