From 5010e7dc559791caf1fb75639521b87dd559b70a Mon Sep 17 00:00:00 2001 From: Rapptz Date: Thu, 21 Jul 2016 23:53:16 -0400 Subject: [PATCH] [commands] Add UserInputError into the exception hierarchy. This is for exceptions that are inherently based on user errors and not permission based. e.g. passing incorrect number of arguments, too many arguments, or an invalid argument. CommandNotFound is not classified under this since it isn't inherently a user input error in all cases. Some invalid commands can simply be due to an odd bot prefix. It would also diminish the usefulness of the new parent class if CommandNotFound was included. --- discord/ext/commands/errors.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/discord/ext/commands/errors.py b/discord/ext/commands/errors.py index 7c95b118c..1cdb0652f 100644 --- a/discord/ext/commands/errors.py +++ b/discord/ext/commands/errors.py @@ -28,7 +28,8 @@ from discord.errors import DiscordException __all__ = [ 'CommandError', 'MissingRequiredArgument', 'BadArgument', 'NoPrivateMessage', 'CheckFailure', 'CommandNotFound', - 'DisabledCommand', 'CommandInvokeError', 'TooManyArguments' ] + 'DisabledCommand', 'CommandInvokeError', 'TooManyArguments', + 'UserInputError' ] class CommandError(DiscordException): """The base exception type for all command related errors. @@ -47,6 +48,14 @@ class CommandError(DiscordException): else: super().__init__(*args) +class UserInputError(CommandError): + """The base exception type for errors that involve errors + regarding user input. + + This inherits from :exc:`CommandError`. + """ + pass + class CommandNotFound(CommandError): """Exception raised when a command is attempted to be invoked but no command under that name is found. @@ -56,13 +65,19 @@ class CommandNotFound(CommandError): """ pass -class MissingRequiredArgument(CommandError): +class MissingRequiredArgument(UserInputError): """Exception raised when parsing a command and a parameter that is required is not encountered. """ pass -class BadArgument(CommandError): +class TooManyArguments(UserInputError): + """Exception raised when the command was passed too many arguments and its + :attr:`Command.ignore_extra` attribute was not set to ``True``. + """ + pass + +class BadArgument(UserInputError): """Exception raised when a parsing or conversion failure is encountered on an argument to pass into a command. """ @@ -95,8 +110,3 @@ class CommandInvokeError(CommandError): self.original = e super().__init__('Command raised an exception: {0.__class__.__name__}: {0}'.format(e)) -class TooManyArguments(CommandError): - """Exception raised when the command was passed too many arguments and its - :attr:`Command.ignore_extra` attribute was not set to ``True``. - """ - pass