]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/modpython.py
Minor typo in previous commit where returning 0 when it should have been 1 from opser...
[irc/evilnet/x3.git] / src / modpython.py
index 34fdbf6821bb2bdac65e10ee7f5159ce6ec12524..1f7c83c97606e2004651ab08fa4a69e68803eb5c 100644 (file)
@@ -11,7 +11,8 @@
 # - provide helper functions for scripts to do common things like msg a person or a channel,
 #   reply, etc.
 
-import svc
+import _svc
+import plugins
 
 import math
 
@@ -33,7 +34,7 @@ class irc:
         self.target = target   #the channel message was in (if public)
 
     def send_target_privmsg(self, source, target, message):
-        svc.send_target_privmsg(source, target,  "%s "%(message))
+        _svc.send_target_privmsg(source, target,  "%s "%(message))
 
     def reply(self, message):
         """ Send a private reply to the user using convenience values"""
@@ -48,9 +49,10 @@ class handler:
 
     def __init__(self):
         #print "DEBUG: constructor for handler initing"
-        self.plugins = plugins(self)
+        self.plugins = plugins_(self)
         if(not self.plugins):
             print "DEBUG: unable to make self.plugins!?!"
+        self.newplugins = plugins.load()
 
     def init(self, irc): # not to be confused with __init__!
         """ This gets called once all the objects are up and running. Otherwise,
@@ -60,21 +62,36 @@ class handler:
         return 0
 
     def join(self, irc, channel, nick):
-        #user = svc.get_user(nick)
+        #user = _svc.get_user(nick)
         #print "DEBUG: handler.join()"
         return self.plugins.callhandler("join", irc, [channel, nick], [channel, nick])
 
-    def server_link(self, irc, name, desc):
-        return self.plugins.callhandler("server_link", irc, [name, desc], [name, desc])
+    def server_link(self, server):
+        for plugin in self.newplugins:
+            if plugin.server_link(server):
+                return 1
+        return 0
 
-    def new_user(self, irc, nick, ident, hostname, info):
-        # we may filter on all the user fields, but we only pass the nick because
-        # the plugin can get the rest itself
-        return self.plugins.callhandler("new_user", irc, [nick, ident, hostname, info], [nick])
+    def new_user(self, user):
+        for plugin in self.newplugins:
+            if plugin.new_user(user):
+                return 1
+        return 0
+
+    def nick_change(self, user, oldnick):
+        for plugin in self.newplugins:
+            plugin.nick_change(user, oldnick)
+
+    def del_user(self, user, killer, why):
+        for plugin in self.newplugins:
+            plugin.del_user(user, killer, why)
+
+    def topic(self, who, chan, old_topic):
+        for plugin in self.newplugins:
+            if plugin.topic(who, chan, old_topic):
+                return 1
+        return 0
 
-    def nick_change(self, irc, nick, old_nick):
-        return self.plugins.callhandler("nick_change", irc, [nick, old_nick], [nick, old_nick])
-        
     def cmd_run(self, irc, cmd):
         #print "DEBUG: handler.cmd_run: %s"%cmd
         eval(cmd)
@@ -94,7 +111,7 @@ class handler:
     def load(self, irc, plugin):
         return self.plugins.load(plugin)
 
-class plugins:
+class plugins_:
     """Class to handle loading/unloading of plugins"""
     loaded_plugins = {}
     hooks = []
@@ -161,7 +178,7 @@ class plugins:
         mod_name = "plugins.%s"%name
         need_reload = False
         if(sys.modules.has_key(mod_name)):
-            need_reload = true
+            need_reload = True
         #TODO: try to catch compile errors etc.
 
         if(need_reload == False):