-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsynccompanion.py
65 lines (60 loc) · 2.27 KB
/
synccompanion.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import logging
import sys
import argparse
import common
import configparser
import logger
import reddit
import re
import checklog
import core
from datetime import datetime
### Script arguments ###
parser = argparse.ArgumentParser()
parser.add_argument("subname", help="Name of subreddit")
args = parser.parse_args()
### Setup the logging ###
logger.initialize(args.subname)
logmsg = logging.getLogger("Rotating_Log")
### Handles main segment ###
def main():
if not re.match(r'^[A-Za-z0-9_]+$', args.subname):
sys.exit("Invalid subreddit name, aborting.")
s = reddit.reddit.subreddit(args.subname)
config = core.get_config()
debug_mode = config['DEFAULT'].getboolean('DebugMode')
common.debug_msg('Mod Permission: ' + str(s.user_is_moderator))
if not s.user_is_moderator:
logmsg.critical("[ERROR] Bot check as mod failed, aborting.")
sys.exit("Shutting down due to bot permission issue.")
checklog.check_for_admins(s)
checklog.health_check(s)
common.cleanup_modmail(s)
if not common.bool_sidebar_queued(s):
sys.exit("Shutting down due to no need to run bot... no new sidebar content found.")
new_sidebar = common.sync_sidebar_widget(s)
sidebar_state = common.check_sidebar_freespace(s.display_name,new_sidebar)
if not debug_mode:
try:
s.mod.update(description=new_sidebar)
except Exception as e:
logmsg.critical("[ERROR] Updating sidebar - %s", e)
common.debug_msg("Bot run has completed.. API usage: " + str(reddit.reddit.auth.limits))
if not debug_mode:
configf = configparser.ConfigParser()
configf.read('config.ini')
configname = 'SysLastRun' + s.display_name
currentrun = datetime.utcnow().strftime(configf['DEFAULT']['lastrunformat'])
configf['DEFAULT'][configname] = currentrun
usern = "u_" + reddit.reddit.user.me().name
statusmsg = "Bot last online " + currentrun + " UTC. "
if checklog.check_log_errors(s):
statusmsg = statusmsg + "❌Errors seen today."
else:
statusmsg = statusmsg + "✔️No errors today."
reddit.reddit.subreddit(usern).mod.update(public_description=statusmsg)
with open('config.ini', 'w') as configfile:
configf.write(configfile)
### Start the script ###
if __name__ == '__main__':
main()