diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..8738fb6 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "plugins/ircked"] + path = plugins/ircked + url = https://github.com/kurisufriend/ircked diff --git a/plugins/ircked b/plugins/ircked new file mode 160000 index 0000000..e64cdf0 --- /dev/null +++ b/plugins/ircked @@ -0,0 +1 @@ +Subproject commit e64cdf034cf4bd4fe1d8a154d655164aaa9b8572 diff --git a/plugins/ircked/__init__.py b/plugins/ircked/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/plugins/ircked/bot.py b/plugins/ircked/bot.py deleted file mode 100644 index 468f32e..0000000 --- a/plugins/ircked/bot.py +++ /dev/null @@ -1,36 +0,0 @@ -import socket -from ircked.message import * -def default_event_handler(msg, ctx): - print("<<", str(msg)) - if msg.command == "PING": - message.manual("", "PONG", msg.parameters).send(ctx.socket) - elif msg.command == "001": - message.manual("", "JOIN", ["#qrs"]).send(ctx.socket) - elif msg.command == "PRIVMSG" and "\x01VERSION\x01" in msg.parameters: - message.manual(":"+msg.parameters[0], "PRIVMSG", [msg.prefix[1:].split("!")[0], ":\x01dorfl bot\x01"]).send(ctx.socket) - if msg.command == "PRIVMSG": - pm = privmsg.parse(msg) - if pm.bod == ".hello": - privmsg.build(ctx.nick, pm.to, "hello, world!").msg.send(ctx.socket) -class irc_bot: - def __init__(self, nick="dorfl", user="dorfl", real="dorfl"): - self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self.con_to = () - self.nick = nick - self.user = user - self.real = real - self.behaviour = {} - def connect_register(self, addy, port): - self.socket.connect((addy, port)) - self.socket.send(f"USER {self.user} 0 * :{self.real}\r\n".encode("utf-8")) - self.socket.send(f"NICK {self.nick}\r\n".encode("utf-8")) - self.con_to = (addy, port) - def run(self, event_handler = default_event_handler): - while True: - data = self.socket.recv(512).decode("utf-8") - if not data: continue - msgs = [message.parse(raw) for raw in [part for part in data.split("\r\n") if part]] - for msg in msgs: - event_handler(msg, self) - def sendraw(self, msg): - msg.send(self.socket) \ No newline at end of file diff --git a/plugins/ircked/message.py b/plugins/ircked/message.py deleted file mode 100644 index 8f7fcd7..0000000 --- a/plugins/ircked/message.py +++ /dev/null @@ -1,56 +0,0 @@ -class message: - def __init__(self): - self.prefix = "" - self.command = "" - self.parameters = [] - @staticmethod - def parse(raw): - msg = message() - try: - raw = raw.split(" ") - msg.prefix = "" if not(raw[0].startswith(":")) else raw[0] - if msg.prefix: - raw.pop(0) - msg.command = raw[0] - msg.parameters = raw[1:][0:15] - except: - pass - return msg - @staticmethod - def manual(pre, com, par): - msg = message() - msg.prefix = pre - msg.command = com - msg.parameters = par - return msg - def __str__(self): - return ("" if not self.prefix else self.prefix+" ") + self.command + " " + (" ".join(self.parameters) if not(type(self.parameters) == type(str)) else self.parameters) - def send(self, sock): - sock.send((str(self)+"\r\n").encode("utf-8")) - print(self.parameters) - print(">>", str(self)) - -class privmsg: - def __init__(self): - self.msg = message() - self.fr = "" - self.to = "" - self.bod = "" - @staticmethod - def build(fro, to, body): - pm = privmsg() - pm.msg.prefix = ":"+fro - pm.msg.command = "PRIVMSG" - pm.msg.parameters.append(to) - for word in body.split(" "): - pm.msg.parameters.append(word) - pm.msg.parameters[1] = ":"+pm.msg.parameters[1] - return pm - @staticmethod - def parse(msg): - pm = privmsg() - pm.msg = msg - pm.fr = msg.prefix[1:] - pm.to = msg.parameters[0] - pm.bod = (" ".join(msg.parameters) if not(type(msg.parameters) == type(str)) else msg.parameters).split(":", 1)[1] - return pm \ No newline at end of file