redditinfo.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. try:
  2. import praw
  3. successful_import = True
  4. except ImportError:
  5. print "WARNING: redditinfo requires praw (https://github.com/praw-dev/praw/)."
  6. successful_import = False
  7. if successful_import is True:
  8. import re
  9. from event import Event
  10. class RedditInfo:
  11. def __init__(self, events=None, printer_handle=None, bot=None, say=None):
  12. self.events = events
  13. self.printer = printer_handle
  14. self.interests = ['__reddit__']
  15. self.bot = bot
  16. self.say = say
  17. self.user_agent = 'pybot 0.7.1 by /u/hlmtre; http://bits.zero9f9.com/pybot'
  18. self.help = None
  19. reddit = Event("__reddit__")
  20. reddit.define("https?://www.reddit.com/[\S]+|https?://reddit.com/[\S]+|reddit.com/[\S]+")
  21. reddit.subscribe(self)
  22. self.bot.register_event(reddit, self)
  23. def handle(self, event):
  24. url = re.search("https?://www.reddit.com/[\S]+|https?://reddit.com/[\S]+|reddit.com/[\S]+", event.line).group(0)
  25. me = praw.Reddit(self.user_agent)
  26. s = me.get_submission(url)
  27. message = '[REDDIT] ' + s.title
  28. if s.is_self:
  29. message = message + ' (self.' + s.subreddit.display_name + ')'
  30. else:
  31. message = message + ' to r/' + s.subreddit.display_name
  32. if s.over_18:
  33. message = message + ' 05[NSFW]'
  34. #TODO implement per-channel settings db, and make this able to kick
  35. if s.author:
  36. author = s.author.name
  37. else:
  38. author = '[deleted]'
  39. message = (message + ' | ' + author)
  40. #TODO add creation time with s.created
  41. self.printer("PRIVMSG " + event.channel + " :" + message + "\n")