mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-04-20 16:00:29 +00:00
Implement fix for future rate limiting change in discord.
This commit is contained in:
parent
b5a40b545e
commit
2a3610de2f
@ -691,6 +691,20 @@ class Client:
|
||||
log.debug(request_success_log.format(response=r, json=payload, data=data))
|
||||
self.private_channels.append(PrivateChannel(id=data['id'], user=user))
|
||||
|
||||
@asyncio.coroutine
|
||||
def _rate_limit_helper(self, name, method, url, data):
|
||||
resp = yield from self.session.request(method, url, data=data, headers=self.headers)
|
||||
tmp = request_logging_format.format(method=method, response=resp)
|
||||
log_fmt = 'In {}, {}'.format(name, tmp)
|
||||
log.debug(log_fmt)
|
||||
if resp.status == 429:
|
||||
retry = resp.headers['Retry-After'] / 1000.0
|
||||
yield from resp.release()
|
||||
yield from asyncio.sleep(retry)
|
||||
return (yield from self._rate_limit_helper(name, method, data))
|
||||
|
||||
return resp
|
||||
|
||||
@asyncio.coroutine
|
||||
def send_message(self, destination, content, *, mentions=True, tts=False):
|
||||
"""|coro|
|
||||
@ -758,8 +772,7 @@ class Client:
|
||||
if tts:
|
||||
payload['tts'] = True
|
||||
|
||||
resp = yield from self.session.post(url, data=utils.to_json(payload), headers=self.headers)
|
||||
log.debug(request_logging_format.format(method='POST', response=resp))
|
||||
resp = yield from self._rate_limit_helper('send_message', 'POST', url, utils.to_json(payload))
|
||||
yield from utils._verify_successful_response(resp)
|
||||
data = yield from resp.json()
|
||||
log.debug(request_success_log.format(response=resp, json=payload, data=data))
|
||||
@ -931,7 +944,7 @@ class Client:
|
||||
'mentions': self._resolve_mentions(content, mentions)
|
||||
}
|
||||
|
||||
response = yield from self.session.patch(url, headers=self.headers, data=utils.to_json(payload))
|
||||
response = yield from self._rate_limit_helper('edit_message', 'PATCH', url, utils.to_json(payload))
|
||||
log.debug(request_logging_format.format(method='PATCH', response=response))
|
||||
yield from utils._verify_successful_response(response)
|
||||
data = yield from response.json()
|
||||
@ -1013,7 +1026,6 @@ class Client:
|
||||
|
||||
return generator(result)
|
||||
|
||||
|
||||
# Member management
|
||||
|
||||
@asyncio.coroutine
|
||||
|
Loading…
x
Reference in New Issue
Block a user