From 6caf7b1304aee367f2375ebbf09250d87ddfa711 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Sun, 2 Aug 2020 03:23:12 +0300 Subject: [PATCH] automod: fix spam filters counting edits multiple times --- .../plugins/Automod/events/runAutomodOnMessage.ts | 5 +++++ .../functions/clearRecentActionsForMessage.ts | 13 +++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 backend/src/plugins/Automod/functions/clearRecentActionsForMessage.ts diff --git a/backend/src/plugins/Automod/events/runAutomodOnMessage.ts b/backend/src/plugins/Automod/events/runAutomodOnMessage.ts index 2fb7e632..18b13a79 100644 --- a/backend/src/plugins/Automod/events/runAutomodOnMessage.ts +++ b/backend/src/plugins/Automod/events/runAutomodOnMessage.ts @@ -4,6 +4,7 @@ import { AutomodContext, AutomodPluginType } from "../types"; import { runAutomod } from "../functions/runAutomod"; import { addRecentActionsFromMessage } from "../functions/addRecentActionsFromMessage"; import moment from "moment-timezone"; +import { clearRecentActionsForMessage } from "../functions/clearRecentActionsForMessage"; export function runAutomodOnMessage(pluginData: PluginData, message: SavedMessage, isEdit: boolean) { const user = pluginData.client.users.get(message.user_id); @@ -17,6 +18,10 @@ export function runAutomodOnMessage(pluginData: PluginData, m }; pluginData.state.queue.add(async () => { + if (isEdit) { + clearRecentActionsForMessage(pluginData, context); + } + addRecentActionsFromMessage(pluginData, context); await runAutomod(pluginData, context); }); diff --git a/backend/src/plugins/Automod/functions/clearRecentActionsForMessage.ts b/backend/src/plugins/Automod/functions/clearRecentActionsForMessage.ts new file mode 100644 index 00000000..424a80c5 --- /dev/null +++ b/backend/src/plugins/Automod/functions/clearRecentActionsForMessage.ts @@ -0,0 +1,13 @@ +import { AutomodContext, AutomodPluginType } from "../types"; +import { PluginData } from "knub"; +import { RECENT_ACTION_EXPIRY_TIME, RecentActionType } from "../constants"; +import { getEmojiInString, getRoleMentions, getUrlsInString, getUserMentions } from "../../../utils"; + +export function clearRecentActionsForMessage(pluginData: PluginData, context: AutomodContext) { + const globalIdentifier = context.message.user_id; + const perChannelIdentifier = `${context.message.channel_id}-${context.message.user_id}`; + + pluginData.state.recentActions = pluginData.state.recentActions.filter(act => { + return act.identifier !== globalIdentifier && act.identifier !== perChannelIdentifier; + }); +}