Fix getting last message when there's no date range

Fixes #137
pull/145/head
Alexey Golub 6 years ago
parent e89f2735a0
commit 6531462220

@ -41,10 +41,15 @@ namespace DiscordChatExporter.Core.Services
: new AuthenticationHeaderValue(token.Value);
// Add parameters
foreach (var parameter in parameters)
foreach (var parameter in parameters.ExceptBlank())
{
var key = parameter.SubstringUntil("=");
var value = parameter.SubstringAfter("=");
// Skip empty values
if (value.IsBlank())
continue;
request.RequestUri = request.RequestUri.SetQueryParameter(key, value);
}
@ -123,13 +128,9 @@ namespace DiscordChatExporter.Core.Services
{
var result = new List<Message>();
// Get the snowflakes for the selected range
var firstId = from != null ? from.Value.ToSnowflake() : "0";
var lastId = to != null ? to.Value.ToSnowflake() : DateTime.MaxValue.ToSnowflake();
// Get the last message
var response = await GetApiResponseAsync(token, "channels", $"{channelId}/messages",
"limit=1", $"before={lastId}");
"limit=1", $"before={to?.ToSnowflake()}");
var lastMessage = response.Select(ParseMessage).FirstOrDefault();
// If the last message doesn't exist or it's outside of range - return
@ -140,7 +141,7 @@ namespace DiscordChatExporter.Core.Services
}
// Get other messages
var offsetId = firstId;
var offsetId = from?.ToSnowflake() ?? "0";
while (true)
{
// Get message batch

Loading…
Cancel
Save