3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-18 23:55:02 +00:00

added role removal mute overrides to automod and spam plugins

This commit is contained in:
roflmaoqwerty 2020-06-21 11:33:14 +10:00
parent 8bf47ff418
commit fa7d5d0526
4 changed files with 48 additions and 17 deletions

View file

@ -153,6 +153,8 @@ export class MutesPlugin extends ZeppelinPlugin<TConfigSchema> {
muteTime: number = null,
reason: string = null,
muteOptions: MuteOptions = {},
removeRolesOnMuteOverride: boolean | string[] = null,
restoreRolesOnMuteOverride: boolean | string[] = null,
): Promise<MuteResult> {
const lock = await this.locks.acquire(`mute-${userId}`);
@ -178,26 +180,28 @@ export class MutesPlugin extends ZeppelinPlugin<TConfigSchema> {
// remove and store any roles to be removed/restored
const currentUserRoles = member.roles;
const memberOptions: MemberOptions = {};
const removeRoles = removeRolesOnMuteOverride ?? config.remove_roles_on_mute;
const restoreRoles = restoreRolesOnMuteOverride ?? config.restore_roles_on_mute;
let rolesToRestore = [];
// remove roles
if (!Array.isArray(config.remove_roles_on_mute)) {
if (config.remove_roles_on_mute) {
if (!Array.isArray(removeRoles)) {
if (removeRoles) {
memberOptions.roles = [];
await member.edit(memberOptions);
}
} else {
memberOptions.roles = currentUserRoles.filter(x => !(<string[]>config.remove_roles_on_mute).includes(x));
memberOptions.roles = currentUserRoles.filter(x => !(<string[]>removeRoles).includes(x));
await member.edit(memberOptions);
}
// set roles to be restored
if (!Array.isArray(config.restore_roles_on_mute)) {
if (config.restore_roles_on_mute) {
if (!Array.isArray(restoreRoles)) {
if (restoreRoles) {
rolesToRestore = currentUserRoles;
}
} else {
rolesToRestore = currentUserRoles.filter(x => (<string[]>config.restore_roles_on_mute).includes(x));
rolesToRestore = currentUserRoles.filter(x => (<string[]>restoreRoles).includes(x));
}
// Apply mute role if it's missing