aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2020-02-16 11:52:54 -0800
committerGravatar MarkKoz <[email protected]>2020-02-16 11:52:54 -0800
commita83d2683f72a750b1946df913749a5c4257ebb16 (patch)
tree7329be212681e438fcec377928fd827e4c156446
parentModeration: fix member not found error not being shown (diff)
Error handler: create separate function to handle CheckFailure
-rw-r--r--bot/cogs/error_handler.py44
1 files changed, 29 insertions, 15 deletions
diff --git a/bot/cogs/error_handler.py b/bot/cogs/error_handler.py
index 52893b2ee..bd47eecf8 100644
--- a/bot/cogs/error_handler.py
+++ b/bot/cogs/error_handler.py
@@ -100,21 +100,9 @@ class ErrorHandler(Cog):
f"Command {command} invoked by {ctx.message.author} with error "
f"{e.__class__.__name__}: {e}"
)
- elif isinstance(e, NoPrivateMessage):
- await ctx.send("Sorry, this command can't be used in a private message!")
- elif isinstance(e, BotMissingPermissions):
- await ctx.send(f"Sorry, it looks like I don't have the permissions I need to do that.")
- log.warning(
- f"The bot is missing permissions to execute command {command}: {e.missing_perms}"
- )
- elif isinstance(e, MissingPermissions):
- log.debug(
- f"{ctx.message.author} is missing permissions to invoke command {command}: "
- f"{e.missing_perms}"
- )
- elif isinstance(e, InChannelCheckFailure):
- await ctx.send(e)
- elif isinstance(e, (CheckFailure, CommandOnCooldown, DisabledCommand)):
+ elif isinstance(e, CheckFailure):
+ await self.handle_check_failure(ctx, e)
+ elif isinstance(e, (CommandOnCooldown, DisabledCommand)):
log.debug(
f"Command {command} invoked by {ctx.message.author} with error "
f"{e.__class__.__name__}: {e}"
@@ -138,9 +126,35 @@ class ErrorHandler(Cog):
else:
await self.handle_unexpected_error(ctx, e.original)
else:
+ # MaxConcurrencyReached, ExtensionError
await self.handle_unexpected_error(ctx, e)
@staticmethod
+ async def handle_check_failure(ctx: Context, e: CheckFailure) -> None:
+ """Handle CheckFailure exceptions and its children."""
+ command = ctx.command
+
+ if isinstance(e, NoPrivateMessage):
+ await ctx.send("Sorry, this command can't be used in a private message!")
+ elif isinstance(e, BotMissingPermissions):
+ await ctx.send(f"Sorry, it looks like I don't have the permissions I need to do that.")
+ log.warning(
+ f"The bot is missing permissions to execute command {command}: {e.missing_perms}"
+ )
+ elif isinstance(e, MissingPermissions):
+ log.debug(
+ f"{ctx.message.author} is missing permissions to invoke command {command}: "
+ f"{e.missing_perms}"
+ )
+ elif isinstance(e, InChannelCheckFailure):
+ await ctx.send(e)
+ else:
+ log.debug(
+ f"Command {command} invoked by {ctx.message.author} with error "
+ f"{e.__class__.__name__}: {e}"
+ )
+
+ @staticmethod
async def handle_unexpected_error(ctx: Context, e: CommandError) -> None:
"""Generic handler for errors without an explicit handler."""
await ctx.send(