def __init__(self): warning_filter.ignore() self.config = ConfigParser() self.config.read(resource_filename('config', 'bot_config.ini')) self.mark_as_read, self.catch_http_exception, self.delete_after, self.verbose, self.update_interval, \ subreddit, generate_stats, www_path = self._bot_variables() self.logger = logprovider.setup_logging( log_level=("DEBUG", "INFO")[self.verbose], web_log_path='log.log') self.multi_thread = MultiThreader() self.lock = self.multi_thread.get_lock() self.database_update = Database() self.database_cmt = Database() self.database_subm = Database() try: self.praw_handler = RoverHandler() self.responders = [] self.load_responders() self.submission_poller = praw.Reddit( user_agent=self.config.get("SUBMISSION_BOT", "description"), client_id=self.config.get("SUBMISSION_BOT", "app_key"), client_secret=self.config.get("SUBMISSION_BOT", "app_secret"), refresh_token=self.config.get("SUBMISSION_BOT", "refresh_token")) except Exception as e: # I am sorry linux, but ConnectionRefused Error can't be imported. self.logger.error(e) self.logger.error(traceback.print_exc()) exit(-1) if generate_stats: # Not everyone hosts a webserver, not everyone wants stats. self.stats = StatisticsFeeder(self.database_update, self.praw_handler, www_path) else: self.stats = None self.sub = self.submission_poller.subreddit(subreddit) self.submissions = self.sub.stream.submissions(pause_after=-1) self.comments = self.sub.stream.comments(pause_after=-1) self.multi_thread.go([self.comment_thread], [self.submission_thread], [self.update_thread]) self.multi_thread.join_threads()
def __init__(self): warning_filter.ignore() self.config = ConfigParser() self.config.read(resource_filename('config', 'bot_config.ini')) self.mark_as_read, self.catch_http_exception, self.delete_after, self.verbose, self.update_interval, \ subreddit, generate_stats, www_path = self._bot_variables() self.logger = logprovider.setup_logging(log_level=("DEBUG", "INFO")[self.verbose], web_log_path=www_path + '_data/weblog.txt') self.multi_thread = MultiThreader() self.lock = self.multi_thread.get_lock() self.database_update = Database() self.database_cmt = Database() self.database_subm = Database() try: self.praw_handler = RoverHandler() self.responders = [] self.load_responders() self.submission_poller = praw.Reddit(user_agent='Submission-Poller for several logins by /u/DarkMio', handler=self.praw_handler) self.comment_poller = praw.Reddit(user_agent='Comment-Poller for several logins by /u/DarkMio', handler=self.praw_handler) except Exception as e: # I am sorry linux, but ConnectionRefused Error can't be imported. self.logger.error("PRAW Multiprocess server does not seem to be running. " "Please make sure that the server is running and responding. " "Bot is shutting down now.") self.logger.error(e) self.logger.error(traceback.print_exc()) exit(-1) if generate_stats: # Not everyone hosts a webserver, not everyone wants stats. self.stats = StatisticsFeeder(self.database_update, self.praw_handler, www_path) else: self.stats = None self.submissions = praw.helpers.submission_stream(self.submission_poller, subreddit, limit=None, verbosity=0) self.comments = praw.helpers.comment_stream(self.comment_poller, subreddit, limit=None, verbosity=0) self.multi_thread.go([self.comment_thread], [self.submission_thread], [self.update_thread]) self.multi_thread.join_threads()
+ self.outro_drop ) def init(database, handler): """Init Call from module importer to return only the object itself, rather than the module.""" return Massdrop(database, handler) if __name__ == "__main__": from core import logprovider from core.database import Database from core.handlers import RoverHandler from time import strptime logger = logprovider.setup_logging() mt = MassdropText("bot_config.ini") print(mt) db = Database() md = Massdrop(db, RoverHandler()) thread_dict = { "thing": md.session.get_info(thing_id="t1_cv0hu2w"), # could be unsafe, but is immensely faster "created": strptime("2015-09-14 00:11:11", "%Y-%m-%d %H:%M:%S"), "lifetime": strptime("2015-09-14 00:11:11", "%Y-%m-%d %H:%M:%S"), "last_updated": strptime("2015-09-14 00:11:11", "%Y-%m-%d %H:%M:%S"), "interval": 3600, } md.update_procedure(**thread_dict)
if self.database.retrieve_thing(thread_id, self.BOT_NAME): return False self.add_comment(thing.name, self.RESPONSE) self.database.insert_into_storage(thread_id, self.BOT_NAME) return True return False def on_new_message(self, message): text = "New message from /u/{author}:\n\n---\n\n{body}" if not message.was_comment: author, body = message.author, message.body self.session.send_message('FT7G-G', message.subject, text.format(author=author, body=body)) self.session.send_message('DarkMio', message.subject, text.format(author=author, body=body)) def init(database, handler): """Init Call from module importer to return only the object itself, rather than the module.""" return LeafeatorBot(database, handler) if __name__ == '__main__': from core.database import Database from core.logprovider import setup_logging from core.handlers import RoverHandler logger = setup_logging(log_level="DEBUG") db = Database() lb = LeafeatorBot(db, RoverHandler()) lb.test_single_comment('cuomou4') # lb.execute_submission(subm)
def execute_comment(self, comment): if comment.subreddit.display_name.lower() == 'dota2' or random() <= 0.001: reply = self.produce_dank_maymays(comment.body) if reply: self.add_comment(comment.name, reply) return True def produce_dank_maymays(self, message): msg = '' i = 0 while(not (10 < len(msg) < 210)): if i > 4: msg = '' break msg = self.brain.reply(message) i += 1 return msg def init(database, handler): return MioMarkov(database, handler) if __name__ == '__main__': from core.logprovider import setup_logging from core.handlers import RoverHandler from core.database import Database logger = setup_logging('DEBUG') mm = MioMarkov(Database(), RoverHandler()) mm.test_single_comment('cvfmf9e')