3

I've been using Tweepy with Python 2.7 to stream tweets and everything has been working fine, except the on_direct_message() method isn't being called when I send the account a direct message. I've updated my permissions and even tried using the on_data() method, but it can't seem to detect direct messages being sent to the account:

import tweepy

CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)

followed_accounts = ['account', 'account']
followed_ids = []

for account in followed_accounts:
    followed_ids.append(str(api.get_user(screen_name=account).id))


class StdOutListener(tweepy.StreamListener):

    def on_direct_message(self, status):

        author = status.author.screen_name
        api.send_direct_message(screen_name=author, text='response')

        return True

    def on_status(self, status):

        author = status.author.screen_name
        statusID = status.id

        print status.text + "\n"

        api.update_status('response')
        api.send_direct_message(screen_name='my username', text='Just sent a Tweet')

        return True

    def on_data(self, status):
        print 'Entered on_data()'
        print status
    
        return True
        
    def on_error(self, status_code):
        print "Error Code: " + str(status_code)
        if status_code == 420:
            return False
        else:
            return True

    def on_timeout(self):
        print('Timeout...')
        return True

if __name__ == '__main__':
    listener = StdOutListener()
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

    stream = tweepy.Stream(auth, listener)
    stream.filter(follow=followed_ids)

Sending the account a direct message gives no errors, and the account receives the message properly on Twitter.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Jack Irish
  • 31
  • 2
  • Are you sure that the access level for both your Application Settings and Access Tokens (found in keys and access tokens tab) are 'Read, write, and direct messages'? – YashTD Jan 24 '17 at 09:54

0 Answers0