def __init__(self, **kwargs): '''Our initializer that sets our server attributes''' self.server = kwargs.get('server',"irc.freenode.net") self.port = kwargs.get('port',"6667") self.channel = kwargs.get('channel',"#bender-test") self.botnick = kwargs.get('botnick',"BenderBot") self.nickmsg = kwargs.get('nickmsg', 'Bite my shiny metal ass') self.logger = kwargs.get('logger', get_logger()) self.wait = kwargs.get('wait', 0) self.queue = kwargs.pop('queue', None)
def test_logger_info(self): logger = get_logger(level='INFO') self.assertTrue(logger)
def __init__(self, *args, **kwargs): super(ArchiveQueue, self).__init__() self.config = get_config() self.logger = get_logger(level='INFO') self.irccfg = dict(self.config.items('IRC')) self.exchange = kwargs.pop('exchange')
def test_logger_debug(self): logger = get_logger(level='DEBUG') self.assertTrue(logger)
def main(): """This is the main BenderBot script, it ties all the pieces together and runs our active bot""" # handle CTRL+C nicely signal.signal(signal.SIGINT, quit) # handle Linux kill SIGTERM signal.signal(signal.SIGTERM, quit) # get our configuration config = get_config() # process args for debug parser = argparse.ArgumentParser() parser.add_argument("--debug", action="store_true", dest="debug", default=False, help="Turn on verbose debugging") args = parser.parse_args() # set logging level based on argparse if args.debug: logger = get_logger(level="DEBUG") else: logger = get_logger(level="INFO") # Connect to the RabbitMQ server cfg = dict(config.items("RabbitMQ")) queue = Queue(**cfg) # Connect to IRC cfg = dict(config.items("IRC")) # Catch exceptions to restart Bot if dead wait = 60 while True: try: irc = IRC(logger=logger, queue=queue, **cfg) irc.connect() if cfg.has_key("password"): irc.identify(cfg["password"]) sleep(1) irc.joinchannel() # Start the IRC read process that handles PING/PONG, # and adding any IRC messages to RabbitMQ logger.info("Starting IRCProcess Read") irc_read = IRCProcess(name="irc_read", target="read", logger=logger, config=config, queue=queue, irc=irc) irc_read.daemon = True irc_read.start() # Start the IRC write process logger.info("Starting IRCProcess Write") irc_write = IRCProcess(name="irc_write", target="write", logger=logger, config=config, queue=queue, irc=irc) irc_write.daemon = True irc_write.start() # Keep the Bot alive as long as our IRC Read/Write # process are alive while irc_write.is_alive() and irc_read.is_alive(): # take a nap ;) sleep(1) # the only way we end up here is if irc_write or irc_read died, # lets report the status of each and raise an exception write, read = (irc_write.is_alive(), irc_read.is_alive()) if not write: logger.error("IRC Write process alive: %s" % write) if read: logger.warn("Shutting down IRC Read process") irc_read.terminate() if not read: logger.error("IRC Read process alive: %s" % read) if write: logger.warn("Shutting down IRC Write process") irc_write.terminate() # Finally raise an Exception raise Exception("BenderBot shutting down") # Capture any exception and sleep for our wait time # before attempt to restart the bot except Exception, e: logger.error(e) logger.warn("Waiting %s seconds before restarting..." % wait) sleep(wait)