From c99b9d271441d840679c6892774c76392fb027c2 Mon Sep 17 00:00:00 2001 From: Filip Strajnar Date: Sun, 16 Jun 2024 10:47:46 +0200 Subject: [PATCH] Refactoring scan code. --- DiscordDelete/Program.cs | 99 ++++++++++++---------------------------- 1 file changed, 30 insertions(+), 69 deletions(-) diff --git a/DiscordDelete/Program.cs b/DiscordDelete/Program.cs index 567b79e..3b62207 100644 --- a/DiscordDelete/Program.cs +++ b/DiscordDelete/Program.cs @@ -70,82 +70,43 @@ int finalCode = await CommandLine int totalMessages = 1; int offset = 0; - if (opt.GuildId is null) + while (offset < totalMessages) { - Console.WriteLine("Scanning DM messages."); - while (true) - { - // Scanning direct messages. - var response = await client.GetChannelMessages( - opt.ChannelId, - offset, - opt.Author - ); + var searchResponse = opt.GuildId is null + ? await client.GetChannelMessages(opt.ChannelId, offset, opt.Author) + : await client.SearchGuildMessages(opt.GuildId, offset, opt.Author); - if (response.JsonData is null) - return 2; + Console.WriteLine( + $"Scan code at offset {offset}: {searchResponse.Response.StatusCode}." + ); - IEnumerable newMessages = response.JsonData.Select( - message => new Message + if (searchResponse.JsonData is null) + return 2; + + totalMessages = searchResponse.JsonData.TotalMessages; + + IEnumerable newMessages = searchResponse.JsonData.Messages.SelectMany( + message => + message.Select(messagePart => new Message { - ChannelId = message.ChannelId, - MessageId = message.Id, - Content = message.Content - } - ); + ChannelId = messagePart.ChannelId, + MessageId = messagePart.Id, + Content = messagePart.Content + }) + ); - foreach (var newMessage in newMessages) - { - if (!db.Messages.Any(message => message.MessageId == newMessage.MessageId)) - await db.AddAsync(newMessage); - } - - await db.SaveChangesAsync(); - Console.WriteLine($"Written {response.JsonData.Length} messages."); - offset += 50; - - await Task.Delay(TimeSpan.FromSeconds(2)); - } - } - else - { - Console.WriteLine("Scanning guild messages."); - while (offset < totalMessages) + foreach (var newMessage in newMessages) { - // Scanning guild messages. - var response = await client.SearchGuildMessages( - opt.GuildId, - offset, - opt.Author - ); - - if (response.JsonData is null || response.JsonData.Messages is null) - return 3; - - totalMessages = response.JsonData.TotalMessages; - - IEnumerable newMessages = response.JsonData.Messages.SelectMany( - message => - message.Select(messagePart => new Message - { - ChannelId = messagePart.ChannelId, - MessageId = messagePart.Id, - Content = messagePart.Content - }) - ); - - foreach (var newMessage in newMessages) - { - if (!db.Messages.Any(message => message.MessageId == newMessage.MessageId)) - await db.AddAsync(newMessage); - } - - await db.SaveChangesAsync(); - Console.WriteLine($"Written {response.JsonData.Messages.Length} messages."); - offset += response.JsonData.Messages.Length; - - await Task.Delay(TimeSpan.FromSeconds(2)); + if (!db.Messages.Any(message => message.MessageId == newMessage.MessageId)) + await db.AddAsync(newMessage); } + + await db.SaveChangesAsync(); + offset += searchResponse.JsonData.Messages.Length; + Console.WriteLine( + $"Written {searchResponse.JsonData.Messages.Length} messages. {offset} / {totalMessages}" + ); + await Task.Delay(TimeSpan.FromSeconds(2)); } return 0;