Estoy tratando de usar un valor (ID de usuario de Discord almacenado como una cadena) almacenado a través de quick.db en mi código, pero me devuelve el error user_id: Value "[object Promise]" is not snowflake. He pasado horas tratando de resolverlo, pero simplemente no funciona. Si almaceno la ID directamente en el código, funciona bien y puedo buscar al usuario.
Este es mi archivo "ready.js". El paquete cron me permite definir a qué hora del día se ejecuta esa parte del código. No creo que sea parte del problema.
const Discord = require("discord.js") const cron = require('cron'); const path = require('path'); const { QuickDB } = require("quick.db"); const db = new QuickDB() module.exports = client => { console.log(`${client.user.username} ist online`) client.user.setActivity('Online!', { type: 'PLAYING' }); let userid1 = db.get("id1.string"); let scheduledMessage = new cron.CronJob('00 00 08 * * *', () => { client.users.fetch(userid1).then(user => { user.send('Test').catch(err => { let channel = client.channels.cache.get('998568073034465341') channel.send(`${user} blocked the bot`) }) }) }) scheduledMessage.start() }Aquí es donde quiero utilizar una identificación de usuario almacenada a través de quick.db en "id1.string"
client.users.fetch(userid1).then(user => {-> Esto no funciona
client.users.fetch(400120540989227010).then(user => {-> Esto está funcionando bien
Ya he probado a usar
`${userid1}`pero esto tampoco funciona
Estaría tan feliz si alguien pudiera ayudarme con eso.
db.get("id1.string") es una función asíncrona, lo que significa que, a menos que ponga una await detrás, devolverá una Promesa que aún no ha terminado. Es como querer enviar un mensaje de discordia. No puede recibir el mensaje de inmediato debido a su conexión y la conexión de la API. Toma tiempo. Entonces, para omitir esto, debe usar la palabra clave await antes del método .get (y sincronizar la función principal aquí) para que no ejecute el resto del código hasta que obtenga lo que desea de la base de datos.
let userid1 = db.get("id1.string"); // What you have now let userid1 = await db.get("id1.string"); // What you should do instead module.exports = client => { // What you have now module.exports = async client => { // What you should do instead