Estoy tratando de mover a todos los usuarios de un VC con un rol específico, por ejemplo: !summon @role
Con eso, todos los usuarios con ese rol específico deben ir al VC donde el usuario escribió ese comando
Por el momento mi código se ve así:
else if (command === 'summon') { const channel = message.member.voice.channel; message.guild.members.cache.forEach(member => { member.voice.setChannel(channel); }); message.channel.send(`${message.author} users moved to your channel!`); }Por el momento estoy moviendo a todos los usuarios, sin embargo, solo quiero usuarios con el rol informado
Traté de usar:
message.mentions.roles.forEach(member => { member.setChannel(channel); });Pero sin exito... alguien me puede ayudar con este problema?
Puedes intentar reemplazar
message.guild.members.cache.forEach(member => { member.voice.setChannel(channel); });con
message.guild.members.cache.forEach(member => { if(member.roles.cache.has(message.mentions.roles.first()) { member.voice.setChannel(channel); } } Dado que member.roles.cache es una Collection , tiene una función .has . Tomamos la mención del primer rol del mensaje usando message.mentions.roles.first() y verificamos si existe en los roles actuales del usuario usando member.roles.cache.has() . Si el usuario tiene el primer rol mencionado en el mensaje, la función devuelve true y podemos mover el al canal especificado. Espero que esto ayude, no te olvides de https://discord.js.org/#/docs para obtener documentación, puede ser bastante útil 😅.