Parse status codes instead of the message itself, standardized AND less abusable

This commit is contained in:
Firepup Sixfifty 2023-11-06 15:34:23 -06:00
parent 5031e39a70
commit 5078821684
Signed by: Firepup650
GPG key ID: 7C92E2ABBBFAB9BA

18
bot.py
View file

@ -34,16 +34,17 @@ class bot:
self.sock.connect((self.address, self.port)) self.sock.connect((self.address, self.port))
self.send(f"USER {self.nick} {self.nick} {self.nick} {self.nick}\n") self.send(f"USER {self.nick} {self.nick} {self.nick} {self.nick}\n")
self.send(f"NICK {self.nick}\n") self.send(f"NICK {self.nick}\n")
ircmsg = ""
while ( while (
ircmsg.find("MODE " + self.nick) == -1 ircmsg.find(f"MODE {self.nick}") == -1
and ircmsg.find("PRIVMSG " + self.nick) == -1 and ircmsg.find(f"PRIVMSG {self.nick}") == -1
): ):
ircmsg = self.recv().decode() ircmsg = self.recv().decode()
if ircmsg != "": if ircmsg != "":
print(bytes(ircmsg).lazy_decode()) print(bytes(ircmsg).lazy_decode())
if ircmsg.find("NICKLEN=") != -1: if ircmsg.find("NICKLEN=") != -1:
self.nicklen = int(ircmsg.split("NICKLEN=")[1].split(" ")[0]) self.nicklen = int(ircmsg.split("NICKLEN=")[1].split(" ")[0])
self.np = re.compile(npbase.replace("MAX", f"{nicklen}")) self.np = re.compile(npbase.replace("MAX", f"{self.nicklen}"))
self.log(f"NICKLEN set to {nicklen}") self.log(f"NICKLEN set to {nicklen}")
elif ircmsg.find("Nickname") != -1: elif ircmsg.find("Nickname") != -1:
self.log("Nickname in use", "WARN") self.log("Nickname in use", "WARN")
@ -80,22 +81,27 @@ class bot:
while True: while True:
ircmsg = self.recv().decode() ircmsg = self.recv().decode()
if ircmsg != "": if ircmsg != "":
code = 0
try:
code = int(ircmsg.split(" ", 2)[1].strip())
except (IndexError, ValueError):
pass
print(bytes(ircmsg).lazy_decode()) print(bytes(ircmsg).lazy_decode())
if ircmsg.startswith("PING "): if ircmsg.startswith("PING "):
ping(ircmsg) ping(ircmsg)
elif len(ircmsg.split("\x01")) == 3: elif len(ircmsg.split("\x01")) == 3:
CTCPHandler(ircmsg, isRaw=True) CTCPHandler(ircmsg, isRaw=True)
elif ircmsg.find("No such channel") != -1: elif code == 403:
self.log(f"Joining {chan} failed", "WARN") self.log(f"Joining {chan} failed", "WARN")
if origin != "null": if origin != "null":
sendmsg(f"{chan} is an invalid channel", origin) sendmsg(f"{chan} is an invalid channel", origin)
break break
elif ircmsg.find("Cannot join channel (+i)") != -1: elif code == 473:
self.log(f"Joining {chan} failed (Private)", "WARN") self.log(f"Joining {chan} failed (Private)", "WARN")
if origin != "null": if origin != "null":
sendmsg(f"Permission denied to channel {chan}", origin) sendmsg(f"Permission denied to channel {chan}", origin)
break break
elif ircmsg.find("End of") != -1: elif code == 366:
log(f"Joining {chan} succeeded", server) log(f"Joining {chan} succeeded", server)
if origin != "null": if origin != "null":
sendmsg(f"Joined {chan}", origin) sendmsg(f"Joined {chan}", origin)