Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

79
Visualizações
Crear un perfil en la base de datos mySQL y usarlo inmediatamente después para mostrar lo que hay dentro Discord.js

Estoy creando mi bot de Discord y vi que el proveedor de alojamiento que compré venía con una base de datos mySQL, así que lo estoy usando. Me conecté con el paquete mySQL NPM:

 export const con = mysql.createConnection({ host: process.env.MYSQL_HOST, port: process.env.MYSQL_PORT, user: process.env.MYSQL_USER, password: process.env.MYSQL_PASSWORD, database: process.env.MYSQL_DB, });

y funciona bien Creé una tabla en la base de datos, con 3 parámetros:
id: Discord user id
bananas: My toy currency
deposit: The currency deposit
Configuré que en el evento interactionCreate , cada vez que un usuario usa una interacción, verifica la base de datos, si hay un perfil, no hace nada, de lo contrario, crea el perfil en la base de datos. Código:

 async checkDB(int: CommandInteraction | MessageComponentInteraction) { await con.query( `SELECT * FROM profileSchema WHERE id = '${int.user.id}'`, async (e: Error, rows: any) => { if (e) throw e; if (!rows[0]) { await con.query( `INSERT INTO profileSchema (id, bananas, deposit) VALUES ('${int.user.id}', 100, 0)` ); } } ); },

este código funciona bien, el problema es que si un usuario no tiene un perfil en la base de datos, y usa un comando relacionado con la moneda , como el que muestra su saldo, el bot falla porque sus créditos en la base de datos resultan inexistentes, incluso aunque se crea el perfil y la segunda vez que usan el comando, ¡funciona correctamente! ¿Cómo puedo codificar para que, si el usuario no está en la base de datos y usa un comando, cree y muestre al mismo tiempo? Aquí está el código que verifica el saldo de la moneda:

 await con.query( `SELECT * FROM profileSchema WHERE id = ${interaction.user.id}`, async (e: Error, rows: any[]) => { if (e) throw e; let wallet: { bananas: number; deposit: number; }; try { wallet = { bananas: rows[0].bananas, deposit: rows[0].deposit, }; } catch (e) { throw e return; } )
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Entonces, a menos que sea realmente necesario, no necesita los componentes async/await en esto, pero la respuesta simple que está buscando es cambiar if (!rows[0]) a if (!rows.length) pero eso funciona cuando usted configura su consulta como tal:

 con.query(`SELECT * FROM profileSchema WHERE id = '${int.user.id}'`, (err, rows) => { if (err) throw err; if (!rows.length) { con.query(`INSERT INTO profileSchema (id, bananas, deposit) VALUES ('${int.user.id}', 100, 0)`, (err) => { if (err) throw err; }); } else { let wallet = { bananas: rows[0].bananas, deposit: rows[0].deposit, } } });
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda