【发布时间】:2019-10-23 21:44:15
【问题描述】:
我正在开发一个 discord.js 机器人,并且我正在将大量信息存储在数据库中的各种服务器上。问题是,代码不会等待数据库返回结果。在当前情况下,我正在尝试检查服务器特定前缀是否签出。
我尝试在不同的地方使用async 和await,但这些都不起作用。如果可以,我宁愿不使用.then(),因为我真的不想将所有命令都放在.then() 中。
const { Client, Attachment, RichEmbed } = require('discord.js');
const client = new Client();
const mysql = require("mysql");
const config = require("./config.json")
var con = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'botdb'
})
client.on("ready", () => {
console.log("I'm ready")
})
client.on("message", message => {
if (message.author.bot) return;
if (message.channel.type === 'dm') return;
let msg = message.content.split(" ");
let command = msg[0];
let prefix;
con.query(`SELECT * FROM serversettings WHERE ServerID = ${message.guild.id}`, (err, rows) => {
if (err) throw err;
prefix = rows[0].Prefix;
console.log(prefix)
})
console.log(`Prefix: ${prefix}, Command: ${command}`)
if (command === `${prefix}examplecommand`) {
//Do something
}
//Other code that uses prefix and command
}
它应该首先记录前缀,然后是 Prefix: ${prefix}, Command: ${command} 部分,但它是反过来的,所以 example 命令不起作用。
【问题讨论】:
标签: mysql node.js discord.js