diff --git a/glados_cmnds.py b/glados_cmnds.py index ec98214..8810cc1 100644 --- a/glados_cmnds.py +++ b/glados_cmnds.py @@ -1,20 +1,20 @@ -from irc_api import commands +from irc_api import api -class GladosV4(commands.CommandsPack): - @commands.command(name="bye", event=lambda m: "au revoir glados" in m.text.lower()) +class GladosV4(api.CommandsPack): + @api.command(name="bye", event=lambda m: "au revoir glados" in m.text.lower()) def greetings_bye(self, msg): """RĂ©pond "au revoir".""" self.bot.irc.send(msg.to, f"Au revoir {msg.author}") - @commands.command(name="hello", event=lambda m: "bonjour glados" in m.text.lower()) + @api.command(name="hello", event=lambda m: "bonjour glados" in m.text.lower()) def greetings_hello(self, msg): """Dit bonjour lorsque l'on salue le GLaDOS.""" self.bot.irc.send(msg.to, f"Bonjour {msg.author}") -class GladosV5(commands.CommandsPack): - @commands.command(name="test") +class GladosV5(api.CommandsPack): + @api.command(name="test") def test(self, msg): """Test de module de fonction.""" self.bot.irc.send(msg.to, "Ceci est un test") \ No newline at end of file diff --git a/irc_api/commands.py b/irc_api/api.py similarity index 91% rename from irc_api/commands.py rename to irc_api/api.py index 5ed9b63..f22da09 100644 --- a/irc_api/commands.py +++ b/irc_api/api.py @@ -2,7 +2,6 @@ from functools import wraps import logging from secrets import USER, PASSWORD from irc_api.irc import IRC -from irc_api.v5 import V5 PREFIX = "" @@ -60,15 +59,13 @@ class Bot: start : NoneType, public Runs the bot and connects it to IRC and V5 servers. """ - def __init__(self, irc_params: tuple, v5_params: tuple, channels: list, prefix: str=""): + def __init__(self, irc_params: tuple, channels: list, prefix: str=""): """Initialize the Bot instance. Parameters ---------- irc_params : tuple Contains the IRC server informations (host, port) - v5_params : tuple - Contains the V5 server informations (host, port) channels : list Contains the names of the channels on which the bot will connect. prefix : str, optionnal @@ -78,7 +75,6 @@ class Bot: PREFIX = prefix self.irc = IRC(*irc_params) - self.v5 = V5(v5_params, self.irc) self.channels = channels def start(self): @@ -90,9 +86,6 @@ class Bot: for channel in self.channels: self.irc.join(channel) - # Start V5 hadndler - self.v5.start() - # Run IRC self.irc.run() diff --git a/irc_api/v5.py b/irc_api/v5.py deleted file mode 100644 index 25dfaa7..0000000 --- a/irc_api/v5.py +++ /dev/null @@ -1,92 +0,0 @@ -""" -v5 (GLaDOS) -=========== - -Description ------------ -Manage the V5 layer of GLaDOS. -""" - -import logging -import socket -from threading import Thread -from functools import wraps - - -class V5: - """Manage connexion beetween the bot and the V5 server, and manage callbacks. - - Attributes - ---------- - irc : irc.IRC, public - An IRC instance. - - sock : ssl.SSLSocket, private - The V5 socket. - handler : Thread, private - callbacks : list, private - List of the registred callbacks. - - Methods - ------- - start : NoneType, public - Start v5 handler. - on : function, public - Add a callback to the v5 handler. - - handle : NoneType, private - Handle the incoming messages and callbacks. - """ - - def __init__(self, v5_params: tuple, irc): - """Initialize V5 handle. - - Parameters - ---------- - v5 : tuple - The information on V5 server (host, port). - irc : irc.IRC - An initialized IRC instance. - """ - self.irc = irc - self.__sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) - self.__sock.bind(v5_params) - self.__handler = Thread(target=self.__handle) - self.__callbacks = [] - - def start(self): - """Start v5 handler.""" - self.__handler.start() - logging.info("started") - - def on(self, event): - """Adds a callback to the v5 handler. - - Parameters - ---------- - event : function - ``event`` is a function taking in parameter a list of channels and a string, and return - ``True`` if the callback should be executed. - """ - def callback(func): - @wraps(func) - def wrapper(channels, message): - func(channels, message) - self.__callbacks.append((event, wrapper)) - return wrapper - - return callback - - def __handle(self): - """Handle the incoming messages and callbacks.""" - while True: - data, addr = self.__sock.recvfrom(4096) - data = data.decode() - logging.debug("received %s", data) - channels, message = data.split(":", 1) - channels = channels.split(" ") - - for event, callback in self.__callbacks: - if event(channels, message): - logging.info("passed %s", event.__name__) - callback(channels, message) diff --git a/main.py b/main.py index 5d1072a..c9f4acb 100755 --- a/main.py +++ b/main.py @@ -10,7 +10,7 @@ Create a bot's instance and manages it. import logging import re -from irc_api import commands +from irc_api import api from glados_cmnds import GladosV4, GladosV5 @@ -18,9 +18,8 @@ LOG_FORMAT = "%(asctime)s [%(levelname)s] <%(filename)s> %(funcName)s: %(message logging.basicConfig(format=LOG_FORMAT, level=logging.DEBUG) -glados = commands.Bot( +glados = api.Bot( ('irc.planet-casio.com', 6697), - ('127.0.0.1', 5555), ["#general", "#glados"], "!" ) @@ -31,7 +30,4 @@ glados.add_commands_pack(GladosV5) glados.add_help() -for i in glados.irc.callbacks: - print(i.name) - glados.start()