]>
jfr.im git - erebus.git/blob - bot.py
7 #bots = {'erebus': bot.Bot(nick='Erebus', user='erebus', bind='', server='irc.quakenet.org', port=6667, realname='Erebus')}
9 def __init__(self
, parent
, nick
, user
, bind
, server
, port
, realname
, chans
):
14 self
.conn
= BotConnection(self
, nick
, user
, bind
, server
, port
, realname
)
18 for line
in self
.conn
.read():
20 def parse(self
, line
):
22 if not self
.conn
.registered():
23 if pieces
[0] == "PING":
24 self
.conn
.send("PONG %s" % (pieces
[1]))
25 elif pieces
[1] == "001":
26 self
.conn
.registered(True)
27 print "!!!REGISTERED!!!"
29 class BotConnection(object):
30 state
= 0 # 0=disconnected, 1=registering, 2=connected
32 def __init__(self
, parent
, nick
, user
, bind
, server
, port
, realname
):
42 self
.realname
= realname
45 self
.socket
= socket
.socket(socket
.AF_INET
, socket
.SOCK_STREAM
)
46 self
.socket
.bind((self
.bind
, 0))
47 self
.socket
.connect((self
.server
, self
.port
))
48 self
.send("NICK %s" % (self
.nick
))
49 self
.send("USER %s 0 * :%s" % (self
.user
, self
.realname
))
52 def registered(self
, done
=False):
53 if done
: self
.state
= 2
54 return self
.state
== 2
57 if self
.socket
is not None:
58 return self
.socket
.fileno()
62 #TODO: rewrite send() to queue
65 def write(self
, line
):
66 print self
.nick
, '[O]', line
67 self
.socket
.sendall(line
+"\r\n")
69 self
.buffer += self
.socket
.recv(8192)
71 while '\r\n' in self
.buffer:
72 pieces
= self
.buffer.split('\r\n', 1)
73 print self
.nick
, '[I]', pieces
[0]
74 lines
.append(pieces
[0])
75 self
.buffer = pieces
[1]