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

257
Vistas
Discordbot lee mensajes DM y los registra

Quiero que mi bot lea solo los mensajes de DM y los envíe a un canal de discordia, pero mi código envía spam al mensaje infinitamente, envía spam 5 veces y luego se detiene durante unos segundos y luego vuelve a enviar spam, además, el bot no lee solo los mensajes de DM y lee también los mensajes del gremio, así que si envío algo en el gremio, el contenido se envía como spam.

¿Qué quiero? Si alguien envía '¡Hola!' (contenido del mensaje) al bot en DM, el bot debe enviar "¡Hola!" (contenido del mensaje) al canal especificado (canal de registros).

 const Discord = require("discord.js"); const client = new Discord.Client({ intents:['DIRECT_MESSAGES'], partials: ['MESSAGE'] }); client.on('ready', () =>{ console.log('Bot Online!'); //bot successfully logged in }); client.on('message', async (message) => { await client.channels.cache.get('CHANNEL ID').send(message.content); console.log(message.content); //log messages return; }); // Authorizing client.login('LOGIN');
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

La cosa es que cuando el bot envía el mensaje al canal de registro. También desencadena el evento de message nuevamente. Para evitar esto, simplemente agregue

 if(message.author.bot) return;

Tu código se vería como

 client.on('message', async (message) => { if(message.author.bot) return; await client.channels.cache.get('CHANNEL ID').send(message.content); console.log(message.content); //log messages return; });

Si solo quieres recibir mensajes directos

Puedes usar

 if(message.guild) return;
 client.on('message', async (message) => { if(message.guild) return; await client.channels.cache.get('CHANNEL ID').send(message.content); console.log(message.content); //log messages return; });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Verificar si el mensaje proviene de un gremio debería detener esto. Regrese antes si el mensaje.guild es verdadero (en message.guild de message.guild es null , que es un valor falso)

 if (message.guild) return;

Pondría esto en la parte superior de la devolución de llamada del evento para que nada se ejecute si está en un gremio

about 4 years ago · Juan Pablo Isaza Denunciar

0

Para Discord.js v13 use el CANAL parcial también, espero que funcione

Por cierto

 if (message.channel.type != "DM") return;
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