diff --git a/backend/src/plugins/Automod/functions/checkAndUpdateCooldown.ts b/backend/src/plugins/Automod/functions/applyCooldown.ts similarity index 63% rename from backend/src/plugins/Automod/functions/checkAndUpdateCooldown.ts rename to backend/src/plugins/Automod/functions/applyCooldown.ts index 6338d698..40a64acb 100644 --- a/backend/src/plugins/Automod/functions/checkAndUpdateCooldown.ts +++ b/backend/src/plugins/Automod/functions/applyCooldown.ts @@ -2,23 +2,13 @@ import { GuildPluginData } from "knub"; import { convertDelayStringToMS } from "../../../utils"; import { AutomodContext, AutomodPluginType, TRule } from "../types"; -export function checkAndUpdateCooldown( - pluginData: GuildPluginData, - rule: TRule, - context: AutomodContext, -) { +export function applyCooldown(pluginData: GuildPluginData, rule: TRule, context: AutomodContext) { const cooldownKey = `${rule.name}-${context.user?.id}`; if (cooldownKey) { - if (pluginData.state.cooldownManager.isOnCooldown(cooldownKey)) { - return true; - } - const cooldownTime = convertDelayStringToMS(rule.cooldown, "s"); if (cooldownTime) { pluginData.state.cooldownManager.setCooldown(cooldownKey, cooldownTime); } } - - return false; } diff --git a/backend/src/plugins/Automod/functions/checkCooldown.ts b/backend/src/plugins/Automod/functions/checkCooldown.ts new file mode 100644 index 00000000..f0c665c4 --- /dev/null +++ b/backend/src/plugins/Automod/functions/checkCooldown.ts @@ -0,0 +1,14 @@ +import { GuildPluginData } from "knub"; +import { AutomodContext, AutomodPluginType, TRule } from "../types"; + +export function checkCooldown(pluginData: GuildPluginData, rule: TRule, context: AutomodContext) { + const cooldownKey = `${rule.name}-${context.user?.id}`; + + if (cooldownKey) { + if (pluginData.state.cooldownManager.isOnCooldown(cooldownKey)) { + return true; + } + } + + return false; +} diff --git a/backend/src/plugins/Automod/functions/runAutomod.ts b/backend/src/plugins/Automod/functions/runAutomod.ts index e9c2e3a7..0739fdaf 100644 --- a/backend/src/plugins/Automod/functions/runAutomod.ts +++ b/backend/src/plugins/Automod/functions/runAutomod.ts @@ -7,7 +7,8 @@ import { CleanAction } from "../actions/clean"; import { AutomodTriggerMatchResult } from "../helpers"; import { availableTriggers } from "../triggers/availableTriggers"; import { AutomodContext, AutomodPluginType } from "../types"; -import { checkAndUpdateCooldown } from "./checkAndUpdateCooldown"; +import { applyCooldown } from "./applyCooldown"; +import { checkCooldown } from "./checkCooldown"; export async function runAutomod(pluginData: GuildPluginData, context: AutomodContext) { const userId = context.user?.id || context.member?.id || context.message?.user_id; @@ -46,7 +47,7 @@ export async function runAutomod(pluginData: GuildPluginData, } if (!rule.affects_self && userId && userId === pluginData.client.user?.id) continue; - if (rule.cooldown && checkAndUpdateCooldown(pluginData, rule, context)) { + if (rule.cooldown && checkCooldown(pluginData, rule, context)) { continue; } @@ -84,6 +85,9 @@ export async function runAutomod(pluginData: GuildPluginData, } if (matchResult) { + // Apply cooldowns + if (rule.cooldown) applyCooldown(pluginData, rule, context); + contexts = [context, ...(matchResult.extraContexts || [])]; for (const _context of contexts) {