【问题标题】: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】:
如何将名称变量用于其他命令?它说它未定义。
是否可以这样做但直接发送消息?我需要机器人要求输入代码并将其保存在变量中。