| @@ -1,6 +1,9 @@ | |||||
| v0.2 (unreleased): | v0.2 (unreleased): | ||||
| - Added a new command syntax allowing the caller to redirect replies to another | |||||
| user. Example: "!dictionary >Fred earwig" | |||||
| - Added 'rc' hook type to allow IRC commands to respond to RC watcher events. | - Added 'rc' hook type to allow IRC commands to respond to RC watcher events. | ||||
| - Added 'part' hook type as a counterpart to 'join'. | |||||
| - Added !stalk/!watch. | - Added !stalk/!watch. | ||||
| - Added !watchers. | - Added !watchers. | ||||
| - Added !epoch as a subcommand of !time. | - Added !epoch as a subcommand of !time. | ||||
| @@ -108,9 +108,10 @@ are the basics: | |||||
| - Class attribute :py:attr:`~earwigbot.commands.Command.hooks` is a list of the | - Class attribute :py:attr:`~earwigbot.commands.Command.hooks` is a list of the | ||||
| "IRC events" that this command might respond to. It defaults to ``["msg"]``, | "IRC events" that this command might respond to. It defaults to ``["msg"]``, | ||||
| but options include ``"msg_private"`` (for private messages only), | but options include ``"msg_private"`` (for private messages only), | ||||
| ``"msg_public"`` (for channel messages only), and ``"join"`` (for when a user | |||||
| joins a channel). See the afc_status_ plugin for a command that responds to | |||||
| other hook types. | |||||
| ``"msg_public"`` (for channel messages only), ``"join"`` (for when a user | |||||
| joins a channel), ``"part"`` (for when a user parts a channel), and ``"rc"`` | |||||
| (for recent change messages from the IRC watcher). See the afc_status_ plugin | |||||
| for a command that responds to other hook types. | |||||
| - Method :py:meth:`~earwigbot.commands.Command.setup` is called *once* with no | - Method :py:meth:`~earwigbot.commands.Command.setup` is called *once* with no | ||||
| arguments immediately after the command is first loaded. Does nothing by | arguments immediately after the command is first loaded. Does nothing by | ||||
| @@ -43,9 +43,9 @@ class Command(object): | |||||
| # be triggered by the command's name and its name only: | # be triggered by the command's name and its name only: | ||||
| commands = [] | commands = [] | ||||
| # Hooks are "msg", "msg_private", "msg_public", and "join". "msg" is the | |||||
| # default behavior; if you wish to override that, change the value in your | |||||
| # command subclass: | |||||
| # Hooks are "msg", "msg_private", "msg_public", "join", "part", and "rc". | |||||
| # "msg" is the default behavior; if you wish to override that, change the | |||||
| # value in your command subclass: | |||||
| hooks = ["msg"] | hooks = ["msg"] | ||||
| def __init__(self, bot): | def __init__(self, bot): | ||||
| @@ -62,6 +62,10 @@ class Frontend(IRCConnection): | |||||
| data = Data(self.bot, self.nick, line, msgtype="JOIN") | data = Data(self.bot, self.nick, line, msgtype="JOIN") | ||||
| self.bot.commands.call("join", data) | self.bot.commands.call("join", data) | ||||
| elif line[1] == "PART": | |||||
| data = Data(self.bot, self.nick, line, msgtype="PART") | |||||
| self.bot.commands.call("part", data) | |||||
| elif line[1] == "PRIVMSG": | elif line[1] == "PRIVMSG": | ||||
| data = Data(self.bot, self.nick, line, msgtype="PRIVMSG") | data = Data(self.bot, self.nick, line, msgtype="PRIVMSG") | ||||
| if data.is_private: | if data.is_private: | ||||