]> jfr.im git - erebus.git/blobdiff - bot.py
more work on trivia
[erebus.git] / bot.py
diff --git a/bot.py b/bot.py
index 1c8aa02a4b26c8bf68355e24e75859c2f270b4d0..fa6e7c273d374b3f12752f9d732cce68be1ac2c8 100644 (file)
--- a/bot.py
+++ b/bot.py
@@ -16,11 +16,10 @@ class Bot(object):
                self.realname = realname
 
                curs = self.parent.db.cursor()
-               curs.execute("SELECT chname FROM chans WHERE bot = %s AND active = 1", (self.nick,))
-               chansres = curs.fetchall()
-               curs.close()
-
-               self.chans = [self.parent.newchannel(self, row['chname']) for row in chansres]
+               if curs.execute("SELECT chname FROM chans WHERE bot = %s AND active = 1", (self.nick,)):
+                       chansres = curs.fetchall()
+                       curs.close()
+                       self.chans = [self.parent.newchannel(self, row['chname']) for row in chansres]
 
                self.conn = BotConnection(self, bind, server, port)
        def connect(self):
@@ -73,7 +72,25 @@ class Bot(object):
                                user = self.parent.user(nick, justjoined=True)
                                chan.userjoin(user)
                                user.join(chan)
+
+               elif pieces[1] == "PART":
+                       nick = pieces[0].split('!')[0][1:]
+                       chan = self.parent.channel(pieces[2])
                        
+                       if nick != self.nick:
+                               self.parent.user(nick).part(chan)
+                               chan.userpart(self.parent.user(nick))
+
+               elif pieces[1] == "QUIT":
+                       nick = pieces[0].split('!')[0][1:]
+                       if nick != self.nick:
+                               self.parent.user(nick).quit()
+                               del self.parent.users[nick.lower()]
+
+               elif pieces[1] == "MODE": #TODO
+                       pass
+
+       
        def parsemsg(self, user, target, msg):
                chan = None
                if len(msg) == 0:
@@ -99,7 +116,14 @@ class Bot(object):
                                                pieces.pop(0) # command actually starts with next word
                                                msg = ' '.join(pieces) # command actually starts with next word
                                elif not triggerused:
-                                       return # not to bot, don't process!
+                                       if self.parent.haschanhook(target.lower()):
+                                               for callback in self.parent.getchanhook(target.lower()):
+                                                       cbret = callback(self, user, chan, *pieces)
+                                                       if cbret is NotImplemented:
+                                                               self.msg(user, "Command not implemented.")
+                                               return
+                                       else:
+                                               return # not to bot, don't process!
                        except IndexError:
                                return # Fix if you feel like it /BiohZn