我正在使用 Node.js 的 discord.js 模块构建 Discord 机器人。我使用 MySQL 数据库来存储用户。因此,在我的机器人中有一个命令可以将有关用户的信息输入到数据库中。但是存在一个问题,机器人发送两条消息,并使用同一用户向数据库添加 2 行。如何解决?这是代码:
const Discord = require('discord.js') //Это модуль для создания Дискорд ботов(это не важно)
const db = require('quick.db')
const mysql = require('mysql')
exports.run = (client, message, args) => {
const con = mysql.createConnection({ //Авторизация
host: "Тут сайт.",
user: "Юзер",
password: "Пароль",
database: "База"
});
var prefix = db.fetch(`guild_${message.guild.id}.prefix`) //Префикс сервера(тоже не важно)
var info = args.join(' ') //Информация пользователя которую он указал(тоже не особо важно.)
con.query(`SELECT * FROM Info WHERE ID = ${message.author.id}`, function (err, result) { //Обращаюсь к столбцу с таким ID
if(result.length) return //Если юзер уже есть в таблице он должен остановить работу по идеи.
if (err) return console.log(err); //Если ошибка остановит работу и выведет к консоль.
con.query("INSERT INTO Info (User, ID, Info) VALUES (?,?,?)", [message.author.username, message.author.id, info], function (err, result) {
if(result.length) return
if (err) return console.log(err);
message.channel.send('Вы успешно внесли о себе информацию!')
return
})
con.query(`UPDATE Info SET Info = "${info}" WHERE ID = ${message.author.id}`, function (err) { //Если юзер есть в таблице он изменяет его.
if (err) return console.log(err);
message.channel.send('Вы успешно внесли о себе информацию!')
})
})
}
module.exports.help = {
name: 'personal'
};
请帮忙,我已经 4 天无法弄清楚我做错了什么!
我解决了这个问题!就是这样: