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

say*_*ono 3 node.js node-telegram-bot-api

所以,我实际上很厌倦找到任何有关此的问题......

我只需要在机器人问题之后才需要获取用户消息,而不是其他地方,例如:

机器人:你叫什么名字?

用户:奥列格

机器人:嗨,奥列格

它应该如何运作

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

示例代码

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)
    }
});
Run Code Online (Sandbox Code Playgroud)

小智 8

您可以使用数据库或仅通过存储用户状态属性的 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}!`);
    });
});
Run Code Online (Sandbox Code Playgroud)

就是这样。