[commands] Add CommandNotFound error.
This commit is contained in:
		| @@ -31,6 +31,7 @@ import inspect | ||||
| from .core import GroupMixin | ||||
| from .view import StringView | ||||
| from .context import Context | ||||
| from .errors import CommandNotFound | ||||
|  | ||||
| class Bot(GroupMixin, discord.Client): | ||||
|     """Represents a discord bot. | ||||
| @@ -203,18 +204,21 @@ class Bot(GroupMixin, discord.Client): | ||||
|  | ||||
|         view.skip_ws() | ||||
|         invoker = view.get_word() | ||||
|         tmp = { | ||||
|             'bot': self, | ||||
|             'invoked_with': invoker, | ||||
|             'message': message, | ||||
|             'view': view, | ||||
|         } | ||||
|         ctx = Context(**tmp) | ||||
|         del tmp | ||||
|         if invoker in self.commands: | ||||
|             command = self.commands[invoker] | ||||
|             tmp = { | ||||
|                 'bot': self, | ||||
|                 'invoked_with': invoker, | ||||
|                 'message': message, | ||||
|                 'view': view, | ||||
|                 'command': command | ||||
|             } | ||||
|             ctx = Context(**tmp) | ||||
|             del tmp | ||||
|             ctx.command = command | ||||
|             yield from command.invoke(ctx) | ||||
|         else: | ||||
|             exc = CommandNotFound('Command "{}" is not found'.format(invoker)) | ||||
|             self.dispatch('command_error', exc, ctx) | ||||
|  | ||||
|     @asyncio.coroutine | ||||
|     def on_message(self, message): | ||||
|   | ||||
| @@ -334,7 +334,6 @@ class Group(GroupMixin, Command): | ||||
|         if ctx.invoked_subcommand: | ||||
|             yield from ctx.invoked_subcommand.invoke(ctx) | ||||
|  | ||||
|  | ||||
| # Decorators | ||||
|  | ||||
| def command(name=None, cls=None, **attrs): | ||||
|   | ||||
| @@ -27,7 +27,7 @@ from discord.errors import DiscordException | ||||
|  | ||||
|  | ||||
| __all__ = [ 'CommandError', 'MissingRequiredArgument', 'BadArgument', | ||||
|            'NoPrivateMessage', 'CheckFailure' ] | ||||
|            'NoPrivateMessage', 'CheckFailure', 'CommandNotFound' ] | ||||
|  | ||||
| class CommandError(DiscordException): | ||||
|     """The base exception type for all command related errors. | ||||
| @@ -40,6 +40,14 @@ class CommandError(DiscordException): | ||||
|     """ | ||||
|     pass | ||||
|  | ||||
| class CommandNotFound(CommandError): | ||||
|     """Exception raised when a command is attempted to be invoked | ||||
|     but no command under that name is found. | ||||
|  | ||||
|     This is not raised for invalid subcommands, rather just the | ||||
|     initial main command that is attempted to be invoked. | ||||
|     """ | ||||
|  | ||||
| class MissingRequiredArgument(CommandError): | ||||
|     """Exception raised when parsing a command and a parameter | ||||
|     that is required is not encountered. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user