@@ -491,12 +491,14 @@ def __init__(
491
491
self .before = before
492
492
self .user_id = user_id
493
493
self .action_type = action_type
494
- self .after = after or OLDEST_OBJECT
494
+ self .after = after
495
495
self ._users = {}
496
496
self ._state = guild ._state
497
497
self .entries = asyncio .Queue ()
498
498
499
499
async def _retrieve_entries (self , retrieve ):
500
+ if not self ._get_retrieve ():
501
+ return
500
502
before = self .before .id if self .before else None
501
503
after = self .after .id if self .after else None
502
504
data : AuditLogPayload = await self .request (
@@ -509,13 +511,14 @@ async def _retrieve_entries(self, retrieve):
509
511
)
510
512
511
513
entries = data .get ("audit_log_entries" , [])
514
+ # if ONLY after is passed and NOT before, Discord reverses the sort to oldest first.
512
515
if len (data ) and entries :
513
516
if self .limit is not None :
514
517
self .limit -= retrieve
515
518
if self .before or not self .after :
516
519
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" ]))
519
522
return data .get ("users" , []), entries
520
523
521
524
async def next (self ) -> AuditLogEntry :
@@ -528,9 +531,13 @@ async def next(self) -> AuditLogEntry:
528
531
raise NoMoreItems ()
529
532
530
533
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
534
541
535
542
async def _fill (self ):
536
543
from .user import User
0 commit comments