Tweepy调用Twitter API无法为ID列表首个用户创建好友关系的问题及解决方法
问题分析与修复方案
从你的描述和代码来看,这种“首个ID无法创建好友关系但无报错”的情况,大概率是以下两种常见原因之一:
可能的原因
- 你已经关注了第一个用户:Twitter的
create_friendshipAPI在你已经是对方好友的情况下,不会返回错误,只会静默执行完成——这就导致代码看起来正常跑了,但实际没有任何变化,你自然会以为没生效。 - 第一个用户开启了关注审核:如果对方设置了“需要手动批准关注请求”,你的API调用会成功发送请求,但不会直接成为好友,需要对方通过后才会显示关注状态,这也会让你误以为没成功。
另外还有一种小概率情况:Tweepy的首次API调用可能因为网络波动或者API的细微延迟,导致状态同步不及时,但这种情况通常会伴随重试(你设置了wait_on_rate_limit=True,但首次调用一般不会触发限流)。
修复方案
针对上面的问题,我们可以优化代码,增加前置检查和后置验证,同时处理可能的特殊情况:
import tweepy import time consumer_key = "" consumer_secret = "" access_token = "" access_token_secret = "" auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True, compression=True) users = [1432834552028962816, 1170672149616615424, 1432600808542117889] for person in users: try: # 先获取当前用户与目标用户的关系状态 relationship = api.get_friendship(target_id=person) is_following = relationship[0].following if is_following: print(f"已经关注用户 {person},跳过操作") continue # 执行关注操作 api.create_friendship(user_id=person) # 再次验证关注状态 after_relationship = api.get_friendship(target_id=person) if after_relationship[0].following: print(f"成功关注用户 {person}") else: print(f"用户 {person} 开启了关注审核,已发送关注请求") except tweepy.TweepError as e: print(f"处理用户 {person} 时出错: {e.reason}")
额外说明
- 使用
get_friendship可以准确获取你和目标用户的关系状态,避免重复执行无效操作。 - 增加异常处理可以捕获一些隐藏的错误(比如目标用户不存在、账号权限不足等),虽然你之前没遇到报错,但加上后代码会更健壮。
- 如果是关注审核的情况,代码会明确给出提示,不会让你误以为操作失败。
内容的提问来源于stack exchange,提问作者Pro Girl




