Cuando estoy tratando de configurar mi ID de canal de bienvenida en MongoDB ¿Por qué mi canal cambia los últimos dos dígitos a " 00 ", por ejemplo?954226649841430572 --> (when i send to database it changes to) 954226649841430500
mi código:
await guild.updateOne(
{ guildID },
{ $set: { leavechannel: channelID } }
);
Solución del problema
En MongoDB, a veces se pueden cortar números grandes debido a la naturaleza del almacenamiento de Ints grandes. En lugar de guardar el valor sin procesar como un número, primero use el .toString()
método y almacene el valor como una cadena. Esto eliminará el problema de MongoDB cortando Ints grandes y debido a que JS se escribe dinámicamente no tendrá ningún efecto en el uso de la ID como un número una vez que la obtenga de MongoDB.
Pregunta similar respondida aquí sobre Ints que son demasiado grandes
Editar: además del gran problema de Int, Discord.js analizará los copos de nieve en cadenas de todos modos.
De https://discord.com/developers/docs/reference#snowflakes
Hay algunos casos en los que nuestra API y Gateway pueden devolver ID en un formato inesperado. Internamente, Discord almacena ID como copos de nieve enteros. Cuando serializamos ID en JSON, transformamos bigints en cadenas. Dado que todas las ID de Discord son copos de nieve, siempre debe esperar una cadena.
No hay comentarios.:
Publicar un comentario