#!/bin/env python import os import subprocess class Channel(object): """Channel class""" def __init__(self, name, network, nick, extensions=None): self.__name = name self.__nick = nick self.__in = open("%s/irc/%s/%s/in" % (os.environ["HOME"], network, name), "w", 1) self.__out = open("%s/irc/%s/%s/out" % (os.environ["HOME"], network, name), "r") self.__exts = extentions self.__mode = None def message(self, message): self.__in.write(message + "\n") def action(self, action): message("/j %s" % action) class Sexiibot(object): """Core sexiibot class""" def __init__(self, new=True, server, port=None, ssl=False, channel, nick, realname=None, extensions, iipath=None) if new: self.__server = server else: self.__server = None self.__port = port self.__ssl = ssl self.__channels = channels self.__nick = nick self.__realname = realname else: self.__realname = realname self.__in = None self.__out = None self.__iipath = iipath sekf.__iiproc = None def start(self): exists = os.path.isfile("%s/irc/%s/in" % (os.environ["HOME"], self.__server)) if not self.__server is None: # Check if a ii instance isn't already running on our potentially existing FIFO if exists: print("FIFO for that server already exist.") print("Please clean the irc folder and try again.") sys.exit(1) if self.__port is None: if self.__ssl: self.__port = 6697 else: self.__port = 6667 cmd = [iipath, "-s", self.__server, "-p", self.__port, "-n", self.__nick, "-f", self.__realname] if self.__ssl: cmd += ["-e", "ssl"] self.__iiproc = subprocess.Popen(cmd) # self.__iiproc.terminate() later to stop self.__in = open("%s/irc/%s/in" % (os.environ["HOME"], self.__server), "w", 1) def messageServer(self, message): self.__in.write(message + "\n") def join(self, channel): messageServer("/j %s" % channel) def messageChannel(self, channel, message): self.__channels[channel].message(message)