我正在编写一个简单的程序,它会定期检查是否有人在推特上发布了我的帐户,并发布回复。
一旦它回复了,我不希望它再次回复(否则它将永远回复)所以它必须是每条推文的回复(如果对话继续,那么它将继续在末尾添加一条推文)。
我希望它是无国籍的。
因此,我想抓取所有推文对话,看看他们是否已经有我的程序回复。如果没有,请回复。
如果您浏览推特,您可以将推文的所有回复视为“对话”。所以我想把所有的对话都挂在墙上,看看每个对话中的最新推文是否是我做的。如果不是,那么我想添加一个回复。
我遇到的问题是我无法进行“对话”,因为我找不到推文如何正确链接在一起。
我打算通过获取所有提到我的推文来构建地图,然后计算出“根”推文(对话的开始)并阅读每个对话,看看最后一个回复是否是我的。
但是,我无法弄清楚什么是根推文,因为有时即使是根推文也会填充 InReplyToUserId 属性。所以我不知道哪些是根推文。
有任何想法吗?到目前为止,这是我的代码:
var allMentions = Timeline.GetMentionsTimeline();
// Get all root tweets
foreach (var tweet in allMentions.Where(c => !c.InReplyToUserId.HasValue))
{
var replies = Search.SearchDirectRepliesTo(tweet);
var latestTweet = replies.OrderByDescending(c => c.TweetLocalCreationDate).FirstOrDefault();
if (latestTweet.CreatedBy.Id != _myTwitterId)
{
string reply = GetReply();
foreach (var mention in latestTweet.UserMentions)
{
if (mention.Id != _myTwitterId)
{
reply = $"@{mention.ScreenName} {reply}";
}
}
if (reply.Length > 140)
{
reply.Substring(0, 140);
}
Tweet.PublishTweetInReplyTo(reply, latestTweet);
}
}