from config import * # On IRC, we have to use exclamation marks for commands, because otherwise they can overrule import irc.bot import irc.strings from irc.client import ip_numstr_to_quad, ip_quad_to_numstr import os import requests print(IRC_SERVER) class TestBot(irc.bot.SingleServerIRCBot): def __init__(self, channel, nickname, server, port=6667): irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname) self.channel = channel def on_nicknameinuse(self, c, e): c.nick(c.get_nickname() + "_") def on_welcome(self, c, e): c.join(self.channel) def on_privmsg(self, c, e): self.do_command(e, e.arguments[0]) def on_pubmsg(self, c, e): a = e.arguments[0].split(":", 1) if len(a) > 1 and irc.strings.lower(a[0]) == irc.strings.lower( self.connection.get_nickname() ): self.do_command(e, a[1].strip()) return def on_dccmsg(self, c, e): # non-chat DCC messages are raw bytes; decode as text text = e.arguments[0].decode('utf-8') c.privmsg("You said: " + text) def on_dccchat(self, c, e): if len(e.arguments) != 2: return args = e.arguments[1].split() if len(args) == 4: try: address = ip_numstr_to_quad(args[2]) port = int(args[3]) except ValueError: return self.dcc_connect(address, port) def do_command(self, e, cmd): nick = e.source.nick c = self.connection """ if cmd == "disconnect": self.disconnect() elif cmd == "die": self.die() elif cmd == "stats": for chname, chobj in self.channels.items(): c.notice(nick, "--- Channel statistics ---") c.notice(nick, "Channel: " + chname) users = sorted(chobj.users()) c.notice(nick, "Users: " + ", ".join(users)) opers = sorted(chobj.opers()) c.notice(nick, "Opers: " + ", ".join(opers)) voiced = sorted(chobj.voiced()) c.notice(nick, "Voiced: " + ", ".join(voiced)) elif cmd == "dcc": dcc = self.dcc_listen() c.ctcp( "DCC", nick, f"CHAT chat {ip_quad_to_numstr(dcc.localaddress)} {dcc.localport}", ) """ if cmd.startswith("print"): r = requests.get(cmd.split(" ")[1:][0], allow_redirects=True) open(IMAGE_PATH, 'wb').write(r.content) os.system(PRINT_COMMAND) else: c.notice(nick, "Not understood: " + cmd) bot = TestBot("printer", "printerbottest", IRC_SERVER, IRC_PORT) bot.start()