aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/api.py8
-rw-r--r--bot/cogs/error_handler.py13
-rw-r--r--bot/cogs/sync/cog.py4
-rw-r--r--bot/cogs/watchchannels/talentpool.py2
4 files changed, 15 insertions, 12 deletions
diff --git a/bot/api.py b/bot/api.py
index 935ff699f..e926a262e 100644
--- a/bot/api.py
+++ b/bot/api.py
@@ -1,4 +1,3 @@
-import typing
from urllib.parse import quote as quote_url
import aiohttp
@@ -6,8 +5,9 @@ import aiohttp
from .constants import Keys, URLs
-class ResponseCodeError(typing.NamedTuple, ValueError):
- response: aiohttp.ClientResponse
+class ResponseCodeError(ValueError):
+ def __init__(self, response: aiohttp.ClientResponse):
+ self.response = response
class APIClient:
@@ -28,7 +28,7 @@ class APIClient:
return f"{URLs.site_schema}{URLs.site_api}/{quote_url(endpoint)}"
def maybe_raise_for_status(self, response: aiohttp.ClientResponse, should_raise: bool):
- if should_raise and response.status_code >= 400:
+ if should_raise and response.status >= 400:
raise ResponseCodeError(response=response)
async def get(self, endpoint: str, *args, raise_for_status: bool = True, **kwargs):
diff --git a/bot/cogs/error_handler.py b/bot/cogs/error_handler.py
index b6ca7fccf..25aa177e1 100644
--- a/bot/cogs/error_handler.py
+++ b/bot/cogs/error_handler.py
@@ -1,6 +1,5 @@
import logging
-from discord.ext.commands import Bot, Context
from discord.ext.commands import (
BadArgument,
BotMissingPermissions,
@@ -10,6 +9,7 @@ from discord.ext.commands import (
NoPrivateMessage,
UserInputError,
)
+from discord.ext.commands import Bot, Context
from bot.api import ResponseCodeError
@@ -61,11 +61,13 @@ class ErrorHandler:
)
elif isinstance(e, CommandInvokeError):
if isinstance(e.original, ResponseCodeError):
- if e.original.response.status_code == 404:
+ if e.original.response.status == 404:
await ctx.send("There does not seem to be anything matching your query.")
- elif e.original.response.status_code == 400:
+ elif e.original.response.status == 400:
+ content = await e.original.resopnse.json()
+ log.debug("API gave bad request on command. Response: %r.", content)
await ctx.send("According to the API, your request is malformed.")
- elif 500 <= e.original.response.status_code < 600:
+ elif 500 <= e.original.response.status < 600:
await ctx.send("Sorry, there seems to be an internal issue with the API.")
else:
await ctx.send(
@@ -78,7 +80,8 @@ class ErrorHandler:
f"Sorry, an unexpected error occurred. Please let us know!\n\n```{e}```"
)
raise e.original
- raise e
+ else:
+ raise e
def setup(bot: Bot):
diff --git a/bot/cogs/sync/cog.py b/bot/cogs/sync/cog.py
index 9e71f749d..222c1668b 100644
--- a/bot/cogs/sync/cog.py
+++ b/bot/cogs/sync/cog.py
@@ -96,7 +96,7 @@ class Sync:
except ResponseCodeError as e:
# If we didn't get 404, something else broke - propagate it up.
- if e.response.status_code != 404:
+ if e.response.status != 404:
raise
got_error = True # yikes
@@ -138,7 +138,7 @@ class Sync:
}
)
except ResponseCodeError as e:
- if e.response.status_code != 404:
+ if e.response.status != 404:
raise
log.warning(
diff --git a/bot/cogs/watchchannels/talentpool.py b/bot/cogs/watchchannels/talentpool.py
index 44bf6371b..47d207d05 100644
--- a/bot/cogs/watchchannels/talentpool.py
+++ b/bot/cogs/watchchannels/talentpool.py
@@ -171,7 +171,7 @@ class TalentPool(WatchChannel):
try:
nomination = await self.bot.api_client.get(f"{self.api_endpoint}/{nomination_id}")
except ResponseCodeError as e:
- if e.response.status_code == 404:
+ if e.response.status == 404:
self.log.trace(f"Nomination API 404: Can't nomination with id {nomination_id}")
await ctx.send(f":x: Can't find a nomination with id `{nomination_id}`")
return