Allow certain or all roles to be removed upon mute and readded on unmute (#140)

This commit is contained in:
Nils 2021-02-13 19:04:40 +01:00 committed by GitHub
parent 8e812aab2f
commit a13b0b6fda
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 135 additions and 27 deletions

View file

@ -7,7 +7,7 @@ import humanizeDuration from "humanize-duration";
import { CasesPlugin } from "../../Cases/CasesPlugin";
import { CaseTypes } from "../../../data/CaseTypes";
import { LogType } from "../../../data/LogType";
import { WithRequiredProps } from "../../../utils/typeUtils";
import { MemberOptions } from "eris";
export async function unmuteUser(
pluginData: GuildPluginData<MutesPluginType>,
@ -36,6 +36,14 @@ export async function unmuteUser(
if (muteRole && member.roles.includes(muteRole)) {
await member.removeRole(muteRole);
}
if (existingMute?.roles_to_restore) {
const memberOptions: MemberOptions = {};
const guildRoles = pluginData.guild.roles;
memberOptions.roles = Array.from(
new Set([...existingMute.roles_to_restore, ...member.roles.filter(x => x !== muteRole && guildRoles.has(x))]),
);
member.edit(memberOptions);
}
} else {
console.warn(
`Member ${userId} not found in guild ${pluginData.guild.name} (${pluginData.guild.id}) when attempting to unmute`,