From 03c12411756ef2c96e79dc90b9b610bbe16e8d65 Mon Sep 17 00:00:00 2001 From: Dominik Koch Date: Fri, 6 Dec 2024 14:52:11 +0100 Subject: [PATCH] feat(cleanup): add koira log cleanup spport --- PluralKit.Bot/Services/LoggerCleanService.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/PluralKit.Bot/Services/LoggerCleanService.cs b/PluralKit.Bot/Services/LoggerCleanService.cs index af4ff011..2d83f928 100644 --- a/PluralKit.Bot/Services/LoggerCleanService.cs +++ b/PluralKit.Bot/Services/LoggerCleanService.cs @@ -44,6 +44,7 @@ public class LoggerCleanService private static readonly Regex _SkyraRegex = new("https://discord.com/channels/(\\d{17,19})/(\\d{17,19})/(\\d{17,19})"); private static readonly Regex _AnnabelleRegex = new("```\n(\\d{17,19})\n```"); private static readonly Regex _AnnabelleRegexFuzzy = new("\\ A message from \\*\\*[\\w.]{2,32}\\*\\* \\(`(\\d{17,19})`\\) was deleted in <#\\d{17,19}>"); + private static readonly Regex _koiraRegex = new("\\*\\*ID:\\*\\* \\[(\\d{17,19})\\]"); private static readonly Regex _VortexRegex = new("`\\[(\\d\\d:\\d\\d:\\d\\d)\\]` .* \\(ID:(\\d{17,19})\\).* <#\\d{17,19}>:"); @@ -82,6 +83,7 @@ public class LoggerCleanService new LoggerBot("Dozer", 356535250932858885, ExtractDozer), new LoggerBot("Skyra", 266624760782258186, ExtractSkyra), new LoggerBot("Annabelle", 231241068383961088, ExtractAnnabelle, fuzzyExtractFunc: ExtractAnnabelleFuzzy), + new LoggerBot("Koira", 1247013404569239624, ExtractKoira) }.ToDictionary(b => b.Id); private static Dictionary _botsByApplicationId @@ -427,6 +429,17 @@ public class LoggerCleanService : null; } + private static ulong? ExtractKoira(Message msg) + { + // Embed, Message title field: "Message Deleted", description contains "**ID:** [[id]]" + // Example: "**ID:** [347077478726238228]" + var embed = msg.Embeds?.FirstOrDefault(); + if (embed == null) return null; + if (!(embed.Title?.StartsWith("Message Deleted") ?? false)) return null; + var match = _koiraRegex.Match(embed.Description); + return match.Success ? ulong.Parse(match.Groups[1].Value) : null; + } + public class LoggerBot { public ulong Id; @@ -452,4 +465,4 @@ public class LoggerCleanService { public ulong User { get; set; } } -} \ No newline at end of file +}