This repository was archived by the owner on Mar 21, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbot.py
More file actions
103 lines (83 loc) · 3.06 KB
/
bot.py
File metadata and controls
103 lines (83 loc) · 3.06 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import datetime
import login
import pickle
import traceback
import praw
def update_log(mods, mods_backup_path): # para respaldar los mods
with open(mods_backup_path, 'wb') as my_backup:
pickle.dump(mods, my_backup, protocol=pickle.HIGHEST_PROTOCOL)
def load_log(mods_backup_path): # para recuperar los mods respaldados
with open(mods_backup_path) as my_backup:
return pickle.load(my_backup)
def output_log(text): # lo uso para ver el output del bot
output_log_path = "output_log.txt"
with open(output_log_path, 'a') as myLog:
s = "[" + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "] "
s = s + text + "\n"
myLog.write(s)
def get_mods_format(mods):
s = ''
for mod in mods:
s = s + str(mod) + " -> " + str(mod.mod_permissions) + "\n\n"
return s[:-2]
def get_reply(mods, mods_old):
s = '**Antes:**\n\n'
s = s + get_mods_format(mods_old) + "\n\n"
s = s + "**Ahora:**\n\n"
s = s + get_mods_format(mods) + "\n\n"
s = s + "*****\n\n"
s = s + "*I stand for democracy*"
return s
def send_alert(mods, mods_old, reddit, current_subreddit, concerned_redditors):
body = get_reply(mods, mods_old)
subject = "Cambio en el modteam de /r/" + current_subreddit
output_log(body)
output_log(subject)
for concerned_redditor in concerned_redditors:
reddit.redditor(concerned_redditor).message(subject, body)
output_log('To: ' + str(concerned_redditor))
def main():
mods_backup_path = 'mods.pickle'
current_subreddit = 'Uruguay'
concerned_redditors = ['DirkGentle']
reddit = praw.Reddit(
client_id=login.client_id,
client_secret=login.client_secret,
password=login.password,
username=login.username,
user_agent='testcript for /u/elGuardianBot'
)
output_log('Login to reddit as: ' + reddit.user.me().name)
try:
mods_old = load_log(mods_backup_path)
# output_log('Successful load from backup file')
except Exception:
mods_old = reddit.subreddit(current_subreddit).moderator()
update_log(mods_old, mods_backup_path)
output_log('Error reading file, getting mods from the internet')
output_log("Mods of /r/" + current_subreddit)
output_log(get_mods_format(mods_old))
return
mods = reddit.subreddit(current_subreddit).moderator()
if set(mods) != set(mods_old):
send_alert(
mods, mods_old, reddit, current_subreddit, concerned_redditors
)
update_log(mods, mods_backup_path)
else:
for i in range(len(mods)):
if mods[i].mod_permissions != mods_old[i].mod_permissions:
send_alert(
mods,
mods_old,
reddit,
current_subreddit,
concerned_redditors
)
update_log(mods, mods_backup_path)
if __name__ == "__main__":
try:
main()
except Exception as exception:
output_log(str(exception))
output_log(traceback.format_exc())