From 7a79505459ee686cf9c932c67a95eaf456397622 Mon Sep 17 00:00:00 2001 From: sidekek Date: Thu, 14 Oct 2021 12:31:21 -0400 Subject: [PATCH] init --- ircked.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ readme.txt | 2 ++ 2 files changed, 54 insertions(+) create mode 100644 ircked.py create mode 100644 readme.txt diff --git a/ircked.py b/ircked.py new file mode 100644 index 0000000..2ca0cae --- /dev/null +++ b/ircked.py @@ -0,0 +1,52 @@ +import socket +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)) + +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +s.connect(("irc.rizon.net", 7000)) +#s.send("PASS none\r\n".encode("utf-8")) +s.send("USER dorfl 0 * :dorfl\r\n".encode("utf-8")) +s.send("NICK dorfl\r\n".encode("utf-8")) + +while True: + data = s.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: + print("<<", str(msg)) + if msg.command == "PING": + message.manual("", "PONG", msg.parameters).send(s) + if msg.command == "001": + message.manual("", "JOIN", ["#qrs"]).send(s) + if msg.command == "PRIVMSG" and "\x01VERSION\x01" in msg.parameters: + message.manual(":"+msg.parameters[0], "PRIVMSG", [msg.prefix[1:].split("!")[0], ":\x01dorfl bot\x01"]).send(s) +s.close() \ No newline at end of file diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..4680fc1 --- /dev/null +++ b/readme.txt @@ -0,0 +1,2 @@ +simple framework for irc following rfc2812 +