Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- import requests
- import praw
- from time import sleep
- # http://praw.readthedocs.io/en/latest/getting_started/authentication.html
- reddit = praw.Reddit(client_id='your app client id',
- client_secret='your app client secret',
- username='your bot reddit username',
- password='your bot reddit password',
- user_agent='python3:KeyWordNotify:v1 (/u/Arkaon)')
- webhook_url = 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
- you = reddit.redditor('your reddit username') # this is the account that will receive the messages
- subreddit = reddit.subreddit('your subreddit name') # scan comments in this subreddit
- keywords = ['keyword1', 'keyword2', 'keyword3'] # case insensitive
- ignore_users = ['baduser1', 'baduser2', 'baduser3'] # case SENSITIVE
- already_alerted_submissions = [] # a list of submission ids that you have already been notified for
- comment_stream = subreddit.stream.comments()
- def main():
- try:
- for comment in comment_stream:
- if comment.submission.id in already_alerted_submissions: continue
- if comment.author: # if comment author hasn't deleted
- if comment.author.name in ignore_users: continue
- for kw in keywords:
- if kw.lower() in comment.body.lower(): # case insensitive check
- already_alerted_submissions.append(comment.submission.id)
- msg = '[Keyword {0} detected](http://www.reddit.com{1})'.format(kw, comment.permalink())
- slack_data = {'text': msg}
- response = requests.post(webhook_url, data=json.dumps(slack_data), headers={'Content-Type':'application/json'})
- if response.status_code != 200:
- raise ValueError('Request to slack returned an error %s, the response is:\n%s' % (response.status_code, response.text))
- except Exception as e:
- print('There was an error: ' + str(e))
- sleep(60) # wait for 60 seconds before restarting
- main()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement