def main(): #Do requests SSL stuff #requests.packages.urllib3.disable_warnings() #Get configuration parser = SafeConfigParser() parser.read('/etc/dinofactsbot/config.ini') config = parser._sections['defaults'] #Configure logging logger = logging.getLogger('DINOFACTSBOT') logger.setLevel(logging.INFO) handler = TimedRotatingFileHandler(config['log_file'],when='midnight') handler.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) #Initialize rest client client = RestClient(config['api_host']) #Initialize reddit client logger.info('Initializing reddit API client') r = praw.Reddit(user_agent = config['user_agent']) #login logger.info('Attempting to log in to reddit with credentials from config.ini') r.login(config['bot_user'], config['bot_pass']) #Get reddit user logger.info('Retrieving subreddit: ' + config['subreddit']) subreddit = r.get_subreddit(config['subreddit']) #Main loop of program logger.info('Beginning monitor..') logger.info('Retrieving comments with limit of ' + str(config['limit'])) while True: try: comments = subreddit.get_comments(limit=int(config['limit'])) for comment in comments: if client.isCommentProcessed(comment.id) is 0: logger.info('Processing ' + comment.id + ' by user ' + comment.author.name) record = client.insertRecord(comment) logger.info('New log record created: ' + str(record['id'])) if (config['trigger'] in comment.body): logger.info('Found trigger in ' + comment.id) fact = client.getRandom() logger.info('Retrieved fact:{fact} '.format(fact=fact['id'])) comment.reply(fact['fact']) logger.info('Updating record field') client.updateRecord(record['id'], fact['id']) else: logger.info('No trigger found. Ignorinng comment') sleep(int(config['poll_time'])) except Exception as e: logger.error(e)