user15139593
user15139593

Reputation:

How to add roles to every mentioned users on my discord server

My current code works like this. If I type command @rolename @user, my bot gives the mentioned user the mentioned role.

But I want to add every mentioned user the mentioned role: command @rolename @user1 @user2 @user3

Here is my code, but it only adds the role to the first member:

const { MessageEmbed } = require('discord.js')

module.exports = {
  name: "addrole",
  aliases: ["role", "P!role"],
  category: "moderation",
  description: "Add role to any user",
  run: async (client, message, args) => {
   if (!message.member.hasPermission("MANAGE_ROLES")) {
      return message.channel.send("sorry you need permission to mute someone");
    }
    if (!message.guild.me.hasPermission("MANAGE_ROLES")) {
      return message.channel.send("I do not have permission to mute");
    } 
    let target = message.mentions.members.first();
    
    if(!target) return message.reply(`<:no:677902165859237894>please mention user!`)
    
    let arole = message.mentions.roles.first();
    
    if(!arole) return message.reply(`<:no:677902165859237894>please mention role for add!`)
    
    let ticon = target.user.avatarURL({ dynamic: true, size: 2048 });
    let aicon = message.author.avatarURL({ dynamic: true, size: 2048 });
    
      const embed = new MessageEmbed()
      
      .setColor("RANDOM")
      .setDescription(`<a:ok_:731369076315652167>changed role for ${target.user.username} added ${arole}`)
      
      await message.channel.send(embed)
      
      target.roles.add(arole)
  }
}

Upvotes: 1

Views: 72

Answers (1)

Zsolt Meszaros
Zsolt Meszaros

Reputation: 23161

message.mentions.members returns a collection so you can use the .each method to add role to every mentioned member:

if (!message.member.hasPermission('MANAGE_ROLES')) {
  return message.channel.send('sorry you need permission to mute someone');
}
if (!message.guild.me.hasPermission('MANAGE_ROLES')) {
  return message.channel.send('I do not have permission to mute');
}

const { members } = message.mentions;

if (!members.size) {
  return message.reply(`<:no:677902165859237894> please mention a user!`);
}

const role = message.mentions.roles.first();

if (!role) {
  return message.reply(
    `<:no:677902165859237894>please mention role for add!`,
  );
}

const embed = new MessageEmbed().setColor('RANDOM');

members.each((member) => {
  member.roles.add(role);
  embed.setDescription(
    `<a:ok_:731369076315652167> role changed for ${member.user}, added ${role}`,
  );
  message.channel.send(embed);
});

Upvotes: 1

Related Questions