Tweaks to member role restoration on unmute

This commit is contained in:
Dragory 2021-08-20 22:34:31 +03:00
parent be0f9182a0
commit 2451719155
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
2 changed files with 11 additions and 10 deletions

View file

@ -18,17 +18,17 @@ export async function clearExpiredMutes(pluginData: GuildPluginData<MutesPluginT
const muteRole = pluginData.config.get().mute_role;
if (muteRole) {
await member.roles.remove(muteRole as Snowflake);
await member.roles.remove(muteRole);
}
if (mute.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 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();

View file

@ -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();