2013-10-14 77 views
0

我最終的目標是創建一個twitter「bot」,它通過直接消息獲取輸入並根據輸入更改公共可見的網頁。我原本計劃使用公共消息做這件事,但這很快就令人討厭,所以我正在調整我的Tweepy流以利用DM。Tweepy stream.userstream()不會收到直接消息

截至目前,下面的代碼有效,當腳本運行時,我收到通知並處理由測試用戶關注的人員發出的所有帖子,但沒有直接顯示消息。

auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_key, access_secret) 
api = tweepy.API(auth) 

class CustomStreamListener(tweepy.StreamListener): 
    ... 
     def on_status(self, status): 
      print status 
... 

sapi = tweepy.streaming.Stream(auth, CustomStreamListener()) 
sapiuser = sapi.userstream() 

https://dev.twitter.com/discussions/8081以及下面的鏈接(8110,4088),使它看起來像這應該工作(即內置tweepy代碼應該能夠精細訪問),假設我有R/W/dm權限在dev.twitter.com控制面板上,該帳戶可以執行此操作。 (我將「設置」下的「應用程序類型」更改爲全部三項,並重新創建了一個訪問令牌,表明它擁有這些權限 - 是否需要執行其他操作)我將嘗試解構Tweepy並立即檢查HTTP標頭訪問級別,但任何其他意見將不勝感激。謝謝!

編輯:https://dev.twitter.com/discussions/4088建議在任何響應中檢查HTML標題「x-access-level」以驗證我具有DM權限,而且我也這麼做。

回答

2

問題是您在StreamListener中使用了錯誤的方法。當從流接收到新的推文時,將調用on_status方法。相反,您需要創建一個名爲on_direct_message的方法。無論何時收到新的直接消息,Tweepy都會調用該方法。