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):
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:]
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:
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
cbret = callback(self, user, chan, target, *pieces[1:])
if cbret is NotImplemented:
self.msg(user, "Command not implemented.")
- else:
- self.msg(user, "No such command.")
def msg(self, target, msg):
+ if target is None or msg is None: return
+
if isinstance(target, self.parent.User): self.conn.send("NOTICE %s :%s" % (target.nick, msg))
elif isinstance(target, self.parent.Channel): self.conn.send("PRIVMSG %s :%s" % (target.name, msg))
elif isinstance(target, basestring):