Reputation: 1
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
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