【问题标题】:node-telegram-bot-api / How to get user message on a question?node-telegram-bot-api / 如何获取有关问题的用户消息?
【发布时间】:2022-10-02 07:46:54
【问题描述】:

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

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

机器人:你叫什么名字?

用户:奥列格

机器人:嗨,奥列格

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)
    }
});

    标签: node.js node-telegram-bot-api


    【解决方案1】:

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

    就是这样。

    【讨论】:

      【解决方案2】:

      如何将名称变量用于其他命令?它说它未定义。 是否可以这样做但直接发送消息?我需要机器人要求输入代码并将其保存在变量中。

      【讨论】:

        猜你喜欢
        • 2017-02-25
        • 1970-01-01
        • 2017-11-28
        • 2021-04-03
        • 2016-01-31
        • 2017-09-14
        • 1970-01-01
        • 2016-02-23
        • 1970-01-01
        相关资源
        最近更新 更多