You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Telegram WizardScene中点击按钮跳转至指定Composer

实现Telegraf WizardScene跳转到指定步骤

要在backOrQuantityNight这个Composer中实现跳转到checkDate步骤,你可以利用Telegraf Wizard的内置方法或直接修改游标定位,两种方式都能保留wizard.state.data中的数据,不影响后续存入数据库的操作。

方法一:使用selectStep()(推荐)

selectStep()方法可以直接关联到目标Composer步骤,无需计算索引,逻辑更直观:

backOrQuantityNight.hears("Back", async (ctx) => {
  // 直接跳转到checkDate对应的步骤
  await ctx.wizard.selectStep(checkDate);
  // 重新发送checkDate步骤的引导提示,让用户明确操作要求
  await ctx.reply("请重新确认或选择日期");
});

方法二:通过索引修改游标

先确认步骤的索引顺序:你的WizardScene定义中checkDate是第二个传入的Composer,对应索引为1(索引从0开始计数),直接修改游标即可跳转:

backOrQuantityNight.hears("Back", async (ctx) => {
  // 将游标设置为checkDate对应的索引
  ctx.wizard.cursor = 1;
  // 触发checkDate步骤的处理逻辑,或直接发送提示
  await checkDate.handlers[0](ctx);
  // 也可以直接发送引导文本替代触发handler
  // await ctx.reply("请重新输入日期");
});

关键说明

  • 两种方式都不会清空ctx.wizard.state.data中的数据,完全不影响你在场景结束时将用户输入存入数据库的流程。
  • 跳转后建议重新发送对应步骤的引导提示,避免用户因流程中断产生困惑。

内容的提问来源于stack exchange,提问作者Bogdan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:57:07