Browse Source

Properly check for audit log entry termination.

pull/572/head
Rapptz 8 years ago
parent
commit
152fc89508
  1. 20
      discord/iterators.py

20
discord/iterators.py

@ -416,22 +416,25 @@ class AuditLogIterator(_AsyncIterator):
before = self.before.id if self.before else None
data = yield from self.request(self.guild.id, limit=retrieve, user_id=self.user_id,
action_type=self.action_type, before=before)
if len(data):
entries = data.get('audit_log_entries', [])
if len(data) and entries:
if self.limit is not None:
self.limit -= retrieve
self.before = Object(id=int(data['audit_log_entries'][-1]['id']))
return data
self.before = Object(id=int(entries[-1]['id']))
return data.get('users', []), entries
@asyncio.coroutine
def _after_strategy(self, retrieve):
after = self.after.id if self.after else None
data = yield from self.request(self.guild.id, limit=retrieve, user_id=self.user_id,
action_type=self.action_type, after=after)
if len(data):
entries = data.get('audit_log_entries', [])
if len(data) and entries:
if self.limit is not None:
self.limit -= retrieve
self.after = Object(id=int(data['audit_log_entries'][0]['id']))
return data
self.after = Object(id=int(entries[0]['id']))
return data.get('users', []), entries
@asyncio.coroutine
def get(self):
@ -460,10 +463,7 @@ class AuditLogIterator(_AsyncIterator):
from .user import User
if self._get_retrieve():
data = yield from self._strategy(self.retrieve)
users = data.get('users', [])
data = data.get('audit_log_entries', [])
users, data = yield from self._strategy(self.retrieve)
if self.limit is None and len(data) < 100:
self.limit = 0 # terminate the infinite loop

Loading…
Cancel
Save