From ed02d0965c40dd8720e6f8c3ba299188f61e94ba Mon Sep 17 00:00:00 2001 From: Ben Richeson Date: Wed, 30 Aug 2023 14:03:54 -0400 Subject: [PATCH] feat: option to trigger antiraid_level only on change --- .../plugins/Automod/events/runAutomodOnAntiraidLevel.ts | 6 ++++-- .../src/plugins/Automod/functions/setAntiraidLevel.ts | 3 ++- backend/src/plugins/Automod/triggers/antiraidLevel.ts | 9 +++++++++ backend/src/plugins/Automod/types.ts | 1 + 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/backend/src/plugins/Automod/events/runAutomodOnAntiraidLevel.ts b/backend/src/plugins/Automod/events/runAutomodOnAntiraidLevel.ts index 2dfc4bacd..05dbb6f3e 100644 --- a/backend/src/plugins/Automod/events/runAutomodOnAntiraidLevel.ts +++ b/backend/src/plugins/Automod/events/runAutomodOnAntiraidLevel.ts @@ -5,13 +5,15 @@ import { AutomodContext, AutomodPluginType } from "../types"; export async function runAutomodOnAntiraidLevel( pluginData: GuildPluginData, - level: string | null, + newLevel: string | null, + oldLevel: string | null, user?: User, ) { const context: AutomodContext = { timestamp: Date.now(), antiraid: { - level, + level: newLevel, + oldLevel, }, user, }; diff --git a/backend/src/plugins/Automod/functions/setAntiraidLevel.ts b/backend/src/plugins/Automod/functions/setAntiraidLevel.ts index a21d58b08..c76555c22 100644 --- a/backend/src/plugins/Automod/functions/setAntiraidLevel.ts +++ b/backend/src/plugins/Automod/functions/setAntiraidLevel.ts @@ -9,10 +9,11 @@ export async function setAntiraidLevel( newLevel: string | null, user?: User, ) { + const oldLevel = pluginData.state.cachedAntiraidLevel; pluginData.state.cachedAntiraidLevel = newLevel; await pluginData.state.antiraidLevels.set(newLevel); - runAutomodOnAntiraidLevel(pluginData, newLevel, user); + runAutomodOnAntiraidLevel(pluginData, newLevel, oldLevel, user); const logs = pluginData.getPlugin(LogsPlugin); diff --git a/backend/src/plugins/Automod/triggers/antiraidLevel.ts b/backend/src/plugins/Automod/triggers/antiraidLevel.ts index 7c6d17afd..f5caa3f0b 100644 --- a/backend/src/plugins/Automod/triggers/antiraidLevel.ts +++ b/backend/src/plugins/Automod/triggers/antiraidLevel.ts @@ -7,6 +7,7 @@ interface AntiraidLevelTriggerResult {} export const AntiraidLevelTrigger = automodTrigger()({ configType: t.type({ level: tNullable(t.string), + only_on_change: tNullable(t.boolean), }), defaultConfig: {}, @@ -20,6 +21,14 @@ export const AntiraidLevelTrigger = automodTrigger() return; } + if ( + triggerConfig.only_on_change && + context.antiraid.oldLevel !== undefined && + context.antiraid.level === context.antiraid.oldLevel + ) { + return; + } + return { extra: {}, }; diff --git a/backend/src/plugins/Automod/types.ts b/backend/src/plugins/Automod/types.ts index bd3f05ee6..b9900089d 100644 --- a/backend/src/plugins/Automod/types.ts +++ b/backend/src/plugins/Automod/types.ts @@ -130,6 +130,7 @@ export interface AutomodContext { }; antiraid?: { level: string | null; + oldLevel?: string | null; }; threadChange?: { created?: ThreadChannel;