Browse Source

[commands] Add CommandNotFound error.

pull/77/head
Rapptz 9 years ago
parent
commit
51186c3ca4
  1. 22
      discord/ext/commands/bot.py
  2. 1
      discord/ext/commands/core.py
  3. 10
      discord/ext/commands/errors.py

22
discord/ext/commands/bot.py

@ -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):

1
discord/ext/commands/core.py

@ -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):

10
discord/ext/commands/errors.py

@ -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.

Loading…
Cancel
Save