diff options
| author | Rapptz <[email protected]> | 2020-09-09 21:17:28 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2020-09-09 21:17:28 -0400 |
| commit | e6017a2170982644aaa4ecf457a070bf98200cd6 (patch) | |
| tree | 414f5d6f20cd0769be23062b41860f55afaca1d8 | |
| parent | Add logging to webhooks (diff) | |
| download | discord.py-e6017a2170982644aaa4ecf457a070bf98200cd6.tar.xz discord.py-e6017a2170982644aaa4ecf457a070bf98200cd6.zip | |
Handle cloudflare bans on webhook requests
Fixes #5221
| -rw-r--r-- | discord/webhook.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/discord/webhook.py b/discord/webhook.py index 1c097a08..7824c55a 100644 --- a/discord/webhook.py +++ b/discord/webhook.py @@ -222,6 +222,10 @@ class AsyncWebhookAdapter(WebhookAdapter): # we are being rate limited if r.status == 429: + if not r.headers.get('Via'): + # Banned by Cloudflare more than likely. + raise HTTPException(r, data) + retry_after = response['retry_after'] / 1000.0 log.warning('Webhook ID %s is rate limited. Retrying in %.2f seconds', _id, retry_after) await asyncio.sleep(retry_after) @@ -317,6 +321,10 @@ class RequestsWebhookAdapter(WebhookAdapter): # we are being rate limited if r.status == 429: if self.sleep: + if not r.headers.get('Via'): + # Banned by Cloudflare more than likely. + raise HTTPException(r, data) + retry_after = response['retry_after'] / 1000.0 log.warning('Webhook ID %s is rate limited. Retrying in %.2f seconds', _id, retry_after) time.sleep(retry_after) |