Twitter: add command for a twitter-native reply
This commit is contained in:
parent
1aba7c904d
commit
157f1bf361
@ -43,12 +43,14 @@ class Twitter(Module):
|
||||
tweetpattern = '^!twitter\s+tweet\s+(.*)'
|
||||
gettokenpattern = '^!twitter\s+gettoken$'
|
||||
authpattern = '^!twitter\s+auth\s+(\S+)$'
|
||||
replytopattern = '^!twitter\s+replyto\s+(\S+)\s+(.*)'
|
||||
|
||||
self.getstatusre = re.compile(getstatuspattern)
|
||||
self.getuserstatusre = re.compile(getuserstatuspattern)
|
||||
self.tweetre = re.compile(tweetpattern)
|
||||
self.gettokenre = re.compile(gettokenpattern)
|
||||
self.authre = re.compile(authpattern)
|
||||
self.replytore = re.compile(replytopattern)
|
||||
|
||||
# prep oauth magic
|
||||
self.consumer_key = 'N2aSGxBP8t3cCgWyF1B2Aw'
|
||||
@ -102,6 +104,8 @@ class Twitter(Module):
|
||||
return self.twitter_getuserstatus(connection, event, nick, userhost, what, admin_unlocked)
|
||||
elif self.tweetre.search(what):
|
||||
return self.twitter_tweet(connection, event, nick, userhost, what, admin_unlocked)
|
||||
elif self.replytore.search(what):
|
||||
return self.twitter_replyto(connection, event, nick, userhost, what, admin_unlocked)
|
||||
elif self.gettokenre.search(what):
|
||||
return self.twitter_gettoken(connection, event, nick, userhost, what, admin_unlocked)
|
||||
elif self.authre.search(what):
|
||||
@ -162,6 +166,30 @@ class Twitter(Module):
|
||||
except twitter.TwitterError as e:
|
||||
return 'Couldn\'t tweet: ' + str(e)
|
||||
|
||||
def twitter_replyto(self, connection, event, nick, userhost, what, admin_unlocked):
|
||||
"""Reply to a tweet, in the twitter in_reply_to_status_id sense. Needs authentication."""
|
||||
|
||||
match = self.replytore.search(what)
|
||||
if match:
|
||||
status_id = match.group(1)
|
||||
tweet = match.group(2)
|
||||
|
||||
if self.authed is False:
|
||||
return 'You must be authenticated to tweet.'
|
||||
if admin_unlocked is False:
|
||||
return 'Only admins can tweet.'
|
||||
|
||||
replyee_tweet = self.twit.GetStatus(status_id)
|
||||
target = replyee_tweet.user.screen_name.encode('utf-8', 'ignore')
|
||||
|
||||
try:
|
||||
if self.twit.PostUpdate('@'+target+': '+tweet, in_reply_to_status_id=status_id) is not None:
|
||||
return 'Tweet sent.'
|
||||
else:
|
||||
return 'Unknown error sending tweet.'
|
||||
except twitter.TwitterError as e:
|
||||
return 'Couldn\'t tweet: ' + str(e)
|
||||
|
||||
def twitter_gettoken(self, connection, event, nick, userhost, what, admin_unlocked):
|
||||
"""Get an oauth token, so that the user may authenticate the bot."""
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user