在 Grammyjs 中没有任何错误,对话无法进行

问题描述 投票:0回答:1

我的对话有问题。我在对话中编写了以下代码:

if (ctx.session.in_conversation == true) return;
    conversation.session.in_conversation = true;

    await ctx.replyWithChatAction("typing");
    await ctx.reply("Mahsulot nomini kiriting:", {
      reply_markup: cancelKeyboard,
    });
    const nameMsg = await conversation.waitFor(["message"], {
      otherwise: () => ctx.reply("Iltimos matn ko'rinishida kiriting!"),
    });
    const name = nameMsg.message?.text;
    if (name == "❌ Bekor qilish") {
      conversation.session.in_conversation = false;
      await ctx.reply("🙅‍♂️ Amal bekor qilindi", { reply_markup: mainKeyboard });
      return;
    }

    await ctx.reply("Mahsulot haqida ma'lumot:");
    const descryptionMsg = await conversation.waitFor(["message"]);
    let descryption = descryptionMsg.message.text;

    await ctx.reply(`${descryption}`);

    conversation.session.in_conversation = false;
    return;

对话自行停止,不返回任何错误。

await ctx.reply("Mahsulot haqida ma'lumot:");

短信已发送,对话卡住。我哪里做错了?

一切都在工作,直到第二次回复。但此后什么都不起作用。回复、对话日志……什么都没有。我通过完全删除对话或从0重建项目来解决之前的问题。

bots node-telegram-bot-api telegraph grammy
1个回答
0
投票

发生这种情况是因为您正在使用多会话,它需要额外的对话初始值,这里的文档https://grammy.dev/plugins/conversations#installation-with-multi-sessions

bot.use(session({
        type: 'multi',
        isRegistred: {
            initial: () => false
        },
        isAdmin: {
            initial: () => false
        },
        conversation: {}
}))
© www.soinside.com 2019 - 2024. All rights reserved.