From 6af6f824110e93a9f096df20c1fbdb6485b40348 Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 27 Feb 2023 21:15:28 +1000 Subject: [PATCH] Fix audit log pagination logic --- discord/guild.py | 15 ++++++--------- discord/http.py | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/discord/guild.py b/discord/guild.py index 078a7b8be..96bd1801b 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -3630,7 +3630,7 @@ class Guild(Hashable): if limit is not None: limit -= len(entries) - after = Object(id=int(entries[0]['id'])) + after = Object(id=int(entries[-1]['id'])) return data, entries, after, limit @@ -3647,20 +3647,19 @@ class Guild(Hashable): if isinstance(after, datetime.datetime): after = Object(id=utils.time_snowflake(after, high=True)) - if oldest_first is MISSING: - reverse = after is not MISSING - else: - reverse = oldest_first + if oldest_first: + if after is MISSING: + after = OLDEST_OBJECT predicate = None - if reverse: + if oldest_first: strategy, state = _after_strategy, after if before: predicate = lambda m: int(m['id']) < before.id else: strategy, state = _before_strategy, before - if after and after != OLDEST_OBJECT: + if after: predicate = lambda m: int(m['id']) > after.id # avoid circular import @@ -3673,8 +3672,6 @@ class Guild(Hashable): data, raw_entries, state, limit = await strategy(retrieve, state, limit) - if reverse: - raw_entries = reversed(raw_entries) if predicate: raw_entries = filter(predicate, raw_entries) diff --git a/discord/http.py b/discord/http.py index 5913f4911..3fa622967 100644 --- a/discord/http.py +++ b/discord/http.py @@ -1717,7 +1717,7 @@ class HTTPClient: params: Dict[str, Any] = {'limit': limit} if before: params['before'] = before - if after: + if after is not None: params['after'] = after if user_id: params['user_id'] = user_id