mango
mango

Reputation: 1

How do I add a multi guild thing in Discord.js

I'm working on this mute code:

if (cmd === "mute") {
      if (
        message.member.permissions.has(
          "ADMINISTRATOR",
          "KICK_MEMBERS",
          "BAN_MEMBERS",
          "MANAGE_ROLES"
        )
      ) {
        const target = message.mentions.members.first();
        if (target) {
          let mainRole = message.guild.roles.cache.find(
            (role) => role.name === "{🍁}Scouts (VERIFIED)"
          );
          let muteRole = message.guild.roles.cache.find(
            (role) => role.name === "Muted"
          );

          let memberTarget = message.guild.members.cache.get(target.id);
          // timer mute
          if (!args[1]) {
            memberTarget.roles.remove(mainRole.id);
            memberTarget.roles.add(muteRole.id);
            message.channel.send(`<@${memberTarget.user.id}> has been muted`);
            return;
          }
          // manually mute
          memberTarget.roles.remove(mainRole.id);
          memberTarget.roles.add(muteRole.id);
          message.channel.send(
            `<@${memberTarget.user.id}> has been muted for ${ms(ms(args[1]))}`
          );

          setTimeout(function () {
            memberTarget.roles.remove(muteRole.id);
            memberTarget.roles.add(mainRole.id);
          }, ms(args[1]));
        } else {
          message.channel.send(" I can't mute this member !");
        }
      } else {
        message.channel.send("You can't mute members !");
      }
    }

I'm trying to make it so that I won't have to keep changing

let mainRole = message.guild.roles.cache.find( (role) => role.name === "{🍁}Scouts (VERIFIED)" )"

instead, I'm trying to make this work on multiple servers/guilds without having to change it. How can I achieve that?

Upvotes: 0

Views: 796

Answers (1)

Zero
Zero

Reputation: 2286

You may check if the role exists in that guild if it doesn't create one!

if(!muteRole) {
const muteRole = 
message.guild.roles.create({
  data: {
    name: "Muted",
  },
  reason: 'Creating Mute role',
});
message.guild.channels.cache.forEach(async (channel, id) => {
             await channel.createOverwrite(muteRole, {
                SEND_MESSAGES: false,
                MANAGE_MESSAGES: false,
                READ_MESSAGES: false,
                ADD_REACTIONS: false
             });
          });
memberTarget.roles.set([]); // removed all roles 
memberTarget.roles.add(muteRole.id);
return message.channel.send("Mute role not found! Created Muted Role and muted user ");
} 

This would allow your bot to create a role if none is present in that guild and the GuildMemberRolesManager#set([]) would remove all the roles from the user so you don't have to remove "specific" roles each time!

Upvotes: 1

Related Questions