41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import socket;
|
|
|
|
class NotRunningException (Exception):
|
|
pass;
|
|
|
|
class IRCBot:
|
|
# The IRC bot class. This can be reused, and will be the superclass of the actual minerbot.
|
|
def __init__(self, name, user, realname, owner):
|
|
self.name = name;
|
|
self.owner = owner;
|
|
self.user = user;
|
|
self.realname = realname;
|
|
self.running = False;
|
|
|
|
def begin(self, server, port, channels):
|
|
self.irc = socket.socket();
|
|
self.running = True;
|
|
self.irc.connect((server, port));
|
|
self.irc.send("NICK " + self.name + "\r\n");
|
|
self.irc.send("USER " + self.user + " 8 * " + self.realname + "\r\n");
|
|
for chan in channels:
|
|
self.irc.send("JOIN " + chan + "\r\n");
|
|
while True:
|
|
data = self.irc.recv(4096);
|
|
#print data;
|
|
if data.find("PING") != -1:
|
|
self.irc.send("PONG " + data.split()[1] + "\r\n");
|
|
elif data.find("PRIVMSG") != -1:
|
|
self.spokento(data)
|
|
|
|
def spokento(self, data):
|
|
if not self.running:
|
|
raise Exception("spokento was prematurely called.");
|
|
data_parts = data.split(" ",3);
|
|
id = data_parts[0];
|
|
nick = id.split("!")[0][1:];
|
|
message = data_parts[3][1:-2];
|
|
print(nick + ": " + message);
|
|
if nick == self.owner and message.find("!colortest") == 0:
|
|
self.irc.send("PRIVMSG "+data_parts[2]+" :\x034,1yo\x0f")
|