1
1
import datetime
2
2
import logging
3
3
import praw
4
+ import prawcore
5
+ import sys
4
6
from login import reddit
5
7
6
- logging .basicConfig (level = logging .WARN )
8
+
9
+ file_handler = logging .FileHandler (filename = 'duplicates.log' )
10
+ stdout_handler = logging .StreamHandler (sys .stdout )
11
+ handlers = [file_handler , stdout_handler ]
12
+
13
+ logging .basicConfig (
14
+ level = logging .DEBUG ,
15
+ format = '[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s' ,
16
+ handlers = handlers
17
+ )
18
+
7
19
logger = logging .getLogger (__name__ )
8
- handler = logging .FileHandler ('debug.log' )
9
- handler .setLevel (logging .DEBUG )
10
- handler2 = logging .FileHandler ('info.log' )
11
- handler2 .setLevel (logging .INFO )
12
- handler3 = logging .FileHandler ('errors.log' )
13
- handler3 .setLevel (logging .WARN )
14
- formatter = logging .Formatter ('%(asctime)s - %(name)s - %(levelname)s - %(message)s' )
15
- handler .setFormatter (formatter )
16
- handler2 .setFormatter (formatter )
17
- handler3 .setFormatter (formatter )
18
- logger .addHandler (handler )
19
- logger .addHandler (handler2 )
20
- logger .addHandler (handler3 )
21
20
22
21
def action ():
23
22
for sub_id in reddit .subreddit ('all' ).stream .submissions ():
24
23
logging .debug ('Starting submission {}' .format (sub_id ))
25
24
blockeduser = 0
26
- for item in reddit .inbox .messages (limit = 5 ):
27
- if str (item .subject ) == 'Remove me from posts' :
28
- body = str (item .body )
29
- with open ('blockusers.txt' , 'a+' ) as file :
30
- if str (item .author ) == body and body not in file .read ():
31
- newstring = username .replace (r'/u/' ,'' )
32
- newstring = newstring = '\n '
33
- file .write (newstring )
34
- logger .debug ('Cycle 1 for submission {} has finished' .format (sub_id ))
35
25
duplicates = []
36
26
submission = praw .models .Submission (reddit , id = sub_id )
37
27
with open ('blockusers.txt' ,'r' ) as newfile :
38
28
for line in newfile .readlines ():
39
29
line = line .strip ('\n ' )
40
30
if str (submission .author ) == line :
41
31
blockeduser = 1
32
+ logger .debug ('User {}\' s submission {} was blocked from posting' .format (str (submission .author ),str (sub_id )))
42
33
else :
43
34
pass
44
- logger .debug ('Cycle 2 for submission {} has finished' .format (sub_id ))
45
35
if blockeduser == 0 :
46
36
for duplicate in submission .duplicates ():
47
37
dup_sub = praw .models .Submission (reddit , id = duplicate )
@@ -57,14 +47,15 @@ def action():
57
47
for dup in duplicates :
58
48
message = str (message + '\n * [{}]({}) on /r/{} (created at {} by {})' ).format (dup ['title' ], dup ['link' ], dup ['subreddit' ], dup ['time' ], dup ['author' ])
59
49
message = message + '\n \n ---- \n \n ^^I ^^am ^^a ^^bot ^^[FAQ](https://www.reddit.com/r/DuplicatesBot/wiki/index)-[Code](https://github.com/PokestarFan/DuplicateBot-[Bugs](https://www.reddit.com/r/DuplicatesBot/comments/6ypgmx/bugs_and_problems/)-[Suggestions](https://www.reddit.com/r/DuplicatesBot/comments/6ypg85/suggestion_for_duplicatesbot/)-[Block](https://www.reddit.com/r/DuplicatesBot/wiki/index#wiki_block_bot_from_tagging_on_your_posts)'
60
- logger .debug ('Cycle 3 for submission {} has finished' .format (sub_id ))
61
50
try :
62
51
submission .reply (message )
63
52
logger .info ('Message posted on {}' .format (sub_id ))
64
- logger .debug ('Message content: \n {}' .format (message ))
65
53
message = ''
66
54
except (praw .exceptions .APIException , UnboundLocalError ):
67
- logger .debug ('Submission {} has been skipped due to being blocked or missing text' .format (sub_id ), exc_info = True )
55
+ logger .info ('Submission {} has been skipped due to missing text' .format (sub_id ))
56
+ message = ''
57
+ except (prawcore .exceptions .Forbidden ):
58
+ logger .info ('You are blocked on /r/{}' .format (str (submission .subreddit )))
68
59
message = ''
69
60
except :
70
61
logger .error ('Error occured!' , exc_info = True )
0 commit comments