From 1c3aa23a76e174947a83162d72eade1e35d85ae4 Mon Sep 17 00:00:00 2001 From: Mira <56395159+TheXorog@users.noreply.github.com> Date: Wed, 7 May 2025 18:48:06 +0200 Subject: [PATCH] fix: Delete old deleted message logs (they stay uploaded to discord) --- ProjectMakoto/Bot.cs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/ProjectMakoto/Bot.cs b/ProjectMakoto/Bot.cs index 9dcf4ae0..2883d695 100644 --- a/ProjectMakoto/Bot.cs +++ b/ProjectMakoto/Bot.cs @@ -334,6 +334,7 @@ public sealed class Bot } }); + _ = this.CleanupOldPrunedMessages().Add(this); _ = this.ProcessDeletionRequests().Add(this); }).Add(this).IsVital(); @@ -522,6 +523,42 @@ public sealed class Bot Environment.FailFast("Failed to exit"); } + private async Task CleanupOldPrunedMessages() + { + _ = new Func(async () => + { + _ = this.CleanupOldPrunedMessages().Add(this); + }).CreateScheduledTask(DateTime.UtcNow.AddHours(24)); + + foreach (var guildDirectory in Directory.GetDirectories("WebServer").Select(x => new DirectoryInfo(x))) + { + if (guildDirectory.GetDirectories().Any(x => x.Name.Equals("DeletedMessages", StringComparison.CurrentCultureIgnoreCase))) + { + var deletedMessagesDirectory = guildDirectory.GetDirectories().First(x => x.Name.Equals("DeletedMessages", StringComparison.CurrentCultureIgnoreCase)); + foreach (var deletedMessageFile in deletedMessagesDirectory.GetFiles()) + { + if (deletedMessageFile.LastWriteTimeUtc.GetTimespanSince() > TimeSpan.FromDays(30)) + { + Log.Information("Deleting '{File}'..", deletedMessageFile.FullName); + deletedMessageFile.Delete(); + } + } + + if (deletedMessagesDirectory.GetFiles().Length == 0) + { + Log.Information("Deleting '{File}'..", deletedMessagesDirectory.FullName); + deletedMessagesDirectory.Delete(); + } + } + + if (guildDirectory.GetFiles().Length == 0 && guildDirectory.GetDirectories().Length == 0) + { + Log.Information("Deleting '{File}'..", guildDirectory.FullName); + guildDirectory.Delete(); + } + } + } + private async Task ProcessDeletionRequests() { _ = new Func(async () =>