From 0fcee46ebf510800dd3cbc8b011af028342671fb Mon Sep 17 00:00:00 2001 From: dngfx Date: Sun, 9 Sep 2018 15:53:14 +0100 Subject: Should stop an error or two down the line. --- modules/tweets.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/tweets.py b/modules/tweets.py index 76f99d05..fc981c37 100644 --- a/modules/tweets.py +++ b/modules/tweets.py @@ -66,17 +66,17 @@ class Module(object): linked_id = tweet["id"] username = "@%s" % tweet["user"]["screen_name"] - url_shortener_link = False + url_shortener_link = None chopped_uname = username[1:] tweet_link = "https://twitter.com/%s/status/%s" % ( chopped_uname, linked_id) url_shortener_link = self.events.on("get").on( "shortlink").call( - url=tweet_link)[0] + url=tweet_link) - url_shortener_link = "" if url_shortener_link == False else \ - "-- " + url_shortener_link + url_shortener_link = "" if url_shortener_link == None else \ + "-- " + url_shortener_link[0] if "retweeted_status" in tweet: -- cgit v1.3.1-10-gc9f91 From d8c4293dbc456dfd539f3c126b6eda48999e5fa9 Mon Sep 17 00:00:00 2001 From: Dan Date: Sun, 9 Sep 2018 16:09:51 +0100 Subject: Delete tweets.py --- modules/tweets.py | 109 ------------------------------------------------------ 1 file changed, 109 deletions(-) delete mode 100644 modules/tweets.py diff --git a/modules/tweets.py b/modules/tweets.py deleted file mode 100644 index fc981c37..00000000 --- a/modules/tweets.py +++ /dev/null @@ -1,109 +0,0 @@ -# --require-config twitter-api-key -# --require-config twitter-api-secret -# --require-config twitter-access-token -# --require-config twitter-access-secret - -import datetime, re, time, traceback -import twitter -import Utils - -REGEX_TWITTERURL = re.compile( - "https?://(?:www\.)?twitter.com/[^/]+/status/(\d+)", re.I) - - -class Module(object): - - def __init__(self, bot, events, exports): - self.bot = bot - self.events = events - - events.on("received").on("command").on("tweet", "tw" - ).hook(self.tweet, - help="Find a tweet", - usage="[@username/URL/ID]") - - def make_timestamp(self, s): - seconds_since = time.time() - datetime.datetime.strptime(s, - "%a %b %d " - "%H:%M:%S %z " - "%Y").timestamp() - since, unit = Utils.time_unit(seconds_since) - return "%s %s ago" % (since, unit) - - def tweet(self, event): - api_key = self.bot.config["twitter-api-key"] - api_secret = self.bot.config["twitter-api-secret"] - access_token = self.bot.config["twitter-access-token"] - access_secret = self.bot.config["twitter-access-secret"] - - if event["args"]: - target = event["args"] - else: - target = event["buffer"].find(REGEX_TWITTERURL) - if target: - target = target.message - if target: - twitter_object = twitter.Twitter(auth=twitter.OAuth( - access_token, access_secret, api_key, api_secret)) - url_match = re.search(REGEX_TWITTERURL, target) - if url_match or target.isdigit(): - tweet_id = url_match.group(1) if url_match else target - try: - tweet = twitter_object.statuses.show(id=tweet_id) - except: - traceback.print_exc() - tweet = None - else: - if target.startswith("@"): - taret = target[1:] - try: - tweet = twitter_object.statuses.user_timeline( - screen_name=target, count=1)[0] - except: - traceback.print_exc() - tweet = None - if tweet: - linked_id = tweet["id"] - username = "@%s" % tweet["user"]["screen_name"] - - url_shortener_link = None - chopped_uname = username[1:] - tweet_link = "https://twitter.com/%s/status/%s" % ( - chopped_uname, linked_id) - - url_shortener_link = self.events.on("get").on( - "shortlink").call( - url=tweet_link) - - url_shortener_link = "" if url_shortener_link == None else \ - "-- " + url_shortener_link[0] - - - if "retweeted_status" in tweet: - original_username = "@%s" % tweet["retweeted_status" - ]["user"]["screen_name"] - original_text = tweet["retweeted_status"]["text"] - retweet_timestamp = self.make_timestamp(tweet[ - "created_at"]) - original_timestamp = self.make_timestamp(tweet[ - "retweeted_status"][ - "created_at"]) - event["stdout"].write( - "(%s (%s) retweeted %s (%s)) %s %s" % ( - username, retweet_timestamp, - original_username, original_timestamp, - original_text, - url_shortener_link)) - else: - event["stdout"].write("(%s, %s) %s %s" % - (username, - self.make_timestamp( - tweet["created_at"] - ), - tweet["text"], - url_shortener_link) - ) - else: - event["stderr"].write("Invalid tweet identifiers provided") - else: - event["stderr"].write("No tweet provided to get information about") -- cgit v1.3.1-10-gc9f91 From 165efe20b9d143dcc924a0f58f549947b521e8f4 Mon Sep 17 00:00:00 2001 From: Dan Date: Sun, 9 Sep 2018 16:11:02 +0100 Subject: Recreate tweets.py because i'm lazy. --- modules/tweets.py | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 modules/tweets.py diff --git a/modules/tweets.py b/modules/tweets.py new file mode 100644 index 00000000..cd32939b --- /dev/null +++ b/modules/tweets.py @@ -0,0 +1,89 @@ +# --require-config twitter-api-key +# --require-config twitter-api-secret +# --require-config twitter-access-token +# --require-config twitter-access-secret + +import datetime, re, time, traceback +import twitter +import Utils + +REGEX_TWITTERURL = re.compile( + "https?://(?:www\.)?twitter.com/[^/]+/status/(\d+)", re.I) + +class Module(object): + def __init__(self, bot, events, exports): + self.bot = bot + self.events = events + + events.on("received.command").on("tweet", "tw").hook(self.tweet, + help="Find a tweet", usage="[@username/URL/ID]") + + def make_timestamp(self, s): + seconds_since = time.time() - datetime.datetime.strptime(s, + "%a %b %d %H:%M:%S %z %Y").timestamp() + since, unit = Utils.time_unit(seconds_since) + return "%s %s ago" % (since, unit) + + def tweet(self, event): + api_key = self.bot.config["twitter-api-key"] + api_secret = self.bot.config["twitter-api-secret"] + access_token = self.bot.config["twitter-access-token"] + access_secret = self.bot.config["twitter-access-secret"] + + if event["args"]: + target = event["args"] + else: + target = event["buffer"].find(REGEX_TWITTERURL) + if target: + target = target.message + if target: + twitter_object = twitter.Twitter(auth=twitter.OAuth( + access_token, access_secret, api_key, api_secret)) + url_match = re.search(REGEX_TWITTERURL, target) + if url_match or target.isdigit(): + tweet_id = url_match.group(1) if url_match else target + try: + tweet = twitter_object.statuses.show(id=tweet_id) + except: + traceback.print_exc() + tweet = None + else: + if target.startswith("@"): + taret = target[1:] + try: + tweet = twitter_object.statuses.user_timeline( + screen_name=target, count=1)[0] + except: + traceback.print_exc() + tweet = None + if tweet: + linked_id = tweet["id"] + username = tweet["user"]["screen_name"] + + tweet_link = "https://twitter.com/%s/status/%s" % (username, + linked_id) + + short_url = self.events.on("get.shortlink").call_for_result( + url=tweet_link) + short_url = " -- %s" % short_url if short_url else "" + + if "retweeted_status" in tweet: + original_username = "@%s" % tweet["retweeted_status" + ]["user"]["screen_name"] + original_text = tweet["retweeted_status"]["text"] + retweet_timestamp = self.make_timestamp(tweet[ + "created_at"]) + original_timestamp = self.make_timestamp(tweet[ + "retweeted_status"]["created_at"]) + event["stdout"].write( + "(@%s (%s) retweeted %s (%s)) %s%s" % ( + username, retweet_timestamp, original_username, + original_timestamp, original_text, short_url)) + else: + event["stdout"].write("(@%s, %s) %s%s" % (username, + self.make_timestamp(tweet["created_at"]), + tweet["text"], short_url)) + else: + event["stderr"].write("Invalid tweet identifiers provided") + else: + event["stderr"].write("No tweet provided to get information about") -- cgit v1.3.1-10-gc9f91 From fc8e3818fe728d73ee8644eacaccdfeb27f0049b Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 9 Sep 2018 16:06:48 +0100 Subject: call_for_result should have a max of 1, not 0 --- EventManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EventManager.py b/EventManager.py index 67cd1f76..560c671e 100644 --- a/EventManager.py +++ b/EventManager.py @@ -151,7 +151,7 @@ class EventHook(object): return child def call_for_result(self, default=None, **kwargs): - results = self.call_limited(0, **kwargs) + results = self.call_limited(1, **kwargs) return default if not len(results) else results[0] def assure_call(self, **kwargs): if not self._stored_events == None: -- cgit v1.3.1-10-gc9f91 From 908d64f5c60ae8d13b508e472f039f5f1f0a0d93 Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 9 Sep 2018 16:07:39 +0100 Subject: Change bitly.py to use delimited events --- modules/bitly.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/modules/bitly.py b/modules/bitly.py index afcc1522..a64a451c 100644 --- a/modules/bitly.py +++ b/modules/bitly.py @@ -10,10 +10,9 @@ class Module(object): def __init__(self, bot, events, exports): self.bot = bot self.events = events - events.on("get").on("shortlink").hook(self.shortlink) - events.on("received").on("command").on("shorten" - ).hook(self.shorten, min_args=1, help="Shorten a URL.", - usage="") + events.on("get.shortlink").hook(self.shortlink) + events.on("received.command.shorten").hook(self.shorten, min_args=1, + help="Shorten a URL.", usage="") def shortlink(self, event): url = event["url"] @@ -26,8 +25,8 @@ class Module(object): return data["data"]["url"] def shorten(self, event): - link = self.events.on("get").on("shortlink" - ).call_for_result(url=event["args"]) + link = self.events.on("get.shortlink").call_for_result( + url=event["args"]) if link: event["stdout"].write("Short URL: %s" % link) else: -- cgit v1.3.1-10-gc9f91 -- cgit v1.3.1-10-gc9f91 From 169d1705ac2228180ed571c7fa244874ece72243 Mon Sep 17 00:00:00 2001 From: dngfx Date: Sun, 9 Sep 2018 18:39:56 +0100 Subject: There's nothing regular about these expressions. --- modules/karma.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/karma.py b/modules/karma.py index c7c3a263..b0c220a8 100644 --- a/modules/karma.py +++ b/modules/karma.py @@ -1,7 +1,7 @@ import re, time import EventManager, Utils -REGEX_KARMA = re.compile("(.*)(\+{2,}|\-{2,})$") +REGEX_KARMA = re.compile("^(.*[^-+])[-+]*(\+{2,}|\-{2,})$") KARMA_DELAY_SECONDS = 3 class Module(object): -- cgit v1.3.1-10-gc9f91