Move to handlers for CTCPs

This commit is contained in:
Firepup Sixfifty 2023-11-09 15:36:34 -06:00
parent 53efdfb830
commit 2c10e267e5
Signed by: Firepup650
GPG key ID: 7C92E2ABBBFAB9BA
3 changed files with 7 additions and 44 deletions

View file

@ -55,9 +55,6 @@ class bot:
def exit(self, message: str) -> NoReturn: def exit(self, message: str) -> NoReturn:
... ...
def CTCP(self, msg: str, sender: str = "", isRaw: bool = False) -> bool:
...
def msg(self, msg: str, target: str) -> None: def msg(self, msg: str, target: str) -> None:
... ...

38
bot.py
View file

@ -72,7 +72,7 @@ class bot(bare.bot):
elif ircmsg.startswith("PING "): elif ircmsg.startswith("PING "):
self.ping(ircmsg) self.ping(ircmsg)
elif len(ircmsg.split("\x01")) == 3: elif len(ircmsg.split("\x01")) == 3:
self.CTCP(ircmsg, isRaw=True) handlers.CTCP(self, ircmsg)
elif ircmsg.find("Closing Link") != -1: elif ircmsg.find("Closing Link") != -1:
self.exit("Closing Link") self.exit("Closing Link")
else: else:
@ -108,7 +108,7 @@ class bot(bare.bot):
if ircmsg.startswith("PING "): if ircmsg.startswith("PING "):
self.ping(ircmsg) self.ping(ircmsg)
elif len(ircmsg.split("\x01")) == 3: elif len(ircmsg.split("\x01")) == 3:
self.CTCP(ircmsg, isRaw=True) handlers.CTCP(self, ircmsg)
elif code == 403: elif code == 403:
self.log(f"Joining {chan} failed", "WARN") self.log(f"Joining {chan} failed", "WARN")
if origin != "null": if origin != "null":
@ -165,40 +165,6 @@ class bot(bare.bot):
logs.log(message, self.server, "EXIT") logs.log(message, self.server, "EXIT")
exit(1) exit(1)
def CTCP(self, msg: str, sender: str = "", isRaw: bool = False) -> bool:
if isRaw:
sender = msg.split("!", 1)[0][1:]
message = msg.split("PRIVMSG", 1)[1].split(":", 1)[1].strip()
kind = msg.split("\x01")[1].split(" ", 1)[0]
self.log(f'Responding to CTCP "{kind}" from {sender}')
if kind == "VERSION":
self.notice(
f"\x01VERSION FireBot {conf.__version__} (https://git.amcforum.wiki/Firepup650/fire-ircbot)\x01",
sender,
True,
)
return True
elif kind == "USERINFO":
self.notice("\x01USERINFO FireBot (Firepup's bot)\x01", sender, True)
return True
elif kind == "SOURCE":
self.notice(
"\x01SOURCE https://git.amcforum.wiki/Firepup650/fire-ircbot\x01",
sender,
True,
)
return True
elif kind == "FINGER":
self.notice("\x01FINGER Firepup's bot\x01", sender, True)
return True
elif kind == "CLIENTINFO":
self.notice(
"\x01CLIENTINFO ACTION VERSION USERINFO SOURCE FINGER\x01", sender, True
)
return True
self.log(f'Unknown CTCP "{kind}"', "WARN")
return False
def msg(self, msg: str, target: str) -> None: def msg(self, msg: str, target: str) -> None:
if not (target == "NickServ" and mfind(msg, ["IDENTIFY"], False)): if not (target == "NickServ" and mfind(msg, ["IDENTIFY"], False)):
self.log(f"Sending {bytes(msg).lazy_decode()} to {target}") self.log(f"Sending {bytes(msg).lazy_decode()} to {target}")

View file

@ -123,13 +123,13 @@ def PRIVMSG(bot: bare.bot, msg: str) -> Union[None, str]:
) )
handled = True handled = True
if not handled and len(message.split("\x01")) == 3: if not handled and len(message.split("\x01")) == 3:
if not bot.CTCP(message, name): if not CTCP(bot, message):
CTCP = message.split("\x01")[1] kind = message.split("\x01")[1]
if CTCP == "ACTION ducks": if kind == "ACTION ducks":
bot.msg("\x01ACTION gets hit by a duck\x01", chan) bot.msg("\x01ACTION gets hit by a duck\x01", chan)
elif CTCP.startswith("ACTION ducks"): elif kind.startswith("ACTION ducks"):
bot.msg( bot.msg(
f"\x01ACTION gets hit by {CTCP.split(' ', 2)[2]}\x01", f"\x01ACTION gets hit by {kind.split(' ', 2)[2]}\x01",
chan, chan,
) )
if chan in bot.channels and bot.channels[chan] >= bot.interval: if chan in bot.channels and bot.channels[chan] >= bot.interval: