You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Tweepy调用Twitter API无法为ID列表首个用户创建好友关系的问题及解决方法

问题分析与修复方案

从你的描述和代码来看,这种“首个ID无法创建好友关系但无报错”的情况,大概率是以下两种常见原因之一:

可能的原因

  • 你已经关注了第一个用户:Twitter的create_friendship API在你已经是对方好友的情况下,不会返回错误,只会静默执行完成——这就导致代码看起来正常跑了,但实际没有任何变化,你自然会以为没生效。
  • 第一个用户开启了关注审核:如果对方设置了“需要手动批准关注请求”,你的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

火山引擎 最新活动