From cc124b914b43f98382f524ca647c188256acf578 Mon Sep 17 00:00:00 2001 From: FloatingMilkshake Date: Fri, 12 Jun 2026 21:17:01 -0400 Subject: [PATCH] Pardon first image scam filter match, adjust warning reason --- Events/MessageEvent.cs | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/Events/MessageEvent.cs b/Events/MessageEvent.cs index 1df4be53..8826fd92 100644 --- a/Events/MessageEvent.cs +++ b/Events/MessageEvent.cs @@ -781,9 +781,34 @@ private static async Task RunScamImageFilterAsync(DiscordClient client, Mo else Program.discord.Logger.LogDebug("Message {messageId} in {channelId} by user {userId} triggered scam image URL filter", message.Id, channel.Id, message.Author.Id); - await DeleteAndWarnAsync(message, "Attempted scam message", client, wasAutoModBlock: wasAutoModBlock, messageContentOverride: messageContentOverride); + await DiscordHelpers.ThreadChannelAwareDeleteMessageAsync(message); - return true; + string reason = "Possible scam message"; + + if (!Program.redis.SetContains("scamMessagePardoned", message.Author.Id.ToString())) + { + await Program.redis.SetAddAsync("scamMessagePardoned", message.Author.Id.ToString()); + string output = $"{Program.cfgjson.Emoji.Information} {message.Author.Mention}, your message was deleted because it matched patterns of common scam messages." + + $"\nWhen sending multiple images, please either send them separately or include some text in your message to avoid triggering filters."; + DiscordMessage msg = await channel.SendMessageAsync(output); + await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, DiscordHelpers.MessageLink(msg), messageContentOverride: messageContentOverride); + await InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, reason, DiscordHelpers.MessageLink(msg), messageContentOverride: messageContentOverride); + return true; + } + else + { + string output = $"{Program.cfgjson.Emoji.Denied} {message.Author.Mention} was automatically warned: **{reason.Replace("`", "\\`").Replace("*", "\\*")}**\n" + + $"When sending multiple images, please either send them separately or include some text in your message to avoid triggering filters."; + DiscordMessageBuilder messageBuilder = new(); + messageBuilder.WithContent(output); + DiscordMessage msg = await channel.SendMessageAsync(output); + + await InvestigationsHelpers.SendInfringingMessaageAsync("mod", message, reason, null, messageContentOverride: messageContentOverride); + var warning = await WarningHelpers.GiveWarningAsync(message.Author, client.CurrentUser, reason, contextMessage: msg, channel, " automatically "); + await InvestigationsHelpers.SendInfringingMessaageAsync("investigations", message, reason, warning.ContextLink, messageContentOverride: messageContentOverride); + + return true; + } } return false; }