mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-07-23 11:26:51 +00:00
logs_from now works again with limit > 100.
This commit is contained in:
parent
f55d82146e
commit
b5c57fc399
@ -938,6 +938,24 @@ class Client:
|
|||||||
log.debug(request_success_log.format(response=response, json=payload, data=data))
|
log.debug(request_success_log.format(response=response, json=payload, data=data))
|
||||||
return Message(channel=channel, **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
|
@asyncio.coroutine
|
||||||
def logs_from(self, channel, limit=100, *, before=None, after=None):
|
def logs_from(self, channel, limit=100, *, before=None, after=None):
|
||||||
"""|coro|
|
"""|coro|
|
||||||
@ -981,25 +999,20 @@ class Client:
|
|||||||
yield from client.edit_message(message, 'goodbye')
|
yield from client.edit_message(message, 'goodbye')
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def generator_wrapper(data):
|
def generator(data):
|
||||||
for message in data:
|
for message in data:
|
||||||
yield Message(channel=channel, **message)
|
yield Message(channel=channel, **message)
|
||||||
|
|
||||||
url = '{}/{}/messages'.format(endpoints.CHANNELS, channel.id)
|
result = []
|
||||||
params = {
|
while limit > 0:
|
||||||
'limit': limit
|
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:
|
return generator(result)
|
||||||
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 generator_wrapper(messages)
|
|
||||||
|
|
||||||
# Member management
|
# Member management
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user