Skip to content

Commit e25527f

Browse files
authored
fix: further address audit log issues (#2492)
1 parent 73e4e37 commit e25527f

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ These changes are available on the `master` branch, but have not yet been releas
7878
([#2480](https://github.com/Pycord-Development/pycord/pull/2480))
7979
- Fixed outdated logic for filtering and sorting audit log entries.
8080
([#2371](https://github.com/Pycord-Development/pycord/pull/2371))
81+
- Further fixed logic when fetching audit logs.
82+
([#2492](https://github.com/Pycord-Development/pycord/pull/2492))
8183

8284
### Changed
8385

discord/http.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1946,9 +1946,9 @@ def get_audit_logs(
19461946
action_type: AuditLogAction | None = None,
19471947
) -> Response[audit_log.AuditLog]:
19481948
params: dict[str, Any] = {"limit": limit}
1949-
if before:
1949+
if before is not None:
19501950
params["before"] = before
1951-
if after:
1951+
if after is not None:
19521952
params["after"] = after
19531953
if user_id:
19541954
params["user_id"] = user_id

discord/iterators.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -491,12 +491,14 @@ def __init__(
491491
self.before = before
492492
self.user_id = user_id
493493
self.action_type = action_type
494-
self.after = after or OLDEST_OBJECT
494+
self.after = after
495495
self._users = {}
496496
self._state = guild._state
497497
self.entries = asyncio.Queue()
498498

499499
async def _retrieve_entries(self, retrieve):
500+
if not self._get_retrieve():
501+
return
500502
before = self.before.id if self.before else None
501503
after = self.after.id if self.after else None
502504
data: AuditLogPayload = await self.request(
@@ -509,13 +511,14 @@ async def _retrieve_entries(self, retrieve):
509511
)
510512

511513
entries = data.get("audit_log_entries", [])
514+
# if ONLY after is passed and NOT before, Discord reverses the sort to oldest first.
512515
if len(data) and entries:
513516
if self.limit is not None:
514517
self.limit -= retrieve
515518
if self.before or not self.after:
516519
self.before = Object(id=int(entries[-1]["id"]))
517-
if self.after or not self.before:
518-
self.after = Object(id=int(entries[0]["id"]))
520+
if self.after and not self.before:
521+
self.after = Object(id=int(entries[-1]["id"]))
519522
return data.get("users", []), entries
520523

521524
async def next(self) -> AuditLogEntry:
@@ -528,9 +531,13 @@ async def next(self) -> AuditLogEntry:
528531
raise NoMoreItems()
529532

530533
def _get_retrieve(self):
531-
limit = self.limit or 100
532-
self.retrieve = min(limit, 100)
533-
return self.retrieve > 0
534+
l = self.limit
535+
if l is None or l > 100:
536+
r = 100
537+
else:
538+
r = l
539+
self.retrieve = r
540+
return r > 0
534541

535542
async def _fill(self):
536543
from .user import User

0 commit comments

Comments
 (0)