client class

master
sidekek 4 years ago
parent 7a79505459
commit 6ca4d25c10
  1. 64
      ircked.py

@ -1,4 +1,14 @@
import socket
def default_event_handler(msg, ctx):
print("<<", str(msg))
if msg.command == "PING":
message.manual("", "PONG", msg.parameters).send(ctx.socket)
if msg.command == "001":
message.manual("", "JOIN", ["#qrs"]).send(ctx.socket)
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)
class message:
def __init__(self):
self.prefix = ""
@ -31,22 +41,42 @@ class message:
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"))
class privmsg:
def __init__(self):
self.msg = message()
@staticmethod
def build(fro, to, body):
pm = privmsg()
pm.msg.prefix = ":"+fro
pm.msg.command = "PRIVMSG"
pm.msg.parameters[0] = to
for word in body.split(" "):
pm.msg.parameters.append(word)
pm.msg.parameters[1] = ":"+pm.msg.parameters[1]
class bot:
def __init__(self):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.con_to = ()
self.nick = "dorfl"
self.user = "dorfl"
self.real = "dorfl"
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)
dorfl = bot()
dorfl.connect_register("irc.rizon.net", 7000)
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)
dorfl.run()
s.close()
Loading…
Cancel
Save