diff options
| author | Rapptz <[email protected]> | 2016-07-21 23:53:16 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2016-07-21 23:53:16 -0400 |
| commit | 5010e7dc559791caf1fb75639521b87dd559b70a (patch) | |
| tree | 1df935da97a38f6aacb59c5ae9744eade678b586 | |
| parent | Fix SyntaxError in constructing VoiceState for Python 3.4 (diff) | |
| download | discord.py-5010e7dc559791caf1fb75639521b87dd559b70a.tar.xz discord.py-5010e7dc559791caf1fb75639521b87dd559b70a.zip | |
[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.
| -rw-r--r-- | discord/ext/commands/errors.py | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/discord/ext/commands/errors.py b/discord/ext/commands/errors.py index 7c95b118..1cdb0652 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 |