72 lines
2.4 KiB
Python
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)
|