parent
85ba222f0c
commit
71e6823930
@ -0,0 +1,3 @@ |
|||||||
|
[submodule "plugins/ircked"] |
||||||
|
path = plugins/ircked |
||||||
|
url = https://github.com/kurisufriend/ircked |
@ -0,0 +1 @@ |
|||||||
|
Subproject commit e64cdf034cf4bd4fe1d8a154d655164aaa9b8572 |
@ -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) |
|
@ -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 |
|
Loading…
Reference in new issue