diff --git a/backend/src/plugins/Automod/AutomodPlugin.ts b/backend/src/plugins/Automod/AutomodPlugin.ts index 9a9cbc76..602db445 100644 --- a/backend/src/plugins/Automod/AutomodPlugin.ts +++ b/backend/src/plugins/Automod/AutomodPlugin.ts @@ -81,6 +81,10 @@ const configPreprocessor: ConfigPreprocessorFn = (options) => rule["affects_bots"] = false; } + if (rule["affects_self"] == null) { + rule["affects_self"] = false; + } + // Loop through the rule's triggers if (rule["triggers"]) { for (const triggerObj of rule["triggers"]) { diff --git a/backend/src/plugins/Automod/functions/runAutomod.ts b/backend/src/plugins/Automod/functions/runAutomod.ts index 736a14c0..4f323e07 100644 --- a/backend/src/plugins/Automod/functions/runAutomod.ts +++ b/backend/src/plugins/Automod/functions/runAutomod.ts @@ -23,11 +23,6 @@ export async function runAutomod(pluginData: GuildPluginData, const channel = channelOrThread?.isThread() ? channelOrThread.parent : channelOrThread; const categoryId = channel?.parentId; - // Don't apply Automod on Zeppelin itself - if (userId && userId === pluginData.client.user?.id) { - return; - } - const config = await pluginData.config.getMatchingConfig({ channelId, categoryId, @@ -39,6 +34,7 @@ export async function runAutomod(pluginData: GuildPluginData, for (const [ruleName, rule] of Object.entries(config.rules)) { if (rule.enabled === false) continue; if (!rule.affects_bots && (!user || user.bot) && !context.counterTrigger && !context.antiraid) continue; + if (!rule.affects_self && userId && userId === pluginData.client.user?.id) continue; if (rule.cooldown && checkAndUpdateCooldown(pluginData, rule, context)) { continue; diff --git a/backend/src/plugins/Automod/types.ts b/backend/src/plugins/Automod/types.ts index 2f8107fc..8fee6e7d 100644 --- a/backend/src/plugins/Automod/types.ts +++ b/backend/src/plugins/Automod/types.ts @@ -23,6 +23,7 @@ export const Rule = t.type({ name: t.string, presets: tNullable(t.array(t.string)), affects_bots: t.boolean, + affects_self: t.boolean, triggers: t.array(t.partial(AvailableTriggers.props)), actions: t.partial(AvailableActions.props), cooldown: tNullable(t.string),