Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

132
Views
Datos modificados al usar sqlite3

Soy un desarrollador de bots de Discord y uso una base de datos SQLite para mi bot. Instalé sqlite3 por comando npm y trabajé con él, no hubo problema, pero ahora no puedo usarlo porque modifica valores. Tengo un poco de código aquí:

 const ghostChannels = await new Promise((resolve, reject) => client.db.all(`SELECT * FROM "Ghosts"`, (err, rows) => err ? reject(err) : resolve(rows) ) ); ghostChannels.forEach(async (channel) => { const guildchannel = await message.member.guild.channels.cache.get( channel.id ); console.log(channel.id); console.log(guildchannel); const mess = await guildchannel.send(message.member); await mess.delete(); });

Lamentablemente devuelve un error:

 Uncaught TypeError TypeError: channel.send is not a function

ingrese la descripción de la imagen aquí

Así que miré el id y vi que no es el mismo ID que en la base de datos:

ingrese la descripción de la imagen aquí

No se como solucionarlo, si alguien sabe que me lo diga :)

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

El problema es que intenta almacenar los copos de nieve como números enteros (por ejemplo, 988185997772738610 ), mientras que debe almacenarlos como cadenas ( "988185997772738610" ). Como estos ID tienen más de 53 bits ( MAX_SAFE_INTEGER ), JavaScript tiene dificultades para interpretarlos. Solo puede representar con seguridad números enteros entre -(2 53 - 1) y 2 53 - 1.

Entero máximo seguro 9007199254740992
tu entero 988185997772738610
Su número entero se convierte en 988185997772738600

Como puede ver, los dos últimos dígitos de cada ID de discordia/copo de nieve se convierten en 0 si se almacenan como números enteros. Incluso puedes probarlo a continuación:

 console.log(988185997772738610) // => 988185997772738600 console.log('988185997772738610') // => "988185997772738610"

Entonces, para resolver su problema, asegúrese de insertar las ID del canal (y otras) como cadenas en la base de datos.

about 4 years ago · Juan Pablo Isaza Report

0

¿Quizás lo haces de manera incorrecta? llamar a cualquier base de database necesita alguna gateway de enlace (no sé el nombre exacto). por ejemplo:

 const ghostChannels = await new Promise((resolve, reject) => client.db.all(`SELECT * FROM "Ghosts"`, (err, rows) => err ? reject(err) : resolve(rows) ) ); ghostChannels.forEach(async (channel) => { const guildchannel = await message.member.guild.channels.cache.get( channel.id ); console.log(channel.id); console.log(guildchannel); const mess = await channel.send(message.member); await mess.delete(); });

desde que llamaste a tu guildchannel para db tu:

 const mess = await channel.send(message.member);

debiera ser:

 const mess = await guildchannel.send(message.member);

EDITAR:

He visto que guildchannel se muestra como undefined , puedes probar:

 await guildchannel.channel?.send

o algo como esto:

 const chan = message.guild.channels.cache.get(`${channel.id}`) chan.send("set")
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!