commit 4b7cc141e5def027d2a562a1d53a2c465216fd9e Author: Ryan Hitchman Date: Wed Jun 4 15:23:12 2008 -0600 because wikipedia is stupid diff --git a/.hgignore b/.hgignore new file mode 100644 index 0000000..09079fe --- /dev/null +++ b/.hgignore @@ -0,0 +1,3 @@ +syntax: glob +.*.swp +*.pyc diff --git a/docs/interface b/docs/interface new file mode 100644 index 0000000..a46f820 --- /dev/null +++ b/docs/interface @@ -0,0 +1,49 @@ +plugins are located in plugins/ + +focus: as little boilerplate as possible, without being arcane + +commandprefix = '^(?:\.|$nick[:,\s]*)' + +when the bot starts, it imports each plugin and tries to run setup, passing along an object that lets the plugin identify itself and expose functionality. + +the objects' methods are: + +register(name, function, hook, prefix=True, events=['PRIVMSG'], acl=['all'], private=0, + doc="", example="") + +e.g.: +setup(bot): + bot.register("dice", dice, r'dice (.*)', doc="rolls a set of virtual dice", example="dice 3d5-4+d20") + +name: the name of the command +function: the function to call, must have two arguments +hook: the regex to match +prefix: True: hook = commandprefix + hook + False: hook is unchanged +events: what IRC events to filter on. possible things are 'JOIN' +acl: access control list, elements are either 'all', or 'admin' (plan on extending this later) +private: whether the command works in /query. -1: no, only public. 0: either 1: only private +doc: documentation on how to use the command +example: an example usage + +When a message is received, it is filtered against all registered commands, checking in the following order: + +events +private +acl +hook + +When it matches, function is called, passing along two objects, bot and input + +input: +nick -- string, the nickname of whoever sent the message +channel -- string, the channel the message was sent on. Equal to nick if it's a private message. +msg -- string, the line that was sent +raw -- string, the raw full line that was sent +re -- the result of doing re.match(hook, msg) + +attributes and methods of bot: +say(msg): obvious +reply(msg): say(input.nick + ": " + msg) +msg(target, msg): sends msg to target +(other irc commands, like mode, topic, etc)