首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Telegraf.js:留下一个按钮给WizardScene

Telegraf.js:留下一个按钮给WizardScene
EN

Stack Overflow用户
提问于 2020-09-28 01:32:32
回答 1查看 533关注 0票数 0

我会在WizardScene中的消息后面放一个带有“取消”按钮的按钮。但是我检索到了一些错误:

这是我的向导场景:

代码语言:javascript
复制
const superWizard = new WizardScene('super-wizard',
      async ctx => {
        ctx.wizard.state.data = {};
        ctx.telegram.sendMessage(ctx.from.id, "Insert name", {
          parse_mode: 'MarkdownV2',
          reply_markup: cancelOrder()
        })
        return ctx.wizard.next();
      },
      ctx => {
        
        ctx.wizard.state.data.name = ctx.message.text;
        ctx.reply("here is your name: "+ctx.wizard.state.data.name);
        return ctx.scene.leave();
      }
);
const stage = new Stage([superWizard]);

bot.use(session());
bot.use(stage.middleware());

下面是我的取消订单函数:

代码语言:javascript
复制
function cancelOrder() {
  const annullaBtn = Markup.inlineKeyboard([
    Markup.callbackButton('CANCEL', `cancelOrder_btn`),
  ])
  return annullaBtn;
}

和按钮操作:

代码语言:javascript
复制
bot.action("cancelOrder_btn", (ctx) => {
    ctx.replyWithMarkdown(`Ordine *ANNULLATO* correttamente`)
    return ctx.scene.leave('super-wizard');
  });

程序正确地写入文本,并将按钮放入。但如果我按"CANCEL“,它会在以下位置给出错误:

代码语言:javascript
复制
ctx.wizard.state.data.name = ctx.message.text;

“文本未定义”,因为我按了“取消”,而我没有写任何东西。

那么,我如何才能离开场景而不前进,但如果我写了一个文本,它将在wizardScene中前进?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-05-28 04:33:34

替换

ctx.message.text;

使用

ctx.update.callback_query.data;

因为回调按钮没有返回消息

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

https://stackoverflow.com/questions/64091380

复制
相关文章

相似问题

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