def run_praw_tasks(): global logger from bot import RedditAgent cfg = configparser.ConfigParser() r = RedditAgent(ini_section='flairbot', user_agent='Flair helper by /u/gschizas version 0.2') search_space = json.loads(cfg.get('tasks', 'bitcoin_flair')) subreddits = {s[0] for s in search_space} offending_users = [] sys.exit(99) for subreddit in subreddits: sr = r.get_subreddit(subreddit) flair_list = list(sr.get_flair_list(limit=None)) flair_templates = sr.get_flair_choices() default_flair_text = {f['flair_css_class'][6:]: f['flair_text'] for f in flair_templates['choices']} extended_flair_list = [dict( f.items() | {'is_custom': default_flair_text.get(f['flair_css_class'], '***') != f['flair_text']}.items()) for f in flair_list] with open('flair_list-{}.json'.format(subreddit), mode='w', encoding='utf-8') as f: json.dump(extended_flair_list, f, ensure_ascii=False, sort_keys=True) for flair_item in flair_list: flair_text = flair_item.get('flair_text') if flair_text: bitcoin_addresses = re.findall('[13][a-km-zA-HJ-NP-Z0-9]{26,33}', flair_text) if len(bitcoin_addresses) > 0: logging.warning(bitcoin_addresses) if any([check_bc(bc) for bc in bitcoin_addresses]): offending_users.append([subreddit, flair_item['user']]) if check_hyperlink(flair_text): offending_users.append([subreddit, flair_item['user']]) if len(offending_users) > 0: logging.warning(offending_users) existing_users = json.loads(cfg.get('tasks', 'bitcoin_flair')) full_users = offending_users + existing_users cfg.set('tasks', 'bitcoin_flair', json.dumps(list({(x[0], x[1]) for x in full_users}))) cfg.write(sys.stdout) with open('flair-bot.ini', 'w') as f: cfg.write(f) r.clear_authentication()
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from bot import RedditAgent import datetime r = RedditAgent(ini_section='muteuserbot') sr1 = r.get_subreddit('europe') checked_users = [] muted_users = list(sr1.get_muted()) modmail = list(sr1.get_mod_mail(limit=20)) for message in modmail: author = message.author if author in checked_users: continue if author in muted_users: print('{} is already muted'.format(author)) checked_users.append(author) continue created = datetime.datetime.fromtimestamp(author.created_utc) dt = datetime.datetime.utcnow() - created if dt.total_seconds() > 1 * 60 * 60: # half an hour seems enough print('{} is old enough ({})'.format(author, created.isoformat())) checked_users.append(author) continue print('Muting {} for message {}'.format(author, message.subject)) message.mute_modmail_author()
background:#000; color:#FFF; font-size:50px; line-height:500%; text-align:center; } body { overflow: hidden; } .moderator .styleToggle { z-index: 99999; background-color: white; text-align: center; }\n\n""" ) for subreddit in subreddits: sr = r.get_subreddit(subreddit) # get stylesheet current_stylesheet = sr.get_stylesheet()["stylesheet"] # check if stylesheet already has the changes if stylesheet_addon in current_stylesheet: new_stylesheet = current_stylesheet.replace(stylesheet_addon, "") print("Removing France solidarity stylesheet fragment on " + subreddit) else: new_stylesheet = stylesheet_addon + current_stylesheet print("Adding France solidarity stylesheet fragment" + subreddit) # update stylesheet result = sr.set_stylesheet(new_stylesheet) print(result)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from bot import RedditAgent import ruamel.yaml as yaml r = RedditAgent(ini_section="muteuser") sr = r.get_subreddit("europe") muted_users = list(sr.get_muted(user_only=False)) muted_usernames = [user["name"].name for user in muted_users] permamutes = yaml.load(sr.get_wiki_page("permamuted").content_md) for permamute in permamutes: print(permamute, permamute in muted_usernames) if permamute not in muted_usernames: sr.add_mute(permamute)