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

.Net Core流控制台应用L2T设置TweetMode.Extended后FullText为空

解决Linq To Twitter 5.0.0 beta2流模式下的完整推文获取与转推过滤问题

针对你在.NET Core 2.1预览版(C#7.3)+ Linq To Twitter(L2T)5.0.0 beta2中遇到的问题,我整理了对应的解决方案和细节说明:

1. 获取完整推文内容:为什么TweetMode.Extended设置后仍返回Compat类型?

你发现从status.ExtendedTweet.FullText获取完整内容是正确的,这是因为L2T的5.0.0 beta2版本中,流模式下的TweetMode设置逻辑还存在一些预发布阶段的特性差异:

  • 仅仅给Stream对象设置strm.TweetMode = TweetMode.Extended可能不足以让Twitter API返回Extended模式的推文,建议在构建流查询时,确保所有相关参数都明确指定Extended模式。
  • 官方示例中的status.Text ?? status.FullText写法失效,是因为beta版本中Status.FullText属性并未被正确赋值,完整内容被存储在ExtendedTweet.FullText中。你可以改用更可靠的写法:
    string fullTweetContent = status.ExtendedTweet?.FullText ?? status.Text;
    
    这样既兼容了可能的空值情况,又能正确获取到完整的推文内容。

2. 过滤流中的转推:更高效的处理方式

你当前通过检查RetweetedStatus来过滤转推是可行的,而且是最稳妥的方法(尤其是在beta版本中)。不过也可以在流启动前就添加过滤逻辑,减少不必要的数据流处理:

  • 在构建FilterStream或UserStream时,可以直接在事件处理逻辑中跳过转推:
    var stream = await ctx.Streaming.CreateFilterStreamAsync();
    stream.TweetMode = TweetMode.Extended;
    // 添加你的跟踪关键词等过滤条件
    stream.AddTweetFilter(new TweetFilter { Track = new List<string> { "your-target-keyword" } });
    
    stream.MatchingTweetReceived += (sender, args) =>
    {
        var status = args.Status;
        // 直接跳过转推内容
        if (status.RetweetedStatus != null) return;
        
        // 处理非转推的完整推文
        string fullContent = status.ExtendedTweet?.FullText ?? status.Text;
        // 你的业务逻辑...
    };
    
    await stream.StartAsync();
    
  • 另外,由于你使用的是beta版本,L2T可能还未提供更直接的转推过滤参数,所以检查RetweetedStatus是目前最可靠的过滤方式。

3. 额外注意事项

因为你使用的是L2T的预发布版本(5.0.0 beta2),部分API行为可能在正式版发布后有所调整。建议后续升级到正式版时,重新测试TweetMode的赋值逻辑和推文内容的获取方式,避免出现兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:36:35