Completed
Push — master ( 3fb799...a93322 )
by Matt
01:03
created

TwitterPoster.handle()   A

Complexity

Conditions 4

Size

Total Lines 14

Duplication

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