protected override async void HandleCore(Message message, IReadOnlyList <string> args) { using (var hc = new HttpClient()) { var sb = new StringBuilder("http://shipwreck.jp/imascg/Image/Search?count=128"); AppendQueryString(message, args, sb); var res = await hc.GetAsync(sb.ToString()).ConfigureAwait(false); if (res.IsSuccessStatusCode) { var json = await res.Content.ReadAsStringAsync(); var iir = JsonConvert.DeserializeObject <IdolImageResult>(json); if (iir.Items?.Count > 0) { var img = iir.Items[new Random().Next(iir.Items.Count)]; var newUrl = await ImageSanitizer.GetSafeUrlAsync(img.ImageUrl).ConfigureAwait(false); using (var bc = new BotClient()) { await bc.PostMessageAsync(message.Channel.Id, $"[]({newUrl})", isNsfw : false).ConfigureAwait(false); } } else { using (var bc = new BotClient()) { await bc.PostMessageAsync(message.Channel.Id, "Not Found", isNsfw : false).ConfigureAwait(false); } } } } }
private static async Task PostCapturesAsync(Message message, bool verbose, AnimeDBCaptureResult cr) { var sanitized = cr.Captures.Select(c => ImageSanitizer.GetSafeUrlAsync(c.RawUrl)).ToArray(); await Task.WhenAll(sanitized).ConfigureAwait(false); var sb = new StringBuilder(); sb.Append("Found ").Append(cr.TotalCount.ToString("#,0")).Append(" images."); var i = 0; foreach (var c in cr.Captures) { var u = sanitized[i++].Result; if (verbose) { sb.AppendLine(); sb.Append("- [").Append(c.Episode.FullTitle); if (c.Position >= 0) { sb.Append(" "); sb.Append(TimeSpan.FromSeconds(c.Position.Value).ToString("mm\":\"ss")); } sb.Append("](").Append(u).Append(")"); } else { sb.Append("[](").Append(u).Append(")"); } } using (var bc = new BotClient()) { await bc.PostMessageAsync(message.Channel.Id, sb.ToString(), isNsfw : false).ConfigureAwait(false); } }