Refactoring scan code.

This commit is contained in:
Filip Strajnar 2024-06-16 10:47:46 +02:00
parent 82fe3813a6
commit c99b9d2714

View file

@ -70,61 +70,22 @@ int finalCode = await CommandLine
int totalMessages = 1; int totalMessages = 1;
int offset = 0; int offset = 0;
if (opt.GuildId is null)
{
Console.WriteLine("Scanning DM messages.");
while (true)
{
// Scanning direct messages.
var response = await client.GetChannelMessages(
opt.ChannelId,
offset,
opt.Author
);
if (response.JsonData is null)
return 2;
IEnumerable<Message> newMessages = response.JsonData.Select(
message => new Message
{
ChannelId = message.ChannelId,
MessageId = message.Id,
Content = message.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) while (offset < totalMessages)
{ {
// Scanning guild messages. var searchResponse = opt.GuildId is null
var response = await client.SearchGuildMessages( ? await client.GetChannelMessages(opt.ChannelId, offset, opt.Author)
opt.GuildId, : await client.SearchGuildMessages(opt.GuildId, offset, opt.Author);
offset,
opt.Author Console.WriteLine(
$"Scan code at offset {offset}: {searchResponse.Response.StatusCode}."
); );
if (response.JsonData is null || response.JsonData.Messages is null) if (searchResponse.JsonData is null)
return 3; return 2;
totalMessages = response.JsonData.TotalMessages; totalMessages = searchResponse.JsonData.TotalMessages;
IEnumerable<Message> newMessages = response.JsonData.Messages.SelectMany( IEnumerable<Message> newMessages = searchResponse.JsonData.Messages.SelectMany(
message => message =>
message.Select(messagePart => new Message message.Select(messagePart => new Message
{ {
@ -141,12 +102,12 @@ int finalCode = await CommandLine
} }
await db.SaveChangesAsync(); await db.SaveChangesAsync();
Console.WriteLine($"Written {response.JsonData.Messages.Length} messages."); offset += searchResponse.JsonData.Messages.Length;
offset += response.JsonData.Messages.Length; Console.WriteLine(
$"Written {searchResponse.JsonData.Messages.Length} messages. {offset} / {totalMessages}"
);
await Task.Delay(TimeSpan.FromSeconds(2)); await Task.Delay(TimeSpan.FromSeconds(2));
} }
}
return 0; return 0;
}, },