split commands properly

This commit is contained in:
Luke Rogers 2013-12-01 19:37:12 +13:00
parent 017fd4fc2e
commit bb73e70112

View file

@ -4,14 +4,48 @@ import re
import random import random
from datetime import datetime from datetime import datetime
TWITTER_RE = (r"(?:(?:www.twitter.com|twitter.com)/(?:[-_a-zA-Z0-9]+)/status/)([0-9]+)", re.I) TWITTER_RE = (r"(?:(?:www.twitter.com|twitter.com)/(?:[-_a-zA-Z0-9]+)/status/)([0-9]+)", re.I)
def get_api(bot):
consumer_key = bot.config.get("api_keys", {}).get("twitter_consumer_key")
consumer_secret = bot.config.get("api_keys", {}).get("twitter_consumer_secret")
oauth_token = bot.config.get("api_keys", {}).get("twitter_access_token")
oauth_secret = bot.config.get("api_keys", {}).get("twitter_access_secret")
if not consumer_key:
return False
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(oauth_token, oauth_secret)
return tweepy.API(auth)
@hook.regex(*TWITTER_RE) @hook.regex(*TWITTER_RE)
def twitter_url(match, bot=None): def twitter_url(match, bot=None):
tweet_id = match.group(1) tweet_id = match.group(1)
print tweet_id
return twitter(tweet_id, bot) api = get_api(bot)
if not api:
return
try:
tweet = api.get_status(tweet_id)
user = tweet.user
except tweepy.error.TweepError:
return
text = " ".join(tweet.text.split())
if user.verified:
prefix = u"\u2713"
else:
prefix = ""
time = timesince.timesince(tweet.created_at, datetime.utcnow())
return u"{}@\x02{}\x02 ({}): {} ({} ago)".format(prefix, user.screen_name, user.name, text, time)
@hook.command("tw") @hook.command("tw")
@ -20,20 +54,10 @@ def twitter_url(match, bot=None):
def twitter(inp, bot=None): def twitter(inp, bot=None):
"twitter <user> [n] -- Gets last/[n]th tweet from <user>" "twitter <user> [n] -- Gets last/[n]th tweet from <user>"
consumer_key = bot.config.get("api_keys", {}).get("twitter_consumer_key") api = get_api(bot)
consumer_secret = bot.config.get("api_keys", {}).get("twitter_consumer_secret") if not api:
oauth_token = bot.config.get("api_keys", {}).get("twitter_access_token")
oauth_secret = bot.config.get("api_keys", {}).get("twitter_access_secret")
if not consumer_key:
return "Error: No Twitter API details." return "Error: No Twitter API details."
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(oauth_token, oauth_secret)
api = tweepy.API(auth)
if re.match(r'^\d+$', inp): if re.match(r'^\d+$', inp):
# user is getting a tweet by id # user is getting a tweet by id
@ -111,20 +135,10 @@ def twitter(inp, bot=None):
def twuser(inp, bot=None): def twuser(inp, bot=None):
"""twuser <user> -- Get info on the Twitter user <user>""" """twuser <user> -- Get info on the Twitter user <user>"""
consumer_key = bot.config.get("api_keys", {}).get("twitter_consumer_key") api = get_api(bot)
consumer_secret = bot.config.get("api_keys", {}).get("twitter_consumer_secret") if not api:
oauth_token = bot.config.get("api_keys", {}).get("twitter_access_token")
oauth_secret = bot.config.get("api_keys", {}).get("twitter_access_secret")
if not consumer_key:
return "Error: No Twitter API details." return "Error: No Twitter API details."
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(oauth_token, oauth_secret)
api = tweepy.API(auth)
try: try:
# try to get user by username # try to get user by username
user = api.get_user(inp) user = api.get_user(inp)