Tengo un problema con mi sistema de silencio. Si envío +mute @member no otorga un rol.
client.on('message', message => { if (message.content === "+mute") { if (!message.member.permissions.has("MANAGE_ROLES")) { return message.reply({content: `You need permissions to use command`}) const mutedRole = message.guild.roles.cache.get('<986283559092359228>'); if (!mutedRole) return message.reply('There is no Muted role on this server'); const member = message.mentions.members.first(); member.roles.add(role); message.channel.send(member + 'has Been Muted'); } else { message.channel.send("You didn't mention the user to mute!") } } })Usted define su rol de silenciamiento como mutedRole , pero cuando le da un rol a un miembro, usa el role , que no existe, por lo que la solución es simple, cambie member.roles.add(role); a member.roles.add(mutedRole);
Debe escribir solo la ID del rol al definir muteRole, así que cambie esto
const mutedRole = message.guild.roles.cache.get('<986283559092359228>');A esto
const mutedRole = message.guild.roles.cache.get('986283559092359228'); Luego use el mismo nombre mutedRole en role.add() y use try/catch porque el bot no puede asignar un rol que sea más alto que su rol más alto, así que intente:
try { member.roles.add(mutedRole); } catch (err) { console.log(err) message.channel.send({content: `Role is higher than my highest role!`}) }Solo para agregar, puedes hacer directamente
message.channel.send({content: `${member} has Been Muted`}); También debe verificar si el usuario ya tiene el mutedRole o no.