Actualmente estoy creando un bot de discord con discord.js v13. En este momento tengo una base de datos donde se almacenan el guild.id y el prefijo estándar de un servidor. Ahora quiero reescribir un comando que se activa con el prefijo y el nombre del comando, como este '!somecommand'. Actualmente, mi prefijo está definido en el archivo con una variable const, pero quiero que el bot verifique la base de datos en busca del prefijo que tiene el servidor y use este en su lugar. Estoy comprobando el prefijo en la base de datos con esta parte del código:
pool.getConnection(function(err, connection) { if (err) throw err; let sql = `SELECT * FROM custom_prefix WHERE guild_id = '${message.guild.id}'`; connection.query(sql, async function (err, result) { if (err) throw err; console.log(result[0].prefix) connection.release(); }); });La salida es el prefijo actual del servidor donde se activó el comando, hasta ahora todo funciona bien. Pero como dije, quiero que la salida del código anterior sea el prefijo con el que se activa el bot.
Ya intenté hacerlo, pero siempre me equivoco. La mayoría de las veces, el bot verifica la base de datos demasiado lento y el resultado será 'indefinido'. No sé cómo hago para que el bot espere el resultado de la base de datos, verifique si este resultado es realmente el prefijo y luego ejecute el comando.
Estoy feliz con cualquier respuesta :-) Si necesita más información, hágamelo saber.
Supongo que pusiste el código que usa el resultado fuera de la devolución de llamada.
pool.getConnection(function(err, connection) { if (err) throw err; let sql = `SELECT * FROM custom_prefix WHERE guild_id = '${message.guild.id}'`; connection.query(sql, async function (err, result) { if (err) throw err; console.log(result[0].prefix) connection.release(); // // Put your code that uses result[0].prefix here // }); }); // // Do not put your code that uses result[0].prefix here //