0

我的最终目标是创建一个推特“机器人”,它通过直接消息接收输入,并根据输入改变一个公开可见的网页。我原本打算用公共消息来做这件事,但很快就很烦人,所以我正在调整我的 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 权限,我确实这样做了。

4

1 回答 1

2

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

于 2014-01-05T22:53:00.253 回答