diff --git a/src/plugins/Cases.ts b/src/plugins/Cases.ts index 1ea0b09e..18a1b5a0 100644 --- a/src/plugins/Cases.ts +++ b/src/plugins/Cases.ts @@ -266,4 +266,19 @@ export class CasesPlugin extends ZeppelinPlugin { return null; } } + + public async getCaseTypeAmountForUserId(userID: string, type: CaseTypes) { + const cases = (await this.cases.getByUserId(userID)).filter(c => !c.is_hidden); + let typeAmount = 0; + + if (cases.length > 0) { + cases.forEach(singleCase => { + if (singleCase.type == type.valueOf()) { + typeAmount++; + } + }); + } + + return typeAmount; + } } diff --git a/src/plugins/ModActions.ts b/src/plugins/ModActions.ts index 6c777811..38ffbaa8 100644 --- a/src/plugins/ModActions.ts +++ b/src/plugins/ModActions.ts @@ -51,6 +51,7 @@ interface IModActionsPluginConfig { ban_message: string; alert_on_rejoin: boolean; alert_channel: string; + warn_amount_notify_threshhold: number; can_note: boolean; can_warn: boolean; @@ -97,6 +98,7 @@ export class ModActionsPlugin extends ZeppelinPlugin { ban_message: "You have been banned from {guildName}. Reason given: {reason}", alert_on_rejoin: false, alert_channel: null, + warn_amount_notify_threshhold: 5, can_note: false, can_warn: false, @@ -444,6 +446,14 @@ export class ModActionsPlugin extends ZeppelinPlugin { ), ); + const priorWarnAmount = (await casesPlugin.getCaseTypeAmountForUserId(memberToWarn.id, CaseTypes.Warn)) - 1; + if (priorWarnAmount >= config.warn_amount_notify_threshhold) { + this.sendErrorMessage( + msg.channel, + `The user already has ${(await priorWarnAmount) - 1} prior warnings ${msg.author.mention}!`, + ); + } + this.serverLogs.log(LogType.MEMBER_WARN, { mod: stripObjectToScalars(mod.user), member: stripObjectToScalars(memberToWarn, ["user", "roles"]),