aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2015-12-12 10:26:30 -0500
committerRapptz <[email protected]>2015-12-12 10:26:30 -0500
commitb5c57fc39996c4d910fa094f0150c8c3d075251c (patch)
tree01d613f294fe24bd5655c75fd9edb9fefb32aaf5
parentRemove socket.shutdown and only use socket.close instead. (diff)
downloaddiscord.py-b5c57fc39996c4d910fa094f0150c8c3d075251c.tar.xz
discord.py-b5c57fc39996c4d910fa094f0150c8c3d075251c.zip
logs_from now works again with limit > 100.
-rw-r--r--discord/client.py41
1 files changed, 27 insertions, 14 deletions
diff --git a/discord/client.py b/discord/client.py
index f3830f8f..5f0a8495 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -939,6 +939,24 @@ class Client:
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