2015-11-11 6 views
1

Я пишу простую программу, которая будет периодически проверять, есть ли кто-то в Twitter, и опубликовать ответ.Как найти начало твиттер-беседы?

После того, как он ответил, я не хочу, чтобы он снова отвечал (в противном случае он будет отвечать навсегда), поэтому он должен быть одним ответом за твит (если разговор продолжается, то он будет продолжать добавлять твиттер до конца).

Я хочу, чтобы он был без гражданства.

Поэтому я хочу захватить все твит-разговоры и посмотреть, есть ли у них ответ моей программой. Если нет, ответьте.

Если вы просматриваете twitter, вы можете увидеть все ответы на твит в качестве «беседы». Поэтому я хочу, чтобы все разговоры на моей стене и посмотреть, был ли последний твит в каждом разговоре сделан мной. Если это не так, я хочу добавить ответ.

Проблема заключается в том, что я не могу получить «разговоры», потому что я не могу найти, как твиты связаны друг с другом должным образом.

Я собирался построить карту, получив все твиты, которые упоминают меня, а затем выработайте «корневые» твиты (начало разговора) и прочитайте каждый разговор, чтобы узнать, был ли последний ответ мной.

Однако я не могу понять, что такое корневой твит, потому что иногда свойство 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); 
     } 
    } 

ответ

0

Используйте поле in_reply_to_status_id. Это позволит вам найти корневой твит из беседы.