diff --git a/apps/bot-discord/src/utils/muteMember.js b/apps/bot-discord/src/utils/muteMember.js index 6e225d5..6620b29 100644 --- a/apps/bot-discord/src/utils/muteMember.js +++ b/apps/bot-discord/src/utils/muteMember.js @@ -19,7 +19,7 @@ export default async function muteMember(config, member, { duration, reason, sup config.discord.mute.takeRoles ) { if (member.roles.cache.get(takeRole)) { - takenRoles.push(takeRoles); + takenRoles.push(takeRole); } } @@ -42,9 +42,9 @@ export default async function muteMember(config, member, { duration, reason, sup } }); - if (client.mutes.has(member.id)) { - clearTimeout(client.mutes.get(member.id)) - client.mutes.delete(member.id); + if (member.client.mutes.has(member.id)) { + clearTimeout(member.client.mutes.get(member.id)) + member.client.mutes.delete(member.id); } } else { await member.client.db.collection('muted').insertOne({ @@ -59,11 +59,18 @@ export default async function muteMember(config, member, { duration, reason, sup // Remove the roles, give defined roles. if (!existingMute) { - member.roles.remove(takenRoles); - member.roles.add(supportMute ? - config.discord.mute.giveRoles : - config.discord.mute.supportGiveRoles - ); + const currentRoles = member.roles.map((role) => role.id); + let setRoles = []; + for (const role of currentRoles) { + if (takenRoles.includes(role)) continue; + setRoles.push(role); + } + + setRoles = setRoles.concat(supportMute ? + config.discord.mute.supportGiveRoles : + config.discord.mute.giveRoles) + const member = await member.roles.set(takenRoles); + console.log(member) } @@ -74,7 +81,7 @@ export default async function muteMember(config, member, { duration, reason, sup taken_roles: takenRoles, expires, support_mute: supportMute - }, member.client.mutes, member.client); + }, member.client.mutes, member.client, config); // Return parsed time for the mute command to resolve. return expires; diff --git a/apps/bot-discord/src/utils/setMuteTimeout.js b/apps/bot-discord/src/utils/setMuteTimeout.js index 48dc262..00755e7 100644 --- a/apps/bot-discord/src/utils/setMuteTimeout.js +++ b/apps/bot-discord/src/utils/setMuteTimeout.js @@ -1,4 +1,4 @@ -export default async function setMuteTimeout(mute, mutes, client) { +export default async function setMuteTimeout(mute, mutes, client, config) { const duration = (mute.expires - Math.floor(new Date() / 1000)) * 1000; mutes.set(mute.user_id, setTimeout(async() => { const guild = await client.guilds.fetch(mute.guild_id);