minerbot/colorbot.py

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")