コード例 #1
0
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)