aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2020-09-09 21:17:28 -0400
committerRapptz <[email protected]>2020-09-09 21:17:28 -0400
commite6017a2170982644aaa4ecf457a070bf98200cd6 (patch)
tree414f5d6f20cd0769be23062b41860f55afaca1d8
parentAdd logging to webhooks (diff)
downloaddiscord.py-e6017a2170982644aaa4ecf457a070bf98200cd6.tar.xz
discord.py-e6017a2170982644aaa4ecf457a070bf98200cd6.zip
Handle cloudflare bans on webhook requests
Fixes #5221
-rw-r--r--discord/webhook.py8
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)