首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Twitter机器人-使用Tweepy回复特定用户

Twitter机器人-使用Tweepy回复特定用户
EN

Stack Overflow用户
提问于 2016-03-03 18:53:47
回答 2查看 1.6K关注 0票数 0

我正在尝试编写我的第一个twitter机器人,我特别希望它能在特定用户发布推文时进行回复。我不想搜索每个提到“taco”这个词的用户,我只想在一小部分人提到“taco”的时候搜索。例如,我的机器人只查找Bob和Sue的tweet,而不是Fred的tweet。我找不到我需要的东西。

EN

回答 2

Stack Overflow用户

发布于 2016-03-03 19:20:28

Tweepy文档中,您可能应该使用API.user_timeline方法来读取特定用户的tweet。

API.user_timeline(user_id/screen_name)

返回从身份验证用户或指定用户发布的最新20个状态。

参数:

user_id -指定用户的ID

screen_name -指定用户的屏幕名称

票数 1
EN

Stack Overflow用户

发布于 2016-03-03 21:22:15

您可以通过user timeline应用编程接口端点来实现这一点;但是,根据您想要跟踪的术语和用户的数量,您必须担心速率限制(用户时间线端点速率限制非常高,300/app auth/15分钟,150/user auth/15 mins = 450/15分钟),以及您必须在某个时间间隔手动调用端点的事实。

另一种方法是使用流API端点,具体地说就是user stream。关注你想回复的每个人,然后为特定的短语创建一些规则。当关注的用户发布tweet时,他们应该流到您的用户流端点。你只需要有一个正在运行的监听器,并为被跟踪的用户/短语提供一些逻辑。

代码语言:javascript
复制
track = {
    'taco': ['Bob', 'Sue'],
    'salsa': ['John', 'Steve'],
    'guacamole': ['Mary', 'Fred']
}

你会子类化Tweepy的StreamListener

代码语言:javascript
复制
class TacoListener(tweepy.StreamListener):
    def on_status(self, status):
        # Note, I rolled my own Twitter API wrapper, and just had a glance at the Tweepy docs, so some of this syntax might be incorrect, change it as required
        # I think Tweepy has syntax like: status.text; I'll just refer to the fields as they appear in the Twitter JSON payload
        for k, v in track.items():
            if k in status.get('text') and status.get('screen_name') in v:
                tweet = ""
                for name in v:
                    tweet += "@" + name
                tweet += " are talking about " + k + "!  Yum."
                api.update_status(status=tweet)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35770175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档