You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python和Tweepy实现特定用户发推自动回复的问题

解决Twitter机器人回复用户所有推文的问题

你的代码只拉取到一条推文,根本原因是user_timeline里的count=1参数——你明确指定了只获取1条,和tweet.id没关系。要回复用户所有推文,得调整参数并处理分页,因为Twitter API单次最多返回200条推文,超过的话要循环拉取更早的内容。

修改方案

  • 将count设置为API允许的最大值200
  • 用max_id参数循环拉取所有历史推文
  • 记录已回复的推文ID,避免重复操作(防止触发平台限流)

修改后的完整代码

import tweepy

# 你的认证信息
api_key = "###############################################"
api_secret = "###############################################"
bearer_token = r"###############################################"
access_token = "###############################################"
access_token_secret = "###############################################"

# 初始化API客户端
auth = tweepy.OAuth1UserHandler(api_key, api_secret, access_token, access_token_secret)
api = tweepy.API(auth)

to_reply = "TwitterUsernameHere"
replied_tweet_ids = set()  # 存储已回复的推文ID,避免重复操作

# 循环拉取用户所有推文
max_id = None
while True:
    # 单次拉取最多200条推文,max_id指定拉取更早的内容
    tweets = api.user_timeline(screen_name=to_reply, count=200, max_id=max_id, tweet_mode="extended")
    
    if not tweets:  # 没有更多推文时退出循环
        break
    
    for tweet in tweets:
        # 跳过已回复过的推文
        if tweet.id in replied_tweet_ids:
            continue
        
        # 执行回复操作
        try:
            api.update_status(f"@{to_reply} Why?", in_reply_to_status_id=tweet.id)
            replied_tweet_ids.add(tweet.id)
            print(f"已回复推文ID: {tweet.id}")
        except tweepy.TweepyException as e:
            print(f"回复失败: {e}")
    
    # 更新max_id,确保下一次拉取比当前最后一条更早的推文
    max_id = tweets[-1].id - 1

关键细节说明

  • tweet_mode="extended":确保能获取长推文的完整内容,避免内容截断
  • max_id机制:每次拉取时指定上一批推文的最小ID减1,实现分页拉取所有历史内容
  • replied_tweet_ids集合:防止重复回复同一推文,避免触发Twitter的限流规则

内容的提问来源于stack exchange,提问作者Suzie Schmitt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:35:31