def main(): args = _arg_parser_factory().parse_args() msg: str = args.msg use_udp: bool = args.udp host: str = args.host port: int = args.port coder = Base85Coder() logger = ConsoleLogger() # create socket if use_udp: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sender = UDPSender(sock, (host, port), coder) reader = UDPReader(sock, coder) else: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((host, port)) sender = TCPSender(sock, coder) reader = TCPReader(sock, coder) sender.send(b'') sender.send(b'msg:' + msg.encode()) for line in reader.read(): logger.log(line.decode()) reader.close()
class WooferBot(irc.IRCClient): def __init__(self): self.logger = ConsoleLogger() self.nickname = config['nickname'] self.password = config['password'] self.lineRate = 0.67 def connectionMade(self): irc.IRCClient.connectionMade(self) self.logger.log("[connected at %s]" % time.asctime(time.localtime(time.time()))) def connectionLost(self, reason): irc.IRCClient.connectionLost(self, reason) self.logger.log("[disconnected at %s]" % time.asctime(time.localtime(time.time()))) # callbacks for events def signedOn(self): """Called when bot has successfully signed on to server.""" for c in self.factory.channels: self.join(c) def joined(self, channel): """This will get called when the bot joins the channel.""" self.logger.log("[I have joined %s]" % channel) def privmsg(self, user, channel, msg): """This will get called when the bot receives a message.""" user = user.split('!', 1)[0] self.logger.log("<%s> %s" % (user, msg)) WooferHandler.handleMessage(self, user, channel.replace('#', ''), msg) # simple commands can be handled here locally, but ones that # require external lookups should be scheduled on the dispatcher def action(self, user, channel, msg): """This will get called when the bot sees someone do an action.""" user = user.split('!', 1)[0] self.logger.log("* %s %s" % (user, msg)) # irc callbacks def alterCollidedNick(self, nickname): """ Generate an altered version of a nickname that caused a collision in an effort to create an unused related name for subsequent registration. """ return self.nickname + '^'