From b9af403a43227816733bce2cd44bc01918c4a9bc Mon Sep 17 00:00:00 2001 From: raspbeguy Date: Wed, 1 Jun 2016 15:57:39 +0200 Subject: [PATCH] =?UTF-8?q?thread,=20s=C3=A9paration=20des=20fichiers,=20t?= =?UTF-8?q?oussa...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ sexiibot/channel.py | 41 +++++++++++++++++++++++++++++++++++++++++ sexiibot/core.py | 35 +++++++++++------------------------ 3 files changed, 55 insertions(+), 24 deletions(-) create mode 100644 sexiibot/channel.py diff --git a/.gitignore b/.gitignore index 7f7cccc..8c0df18 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,6 @@ docs/_build/ # PyBuilder target/ +# vim +*.swp +*.swo diff --git a/sexiibot/channel.py b/sexiibot/channel.py new file mode 100644 index 0000000..103aabe --- /dev/null +++ b/sexiibot/channel.py @@ -0,0 +1,41 @@ +#!/bin/env python + +import time +import threading +#from core import Sexiibot + +class Channel(object): + """Channel class""" + + def __init__(self, name, bot, extensions=None): + bot.join(name) + self.__name = name + self.__bot = bot + self.__in = open(bot.getIrcPath() + "%s/in" % name, 'w', 1) + self.__out = open(bot.getIrcPath() + "%s/out" % name, 'r') + self.__exts = extentions + self.__mode = None + self.__alive = True + self.__thread = threading.Thread(target=watch).start() + + + def message(self, msg): + self.__in.write(msg + "\n") + + def action(self, action): + self.message("/j %s" % action) + + def leave(self, msg="sexiibot, the bot you're dreaming about"): + self.message("/l %s" % msg) + self.__alive = False + self.__thread.join() + self.__in.close() + self.__out.close() + + def watch(self): + while self.__alive: + line = self.__out.readline() + if line: + print(line) #À ce stade du développement on ne traite rien + time.sleep(0.1) + diff --git a/sexiibot/core.py b/sexiibot/core.py index dc37a32..772cb7d 100644 --- a/sexiibot/core.py +++ b/sexiibot/core.py @@ -2,30 +2,12 @@ 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) - - +from channel import Channel class Sexiibot(object): """Core sexiibot class""" - def __init__(self, new=True, server, port=None, ssl=False, channel, nick, realname=None, extensions, iipath=None) + def __init__(self, server, nick, new=True, port=None, ssl=False, channel=None, realname=None, extensions=None, iipath=None): if new: self.__server = server else: @@ -34,7 +16,8 @@ class Sexiibot(object): self.__ssl = ssl self.__channels = channels self.__nick = nick - self.__realname = realname + if not realname is None: + self.__realname = nick else: self.__realname = realname self.__in = None @@ -43,7 +26,7 @@ class Sexiibot(object): sekf.__iiproc = None def start(self): - exists = os.path.isfile("%s/irc/%s/in" % (os.environ["HOME"], self.__server)) + exists = os.path.isfile(self.getIrcPath() + "in") if not self.__server is None: # Check if a ii instance isn't already running on our potentially existing FIFO if exists: @@ -59,13 +42,17 @@ class Sexiibot(object): 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) + self.__in = open(self.getIrcPath() + "in", 'w', 1) + self.__out = open(self.getIrcPath() + "out", 'r') def messageServer(self, message): self.__in.write(message + "\n") def join(self, channel): - messageServer("/j %s" % channel) + self.messageServer("/j %s" % channel) def messageChannel(self, channel, message): self.__channels[channel].message(message) + + def getIrcPath(): + return "%s/irc/%s/" % (os.environ["HOME"], self.__server)