# 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()
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)
self.parent.user(nick).quit()
del self.parent.users[nick.lower()]
- elif pieces[1] == "MODE": #TODO
+ elif pieces[1] == "MODE": #TODO parse for ops/voices (at least)
pass
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():