]> jfr.im git - erebus.git/blobdiff - bot.py
trivia v1 done
[erebus.git] / bot.py
diff --git a/bot.py b/bot.py
index 10be7f6a4908207091535cc1d05f4021c53eddd5..4b1fc2542e1f1d3abffc8a94ca2c1ddd716de5cc 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):
@@ -61,20 +60,37 @@ class Bot(object):
                        qt = pieces[3]
                        nick = pieces[4]
                        auth = pieces[5]
-                       if auth != '0':
-                               self.parent.user(nick).authed(auth)
+                       self.parent.user(nick).authed(auth)
 
                elif pieces[1] == "JOIN":
                        nick = pieces[0].split('!')[0][1:]
                        chan = self.parent.channel(pieces[2])
 
                        if nick == self.nick:
-                               self.conn.send("WHO %s %%ant,1" % (chan))
+                               self.conn.send("WHO %s c%%ant,1" % (chan))
                        else:
                                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:
@@ -100,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