+ def addcommand(self, plugin, command, method):
+ self.addhook("command", method, [plugin, command])
+
+ def cmd_command(self, irc, plugin, cmd, args):
+ #print "DEBUG: handel.cmd_command; %s %s; args= %s"%(plugin, cmd, args)
+ return self.plugins.callhandler("command", irc, [plugin, cmd], [args])
+
+ def load(self, irc, plugin):
+ return self.plugins.load(plugin)
+
+class plugins_:
+ """Class to handle loading/unloading of plugins"""
+ loaded_plugins = {}
+ hooks = []
+
+ class hook:
+ """ This is a request from a plugin to be called on an event """
+ event = "" # Event to be called on (eg "join")
+ method = None # Method to call
+ filter = None # Arguments to filter
+ data = "" # plugin-supplied data for plugin use
+
+ def __init__(self, event, method, filter, data):
+ self.event = event
+ self.method = method
+ self.filter = filter
+ self.data = data
+
+ def event_is(self, event, evdata):
+ if(self.event == event):
+ for i in range(len(self.filter)):
+ if( self.filter[i] != None
+ and self.filter[i] != evdata[i]): # should be case insensitive? or how to compare?
+ #print "DEBUG: rejecting event, %s is not %s"%(self.filter[i], evdata[i])
+ return False
+ return True
+ else:
+ return False
+
+ def trigger(self, irc, args):
+ #print "DEBUG: Triggering %s event. with '%s' arguments."%(self.event, args)
+ self.method(irc, *args)
+
+ def __init__(self, handler):
+ """ Constructor """
+ #print "DEBUG: constructor for plugins initing"
+ self.handler = handler
+
+ def init(self):
+ #print "DEBUG: in plugins.init()"