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,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<Message> newMessages = response.JsonData.Select(
message => new Message
if (searchResponse.JsonData is null)
return 2;
totalMessages = searchResponse.JsonData.TotalMessages;
IEnumerable<Message> 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<Message> 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;