From 1a2ead84484537467cbed4e99fe8d315687ab860 Mon Sep 17 00:00:00 2001 From: NikolajDanger Date: Sat, 3 Apr 2021 22:35:11 +0200 Subject: [PATCH] :pencil: Better functioning error handling --- cogs/EventCog.py | 6 +++--- utils/eventHandlers.py | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/cogs/EventCog.py b/cogs/EventCog.py index 6fb85ed..e1a7993 100644 --- a/cogs/EventCog.py +++ b/cogs/EventCog.py @@ -4,6 +4,7 @@ from discord.ext import commands class EventCog(commands.Cog): def __init__(self, bot): self.bot = bot + self.bot.on_error = self.on_error # Syncs commands, sets the game, and logs when the bot logs in @commands.Cog.listener() @@ -20,9 +21,8 @@ class EventCog(commands.Cog): async def on_slash_command_error(self, ctx, error): await self.bot.errorHandler.on_slash_command_error(ctx, error) - # Logs if an error occurs - @commands.Cog.listener() - async def on_error(self, method): + # Logs if on error occurs + async def on_error(self, method, *args, **kwargs): await self.bot.errorHandler.on_error(method) def setup(bot): diff --git a/utils/eventHandlers.py b/utils/eventHandlers.py index b7c6872..999e96f 100644 --- a/utils/eventHandlers.py +++ b/utils/eventHandlers.py @@ -1,4 +1,4 @@ -import discord, traceback +import discord, traceback, discord_slash from discord.ext import commands class EventHandler(): @@ -28,9 +28,11 @@ class ErrorHandler(): async def on_slash_command_error(self, ctx, error): if isinstance(error, commands.CommandNotFound): await ctx.send("That's not a command (error code 001)") - elif isinstance(error,commands.errors.MissingRequiredArgument): + elif isinstance(error, commands.errors.MissingRequiredArgument): self.bot.log(f"{error}",str(ctx.channel_id)) await ctx.send("Missing command parameters (error code 002). Try using `!help [command]` to find out how to use the command.") + elif isinstance(error, discord_slash.error.AlreadyResponded): + self.bot.log("Defer failed") else: exception = traceback.format_exception(type(error), error, error.__traceback__) stopAt = "\nThe above exception was the direct cause of the following exception:\n\n" @@ -53,4 +55,4 @@ class ErrorHandler(): exception = exception[:index] exceptionString = "".join(exception) - self.bot.log([f"exception in /{method}", f"{exceptionString}"], level = 40) \ No newline at end of file + self.bot.log([f"exception in {method}", f"{exceptionString}"], level = 40) \ No newline at end of file