Пример #1
0
        public ITweet SendReply(
            string messageText,
            // TODO そのうち渡し方を見直す
            IList <string> mediaUrls,
            long replyToId,
            params string[] toScreanNames)
        {
            var replyTo = new TweetIdentifier(replyToId);
            var atNames = string.Join(" ",
                                      toScreanNames
                                      .Where(x => !string.IsNullOrEmpty(x))
                                      .Where(x => x != _botUser.ScreenName)
                                      .Distinct()
                                      .Select(x => "@" + x));

            // TODO メッセージをURLなどを考慮した長さに正規化する
            // TODO 添付の仕方を見直す(ビデオ対応など。。。)
            // https://github.com/linvi/tweetinvi/issues/53
            var mediaBinaries = mediaUrls.Take(4)
                                .Select(x => new BinaryReader(
                                            WebRequest.Create(x).GetResponse().GetResponseStream()
                                            ).ReadAllBytes()).ToList();

            return(Tweetinvi.Tweet.PublishTweet(
                       $"{atNames} {messageText}".SafeSubstring(0, 140),
                       new PublishTweetOptionalParameters
            {
                InReplyToTweet = replyTo,
                MediaBinaries = mediaBinaries,
            }));
        }
Пример #2
0
        public ITweet SendReply(
            string messageText,
            // TODO そのうち渡し方を見直す
            IList <string> mediaUrls,
            long replyToId,
            params string[] toScreanNames)
        {
            logger.LogInformation($"SendReply. {replyToId} {messageText}");
            var replyTo = new TweetIdentifier(replyToId);
            var atNames = string.Join(" ",
                                      toScreanNames
                                      .Where(x => !string.IsNullOrEmpty(x))
                                      .Where(x => x != _botUser.ScreenName)
                                      .Distinct()
                                      .Select(x => "@" + x));

            // 動画なら1件だけ、他は画像とみなして4件まで
            var videoMediaUrls = mediaUrls
                                 .Where(x => x.ToLower().EndsWith("gif") || x.ToLower().EndsWith("api"));
            var attachMediaUrls = videoMediaUrls.Any()
                ? videoMediaUrls.Take(1)
                : mediaUrls.Take(4);
            var mediaBinaries = attachMediaUrls
                                .Select(x => new BinaryReader(
                                            WebRequest.Create(x).GetResponse().GetResponseStream()
                                            ).ReadAllBytes()).ToList();

            // TODO メッセージをURLなどを考慮した長さに正規化する
            // TODO 添付の仕方を見直す(ビデオ対応など。。。)
            // https://github.com/linvi/tweetinvi/issues/53
            return(Tweetinvi.Tweet.PublishTweet(
                       $"{atNames} {messageText}".SafeSubstring(0, 140),
                       new PublishTweetOptionalParameters
            {
                InReplyToTweet = replyTo,
                MediaBinaries = mediaBinaries,
            }));
        }
Пример #3
0
 public GetRetweeterIdsParameters(long tweetId) : this()
 {
     Tweet = new TweetIdentifier(tweetId);
 }
Пример #4
0
 public DestroyRetweetParameters(long tweetId)
 {
     Tweet = new TweetIdentifier(tweetId);
 }
Пример #5
0
 public PublishRetweetParameters(long tweetId)
 {
     Tweet = new TweetIdentifier(tweetId);
 }