aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/ext/commands/core.py2
-rw-r--r--discord/ext/commands/errors.py15
2 files changed, 15 insertions, 2 deletions
diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py
index dd3607f5..b9245553 100644
--- a/discord/ext/commands/core.py
+++ b/discord/ext/commands/core.py
@@ -47,7 +47,7 @@ def inject_context(ctx, coro):
try:
ret = yield from coro(*args, **kwargs)
except Exception as e:
- raise CommandError("Exception raised while executing command") from e
+ raise CommandInvokeError(e) from e
return ret
return wrapped
diff --git a/discord/ext/commands/errors.py b/discord/ext/commands/errors.py
index 08545ade..7ba0285e 100644
--- a/discord/ext/commands/errors.py
+++ b/discord/ext/commands/errors.py
@@ -28,7 +28,7 @@ from discord.errors import DiscordException
__all__ = [ 'CommandError', 'MissingRequiredArgument', 'BadArgument',
'NoPrivateMessage', 'CheckFailure', 'CommandNotFound',
- 'DisabledCommand' ]
+ 'DisabledCommand', 'CommandInvokeError' ]
class CommandError(DiscordException):
"""The base exception type for all command related errors.
@@ -74,3 +74,16 @@ class CheckFailure(CommandError):
class DisabledCommand(CommandError):
"""Exception raised when the command being invoked is disabled."""
pass
+
+class CommandInvokeError(CommandError):
+ """Exception raised when the command being invoked raised an exception.
+
+ Attributes
+ -----------
+ original
+ The original exception that was raised. You can also get this via
+ the ``__cause__`` attribute.
+ """
+ def __init__(self, e):
+ self.original = e
+ super().__init__('Command raised an exception: {0.__class__.__name__}: {0}'.format(e))