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

如何使用Tweetinvi 5.0获取某条推文的全部回复列表?

解决Tweetinvi 5.0获取推文全部回复的问题

我帮你梳理下Tweetinvi 5.0里获取推文回复的正确做法,你之前的代码失效大概率是因为版本迭代后API做了重构——旧的静态Search.SearchDirectRepliesTo和Search.SearchRepliesTo方法在5.0版本里已经被移除或重命名了,现在官方推荐使用实例化客户端的异步方法。

步骤1:正确初始化Twitter客户端

首先你需要用你的Twitter开发者凭据创建TwitterClient实例,这是5.0版本所有操作的基础:

// 替换成你的开发者凭据
var twitterClient = new TwitterClient(
    "你的消费者密钥(CONSUMER_KEY)",
    "你的消费者密钥密钥(CONSUMER_SECRET)",
    "你的访问令牌(ACCESS_TOKEN)",
    "你的访问令牌密钥(ACCESS_TOKEN_SECRET)"
);

步骤2:获取直接回复

如果只需要获取目标推文的直接回复,可以用GetRepliesToTweetAsync方法:

// 替换成你要查询的推文ID
var targetTweetId = 1234567890123456789L;
var directReplies = await twitterClient.Tweets.GetRepliesToTweetAsync(targetTweetId);

步骤3:获取所有层级的回复(含嵌套回复)

Twitter API默认只返回直接回复,如果要获取所有嵌套的回复,你需要递归遍历每个回复的子回复,同时处理分页(因为API每次返回结果有限):

async Task<List<ITweet>> GetAllReplies(TwitterClient client, long tweetId)
{
    var allReplies = new List<ITweet>();
    var cursor = -1L;

    do
    {
        var parameters = new GetRepliesToTweetParameters(tweetId)
        {
            Cursor = cursor,
            MaxResults = 100 // 每次请求最多返回100条,可调整
        };

        var page = await client.Tweets.GetRepliesToTweetAsync(parameters);
        allReplies.AddRange(page);

        // 递归获取当前页面每条回复的子回复
        foreach (var reply in page)
        {
            var childReplies = await GetAllReplies(client, reply.Id);
            allReplies.AddRange(childReplies);
        }

        cursor = page.Metadata.NextCursor;
    } while (cursor != 0); // 当cursor为0时表示没有更多结果

    return allReplies;
}

// 调用方法
var allReplies = await GetAllReplies(twitterClient, targetTweetId);

注意事项

  • 权限验证:确保你的Twitter应用已开启读取推文的权限,且访问令牌拥有对应的权限;
  • 异步操作:5.0版本全面转向异步API,避免使用同步阻塞的写法;
  • 速率限制:Twitter API有调用次数限制,批量获取时要注意控制请求频率,避免触发限流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:33:09