quiero que el comando envíe dm a 1 miembro, luego espere 5 segundos y luego envíe dm al siguiente miembro hasta que el bot envíe dm a todos los miembros
este es el codigo que tengo
if (command === 'dmall') { message.guild.members.cache.forEach(async (member) => { const messageSent = await member.send(args[0]); console.log(messageSent); await wait(5000); }); }el error que recibo es miembro. enviar no es una función
esto es lo de esperar no tiene problemas
let wait = (ms) => { if (!ms) throw new TypeError("Time isn't specified"); return new Promise((resolve) => setTimeout(resolve, ms)); };Tu código está funcionando para mí. Entonces, el problema no está en su código que probablemente brinde.
Debe agregar la intención GUILD_MEMBERS a su cliente para leer todos los datos de usuario de los miembros del gremio.
Debe reemplazar su código con esto al crear una nueva instancia de cliente :
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MEMBERS] }); (O si tiene otras intenciones, simplemente agregue Intents.FLAGS.GUILD_MEMBERS ).
Nota: esta intención es privilegiada. Lo que significa que si agrega estas intenciones a su bot, ya no podrá unirse a ningún gremio después de que alcance los 100 gremios hasta que su bot verifique . Si se trata de un bot privado. Entonces estaría bien.
También asegúrese de detectar un error en su código cuando envíe un mensaje a todos los miembros para evitar que su bot se bloquee cuando:
Entonces debería ser:
if (command === 'dmall') { message.guild.members.cache.forEach(async (member) => { const messageSent = await member.send(args[0]) .catch(err => {console.log(err)}); console.log(messageSent); await wait(5000); }); }Dime si funciona o no.