Source code for errbot.core_plugins.cnf_filter
from errbot import BotPlugin, cmdfilter
[docs]
class CommandNotFoundFilter(BotPlugin):
[docs]
@cmdfilter(catch_unprocessed=True)
def cnf_filter(self, msg, cmd, args, dry_run, emptycmd=False):
"""
Check if command exists. If not, signal plugins. This plugin
will be called twice: once as a command filter and then again
as a "command not found" filter. See the emptycmd parameter.
:param msg: Original chat message.
:param cmd: Parsed command.
:param args: Command arguments.
:param dry_run: True when this is a dry-run.
:param emptycmd: False when this command has been parsed and is valid.
True if the command was not found.
"""
if not emptycmd:
return msg, cmd, args
if self.bot_config.SUPPRESS_CMD_NOT_FOUND:
self.log.debug("Suppressing command not found feedback.")
return
command = msg.body.strip()
for prefix in self.bot_config.BOT_ALT_PREFIXES + (self.bot_config.BOT_PREFIX,):
if command.startswith(prefix):
command = command.replace(prefix, "", 1)
break
command_args = command.split(" ", 1)
command = command_args[0]
if len(command_args) > 1:
args = " ".join(command_args[1:])
return self._bot.unknown_command(msg, command, args)