Browse Source

logs_from now works again with limit > 100.

pull/57/head
Rapptz 9 years ago
parent
commit
b5c57fc399
  1. 41
      discord/client.py

41
discord/client.py

@ -938,6 +938,24 @@ class Client:
log.debug(request_success_log.format(response=response, json=payload, data=data))
return Message(channel=channel, **data)
@asyncio.coroutine
def _logs_from(self, channel, limit=100, before=None, after=None):
url = '{}/{}/messages'.format(endpoints.CHANNELS, channel.id)
params = {
'limit': limit
}
if before:
params['before'] = before.id
if after:
params['after'] = after.id
response = yield from self.session.get(url, params=params, headers=self.headers)
log.debug(request_logging_format.format(method='GET', response=response))
yield from utils._verify_successful_response(response)
messages = yield from response.json()
return messages
@asyncio.coroutine
def logs_from(self, channel, limit=100, *, before=None, after=None):
"""|coro|
@ -981,25 +999,20 @@ class Client:
yield from client.edit_message(message, 'goodbye')
"""
def generator_wrapper(data):
def generator(data):
for message in data:
yield Message(channel=channel, **message)
url = '{}/{}/messages'.format(endpoints.CHANNELS, channel.id)
params = {
'limit': limit
}
result = []
while limit > 0:
retrieve = limit if limit <= 100 else 100
data = yield from self._logs_from(channel, retrieve, before, after)
limit -= retrieve
result.extend(data)
before = Object(id=data[-1]['id'])
if before:
params['before'] = before.id
if after:
params['after'] = after.id
return generator(result)
response = yield from self.session.get(url, params=params, headers=self.headers)
log.debug(request_logging_format.format(method='GET', response=response))
yield from utils._verify_successful_response(response)
messages = yield from response.json()
return generator_wrapper(messages)
# Member management

Loading…
Cancel
Save