Tweepy stream.userstream()不接收直接消息

时间:2013-10-14 18:50:06

标签: python twitter twitter-oauth tweepy twitter-streaming-api

我最终的目标是创建一个Twitter“bot”,它通过直接消息获取输入,并根据输入改变公开可见的网页。我原本打算用公共信息做这个,但是这很快就很烦人,所以我正在调整我的Tweepy流来使用DM。

截至目前,以下代码有效,并且在脚本运行时,我收到通知并处理我的测试用户所关注的所有帖子,但没有显示直接消息。

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 / dev.twitter.com控制面板上的dm权限,此帐户具有此权限。 (我将设置下的应用程序类型更改为全部三个并重新创建了一个访问令牌,表明它具有这些权限 - 我是否需要做其他任何事情)我将尝试解构Tweepy并立即检查我的HTTP标头访问级别,但是任何其他建议将不胜感激。谢谢!

编辑:https://dev.twitter.com/discussions/4088建议在任何回复中检查HTML标题“x-access-level”以验证我是否拥有DM权限,而且我这样做。

1 个答案:

答案 0 :(得分:2)

问题是你在StreamListener中使用了错误的方法。从流中收到新的推文时,会调用on_status方法。相反,您需要创建一个名为on_direct_message的方法。每当收到新的直接消息时,Tweepy都会调用该方法。