twitterposter.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import sys
  2. from event import Event
  3. try:
  4. import twitter
  5. except (ImportError, SystemError):
  6. twitter = object
  7. try:
  8. if sys.version_info > (3, 0, 0):
  9. from .basemodule import BaseModule
  10. else:
  11. from basemodule import BaseModule
  12. except (ImportError, SystemError):
  13. from modules.basemodule import BaseModule
  14. """
  15. to use this, you'll need to create a file in the modules directory called 'twitter_credentials.py', and it should look like this:
  16. class PybotTwitter:
  17. api_key = "<your api key (sometimes called consumer key)>"
  18. api_secret = "<api/consumer secret>"
  19. access_token = "<your access token>"
  20. access_token_secret = "<access token secret>"
  21. """
  22. class TwitterPoster(BaseModule):
  23. try:
  24. from modules.twitter_credentials import PybotTwitter as pt
  25. except (ImportError, SystemError):
  26. class PhonyPt:
  27. api_key = ""
  28. api_secret = ""
  29. access_token = ""
  30. access_token_secret = ""
  31. pt = PhonyPt()
  32. user_to_track = "bhhorg"
  33. def post_init(self):
  34. twitter = Event("__.twitter__")
  35. twitter.define(user_definition=self.user_to_track)
  36. twitter.subscribe(self)
  37. self.bot.register_event(twitter, self)
  38. twitter_command = Event("__.twitter_command__")
  39. twitter_command.define(msg_definition="^\.twitter url")
  40. twitter_command.subscribe(self)
  41. self.bot.register_event(twitter_command, self)
  42. def handle(self, event):
  43. if event._type == "__.twitter__":
  44. pt = self.pt
  45. api = twitter.Api(consumer_key=pt.api_key,
  46. consumer_secret=pt.api_secret,
  47. access_token_key=pt.access_token,
  48. access_token_secret=pt.access_token_secret)
  49. try:
  50. status = api.PostUpdate(event.user + ": " + event.msg[:(140 - (len(event.user) + 2))]) # "username: <message>" all must be <= 140 char
  51. except Exception as e:
  52. print(e)
  53. print(len(event.msg[:(140 - len(event.user) + 2)]))
  54. elif event._type == "__.twitter_command__":
  55. self.say(event.channel, "https://twitter.com/pybot_posts_irc")