From ee04e1ddcce571d1351322681bd0cc083b37f8f0 Mon Sep 17 00:00:00 2001 From: RogueException Date: Tue, 12 Jul 2016 07:38:37 -0300 Subject: [PATCH] Fixed relative id when retrieving >100 channel message requests. --- src/Discord.Net/API/DiscordAPIClient.cs | 28 +++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/Discord.Net/API/DiscordAPIClient.cs b/src/Discord.Net/API/DiscordAPIClient.cs index 357c2c06a..1a1d4d0c5 100644 --- a/src/Discord.Net/API/DiscordAPIClient.cs +++ b/src/Discord.Net/API/DiscordAPIClient.cs @@ -918,8 +918,19 @@ namespace Discord.API //Was this an empty batch? if (models.Length == 0) break; - result[i] = models; - relativeId = args.RelativeDirection == Direction.Before ? models[0].Id : models[models.Length - 1].Id; + switch (args.RelativeDirection) + { + case Direction.Before: + case Direction.Around: + default: + result[i] = models; + relativeId = models[models.Length - 1].Id; + break; + case Direction.After: + result[runs - i - 1] = models; + relativeId = models[0].Id; + break; + } //Was this an incomplete (the last) batch? if (models.Length != DiscordConfig.MaxMessagesPerBatch) { i++; break; } @@ -927,10 +938,15 @@ namespace Discord.API if (i > 1) { - if (args.RelativeDirection == Direction.Before) - return result.Take(i).SelectMany(x => x).ToImmutableArray(); - else - return result.Take(i).Reverse().SelectMany(x => x).ToImmutableArray(); + switch (args.RelativeDirection) + { + case Direction.Before: + case Direction.Around: + default: + return result.Take(i).SelectMany(x => x).ToImmutableArray(); + case Direction.After: + return result.Skip(runs - i).Take(i).SelectMany(x => x).ToImmutableArray(); + } } else if (i == 1) return result[0];