sexiibot/sexiibot/core.py

72 lines
2.4 KiB
Python

#!/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)