From 2451719155a1fc94154ba30eaecf2797fdc4d9d3 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Fri, 20 Aug 2021 22:34:31 +0300 Subject: [PATCH] Tweaks to member role restoration on unmute --- .../src/plugins/Mutes/functions/clearExpiredMutes.ts | 12 ++++++------ backend/src/plugins/Mutes/functions/unmuteUser.ts | 9 +++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/backend/src/plugins/Mutes/functions/clearExpiredMutes.ts b/backend/src/plugins/Mutes/functions/clearExpiredMutes.ts index 50d6414a..308fa5f1 100644 --- a/backend/src/plugins/Mutes/functions/clearExpiredMutes.ts +++ b/backend/src/plugins/Mutes/functions/clearExpiredMutes.ts @@ -18,17 +18,17 @@ export async function clearExpiredMutes(pluginData: GuildPluginData roleId !== muteRole); for (const toRestore of mute.roles_to_restore) { - if (guildRoles.has(toRestore as Snowflake) && toRestore !== muteRole) newRoles.push(toRestore); + if (guildRoles.has(toRestore) && toRestore !== muteRole && !newRoles.includes(toRestore)) { + newRoles.push(toRestore); + } } - await member.roles.set(newRoles as Snowflake[]); + await member.roles.set(newRoles); } lock.unlock(); diff --git a/backend/src/plugins/Mutes/functions/unmuteUser.ts b/backend/src/plugins/Mutes/functions/unmuteUser.ts index fd32fbc5..403d37d8 100644 --- a/backend/src/plugins/Mutes/functions/unmuteUser.ts +++ b/backend/src/plugins/Mutes/functions/unmuteUser.ts @@ -43,12 +43,13 @@ export async function unmuteUser( } if (existingMute?.roles_to_restore) { const guildRoles = pluginData.guild.roles.cache; - let newRoles = [...member.roles.cache.keys()]; - newRoles = muteRole && newRoles.includes(muteRole) ? newRoles.splice(newRoles.indexOf(muteRole), 1) : newRoles; + const newRoles = [...member.roles.cache.keys()].filter(roleId => roleId !== muteRole); for (const toRestore of existingMute.roles_to_restore) { - if (guildRoles.has(toRestore as Snowflake) && toRestore !== muteRole) newRoles.push(toRestore); + if (guildRoles.has(toRestore) && toRestore !== muteRole && !newRoles.includes(toRestore)) { + newRoles.push(toRestore); + } } - await member.roles.set(newRoles as Snowflake[]); + await member.roles.set(newRoles); } lock.unlock();