我有一个机器人,如果找到特定消息,它会显示一些文本。存在一个问题,即使用允许您更改主题的命令时,立即写入文本的条件有效。事实证明,当你输入一个新主题时,机器人会记下它并立即做出反应,尽管这不应该是这样。您如何尝试解决这个问题?
bot.on('text', (msg) => {
if (msg.text === require('./data.json')[msg.chat.id] ? .topic) {
if (msg.chat.id == wait && msg.chat.id == wait2) {
} else {
bot.sendMessage(msg.chat.id, 'Вы ввели текст!')
}
}
if (msg.text === '/settopic') {
bot.sendMessage(msg.chat.id, 'Пожалуйста, укажите новую тему
\nУчтите, что длина темы должна быть больше 15
символов!')
wait2.push(msg.chat.id);
}
})
bot.on('message', (msg) => {
if (wait2.includes(msg.chat.id)) {
if (text.length < 15) {
bot.sendMessage(id, 'Длина текста не может быть менее 15 символов!')
} else {
delete require('./data.json')[msg.chat.id];
require('./data.json')[id] = {
name: id,
follow: true,
subscribe: false,
topic: text
}
fs.writeFileSync('data.json', JSON.stringify(require('./data.json')));
bot.sendMessage(msg.chat.id, 'Спасибо, ваша тема сохранена!')
}
}
})
两个侦听器 (
message和text) 同时工作。您需要将所有内容传输到一个侦听器,并检查该消息是否是命令,然后不要执行机器人的主要功能。像这样的东西:因此,如果消息不是命令,则将执行标准响应,否则将配置机器人。通过将代码划分为函数,您将提高其可读性和可修改性。