class TweetListener(StreamListener): def __init__(self, configured_api): self.twitterApi = configured_api self.manager = UserManager(configured_api) def on_data(self, data): tweet = json.loads(data.strip()) retweeted = tweet.get('retweeted') from_self = tweet.get('user', {}).get('screen_name', '') == "BotExistencial" if retweeted is not None and not retweeted and not from_self: tweetId = tweet.get('id_str') screen_name = tweet.get('user', {}).get('screen_name') tweetText = tweet.get('text') response = self.manager.get_response(screen_name) replyText = '@' + screen_name + ' ' + response #check if repsonse is over 140 char if len(replyText) > 140: replyText = replyText[0:139] + '…' print('Tweet ID: ' + tweetId) print('From: ' + screen_name) print('Tweet Text: ' + tweetText) print('Reply Text: ' + replyText) # If rate limited, the status posts should be queued up and sent on an interval self.twitterApi.api.update_status(status=replyText, in_reply_to_status_id=tweetId) sleep(95) def on_error(self, status): print(status)