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

239
Vistas
¿Cómo verifico si un mensaje es un DM en Discord.js?

Actualmente estoy usando la última versión de Discord.js (v13.1.0) .

Quiero poder detectar si cierto mensaje es un DM. Intenté crear un evento messageCreate e hice una declaración if para verificar si el canal es un DM

 client.on('messageCreate', message => { if (message.channel.type == 'DM') { console.log('Dm recieved!') } })

Esto por alguna razón no funcionó. Así que no tengo idea de lo que hará.

Aquí están mis intents :

[Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MESSAGE_REACTIONS, Intents.FLAGS.DIRECT_MESSAGES]

Por cierto, el evento funciona :

 client.on('messageCreate', message => { console.log('Event') }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

También tuve este problema antes; Investigué los cambios entre discord.js v12 y v13 y descubrí por qué.

Como se ve aquí en la página web discordjs.guide dedicada a los cambios importantes entre las actualizaciones:

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.

Para la característica muy importante de manejar mensajes DM, ese aviso fue bastante difícil de encontrar. Solo menciona directamente el evento CHANNEL_CREATE , pero básicamente lo que significa es que su bot no puede recibir ningún DM a menos que el CHANNEL parcial esté habilitado en las opciones de su cliente.

Aquí hay un ejemplo de cómo lo harías:

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

Debe agregar esa propiedad de partials a su constructor de Client para recibir mensajes directos. Después de hacerlo, su código funcionará correctamente.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Tuve el mismo problema, la solución fue modificar la variable del cliente agregando esto

gracias a cannicida

 const client = new discord.Client({ partials: ["CHANNEL"], intents: [ discord.Intents.FLAGS.DIRECT_MESSAGES, discord.Intents.FLAGS.DIRECT_MESSAGE_TYPING ]})
about 4 years ago · Juan Pablo Isaza 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