Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1K
Vistas
Mensaje de evento Crear no disparar/emitir cuando envío un DM a mi bot (discord.js v13)

Hice este código para registrar los DM que se envían a mi bot:

 client.on('messageCreate', async message => { if (message.author.bot) return; const attachment = message.attachments.first() if (message.channel.type === 'DM') { console.log(message.content) const dmLogEmbed = new MessageEmbed() .setColor("RANDOM") .setTitle(`${message.author.tag} dmed the bot and said: `) .setDescription(message.content) .setFooter(`User's id: ${message.author.id}`) if (message.attachments.size !== 0) { dmLogEmbed.setImage(attachment.url) } client.channels.fetch("852220016249798756").then((channel) => { channel.send({ embeds: [dmLogEmbed] }) }) } });

Pero al actualizar a discord.js v13 ya no funcionó, por lo que entendí el único cambio es que el tipo de canal 'dm' ya no es 'dm' sino 'DM', así que lo cambié en mi código, pero todavía no funciona y realmente no sé por qué.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Asegúrate de tener DIRECT_MESSAGES en las intenciones de tu cliente.

 const client = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES", "DIRECT_MESSAGES"] });

Hay un cambio importante en Discord API v8. Para referencia ver aquí .

En Discord API v8 y versiones posteriores, los canales DM no emiten el evento CHANNEL_CREATE , lo que significa que discord.js no puede almacenarlos en caché automáticamente. Para que su bot reciba DM, el parcial de CHANNEL debe estar habilitado.

Entonces necesitamos habilitar el CHANNEL parcial también. Tenga en cuenta que cuando se trata de datos parciales , a menudo desea recuperar los datos porque no están completos. Sin embargo, este no parece ser su caso, si está utilizando el evento messageCreate . El message recibido no es parcial ni message.channel . Para verificar si algo es parcial, puede usar la propiedad .partial . Por ejemploMessage.partial oChannel.partial .

 const client = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES", "DIRECT_MESSAGES"], partials: ["CHANNEL"] });

Ahora debería funcionar como el viejo discord.js v12.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda