11import datetime
22import logging
33import praw
4+ import prawcore
5+ import sys
46from login import reddit
57
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+
719logger = 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 )
2120
2221def action ():
2322 for sub_id in reddit .subreddit ('all' ).stream .submissions ():
2423 logging .debug ('Starting submission {}' .format (sub_id ))
2524 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 ))
3525 duplicates = []
3626 submission = praw .models .Submission (reddit , id = sub_id )
3727 with open ('blockusers.txt' ,'r' ) as newfile :
3828 for line in newfile .readlines ():
3929 line = line .strip ('\n ' )
4030 if str (submission .author ) == line :
4131 blockeduser = 1
32+ logger .debug ('User {}\' s submission {} was blocked from posting' .format (str (submission .author ),str (sub_id )))
4233 else :
4334 pass
44- logger .debug ('Cycle 2 for submission {} has finished' .format (sub_id ))
4535 if blockeduser == 0 :
4636 for duplicate in submission .duplicates ():
4737 dup_sub = praw .models .Submission (reddit , id = duplicate )
@@ -57,14 +47,15 @@ def action():
5747 for dup in duplicates :
5848 message = str (message + '\n * [{}]({}) on /r/{} (created at {} by {})' ).format (dup ['title' ], dup ['link' ], dup ['subreddit' ], dup ['time' ], dup ['author' ])
5949 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 ))
6150 try :
6251 submission .reply (message )
6352 logger .info ('Message posted on {}' .format (sub_id ))
64- logger .debug ('Message content: \n {}' .format (message ))
6553 message = ''
6654 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 )))
6859 message = ''
6960 except :
7061 logger .error ('Error occured!' , exc_info = True )
0 commit comments