]> jfr.im git - erebus.git/blobdiff - bot.py
added country display; and minor bugfixes to trivia
[erebus.git] / bot.py
diff --git a/bot.py b/bot.py
index ca7dc37e6f7a1ad13eed7897d9a6ee1dae6976cb..5f9f26f39fa38706f83b9cd8925678407e0b05c4 100644 (file)
--- a/bot.py
+++ b/bot.py
@@ -3,18 +3,19 @@
 # Erebus IRC bot - Author: John Runyon
 # "Bot" and "BotConnection" classes (handling a specific "arm")
 
-#TODO: error checking
-
 import socket, sys
 
 #bots = {'erebus': bot.Bot(nick='Erebus', user='erebus', bind='', server='irc.quakenet.org', port=6667, realname='Erebus')}
 class Bot(object):
-       def __init__(self, parent, nick, user, bind, server, port, realname):
+       def __init__(self, parent, nick, user, bind, authname, authpass, server, port, realname):
                self.parent = parent
                self.nick = nick
                self.user = user
                self.realname = realname
 
+               self.authname = authname
+               self.authpass = authpass
+
                curs = self.parent.db.cursor()
                if curs.execute("SELECT chname FROM chans WHERE bot = %s AND active = 1", (self.nick,)):
                        chansres = curs.fetchall()
@@ -43,6 +44,9 @@ class Bot(object):
 
                if pieces[1] == "001":
                        self.conn.registered(True)
+                       self.conn.send("MODE %s +x" % (pieces[2]))
+                       if self.authname is not None and self.authpass is not None:
+                               self.conn.send("AUTH %s %s" % (self.authname, self.authpass))
                        for c in self.chans:
                                self.join(c.name)
 
@@ -87,7 +91,14 @@ class Bot(object):
                                self.parent.user(nick).quit()
                                del self.parent.users[nick.lower()]
 
-               elif pieces[1] == "MODE": #TODO
+               elif pieces[1] == "NICK":
+                       oldnick = pieces[0].split('!')[0][1:]
+                       newnick = pieces[2][1:]
+                       self.parent.users[newnick.lower()] = self.parent.users[oldnick.lower()]
+                       del self.parent.users[oldnick.lower()]
+                       self.parent.user(newnick).nick(newnick)
+
+               elif pieces[1] == "MODE": #TODO parse for ops/voices (at least)
                        pass
 
        
@@ -114,7 +125,7 @@ class Bot(object):
                                                pieces.pop(1)
 
                else: # message was sent to a channel
-                       chan = self.parent.channel(target) #TODO check if bot's on channel --- in Erebus.channel() maybe?
+                       chan = self.parent.channel(target)
                        try:
                                if msg[0] == '*': # message may be addressed to bot by "*BOTNICK" trigger?
                                        if pieces[0][1:].lower() == self.nick.lower():