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



我的最终目标是创建一个Twitter"机器人",它通过直接消息接收输入,并根据输入更改公开可见的网页。我最初计划使用公共消息来执行此操作,但这很快就会变得烦人,因此我正在调整我的 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代码应该能够正常访问它),假设我在 dev.twitter.com 控制面板上具有r/w/dm权限,这个帐户可以。(我将"设置"下的应用程序类型更改为所有三个,并重新创建了一个访问令牌,该令牌表示它具有这些权限 - 我是否需要执行其他操作)我现在将尝试解构Tweepy并检查我的HTTP标头访问级别,但任何其他建议将不胜感激。谢谢!

编辑:https://dev.twitter.com/discussions/4088 建议在任何响应中检查HTML标头"x-access-level",以验证我是否具有DM权限,并且我确实如此。

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

相关内容

  • 没有找到相关文章

最新更新