node-telegram-bot-api / 如何获取有关问题的用户消息?

所以,我真的很累找到任何关于这个的问题......

我只需要在机器人问题之后才需要获取用户消息,而其他地方都没有:

**bot:** 你叫什么名字?

**user:** 奥列格

**bot:** 嗨,奥列格

how it should work

我也在使用带有module.exports的require系统,所以我真的很困惑,如何处理我的问题

示例代码

const mw = require('./example_module');

bot.onText(//help/, async (data) => {
    try {
        mw.cout.userlog(data);
        await cw.help.main(bot, data);
    } catch (e) {
        mw.cout.err(e.name)
    }
});
stack overflow node-telegram-bot-api / How to get user message on a question?
原文答案

答案:

作者头像

您可以通过存储用户状态属性来使用数据库或仅使用 JSON 文件来执行此操作。例如,在这里您要询问用户的姓名。您可以在数据库中为“setName”的用户设置状态属性。当用户回复时,检查数据库并找出最后的状态。在这里,我们将状态设置为“setName”。然后做剩下的。

否则,只需使用 node-telegram-bot-api ,您就可以做到这一点,但稍有不同的是,您必须接收他们的姓名作为回复文本。这是代码:

bot.onText(//help/, async msg => {
    const namePrompt = await bot.sendMessage(msg.chat.id, "Hi, what's your name?", {
        reply_markup: {
            force_reply: true,
        },
    });
    bot.onReplyToMessage(msg.chat.id, namePrompt.message_id, async (nameMsg) => {
        const name = nameMsg.text;
        // save name in DB if you want to ...
        await bot.sendMessage(msg.chat.id, `Hello ${name}!`);
    });
});

就是这样。