public async Task Surprise(CommandContext ctx) { using (var httpClient = new HttpClient()) { var client = DevRantClient.Create(httpClient); var rant = client.GetSurprise().Result; var rantEmbed = new DiscordEmbedBuilder { Author = new DiscordEmbedBuilder.EmbedAuthor { IconUrl = GetIcon(rant.Rant.UserAvatar.Image), Name = $"{rant.Rant.UserName} [{rant.Rant.UserScore}]", Url = GetUrl(rant.Rant.UserName) }, ThumbnailUrl = GetIcon(rant.Rant.UserAvatar.Image), Timestamp = new DateTimeOffset(DateTime.Now), Color = new DiscordColor(rant.Rant.UserAvatar.Background), Description = rant.Rant.Content, ImageUrl = rant.Rant.AttachedImage?.URL, Footer = new DiscordEmbedBuilder.EmbedFooter { Text = $"Rant ID: {rant.Rant.Id}" } }; await ctx.RespondAsync($"", embed : rantEmbed); } }
public async Task Search_Rant_From_In_Memory_Web_Server_Not_Null() { var client = DevRantClient.Create(new HttpClient(this._httpServer)); var rant = await client.SearchRants("devRant"); Assert.IsNotNull(rant); Assert.IsTrue(rant.Success); }
public async Task Get_Rants_From_In_Memory_Web_Server_Not_Null() { var client = DevRantClient.Create(new HttpClient(this._httpServer)); var rant = await client.GetRants(Sort.Algo, 50, 0); Assert.IsNotNull(rant); Assert.IsTrue(rant.Success); }
public async Task <IActionResult> Get(string username, string subtext) { var client = DevRantClient.Create(new HttpClient()); // Convert username to userID var userId = await client.GetUserID(username); if (!userId.Success) { _logger.LogDebug($"User {username} does not exist."); return(BadRequest("User does not exist!")); } // Use the userID to retrive the meta information about the avatar var user = await client.GetUser(userId.UserId); var userProfile = user.Profile; var text = string.IsNullOrEmpty(subtext) ? userProfile.About : subtext; if (text.Length > _bannerOptions.MaxSubtextLength) { _logger.LogDebug("Subtext is too long"); _logger.LogDebug(subtext); return(BadRequest("Subtext too long")); } string banner; try { banner = await Banner.GenerateAsync(_bannerOptions, userProfile, text); } catch (AvatarNotFoundException ex) { return(BadRequest(ex.Message)); } catch (Exception ex) { _logger.LogError(ex, "Error"); return(StatusCode(500, ex.Message)); } _logger.LogDebug($"Successfully generated banner for {username}"); return(PhysicalFile(banner, "image/png")); }
public FileResult Get(string username, string subtext) { // Convert username to userID var client = DevRantClient.Create(new HttpClient()); var userId = client.GetUserID(username).Result.UserId; // Use the userID to retrive the meta information about the avatar var userProfile = client.GetUser(userId).Result.Profile; var avatar = userProfile.Avatar; // Avatar base url + avatar meta = rendered avatar url var avatarPath = $"{this.DevrantAvatarBaseURL}/{avatar.Image}"; var banner = Banner.Generate(avatarPath, avatar.Background, userProfile.Username, (String.IsNullOrEmpty(subtext) ? userProfile.About : subtext)); return(base.PhysicalFile(banner, "image/png")); }
public RantProducer(Sort sort = Sort.Algo, int bufferSize = 20) { SortType = sort; Client = DevRantClient.Create(new HttpClient()); RantBuffer = new Queue <Rant>(); }
public async Task Rant(CommandContext ctx, [Description("[top | recent | algo]")] string args = "recent") { using (var httpClient = new HttpClient()) { var client = DevRantClient.Create(httpClient); Task <RantsResponse> c; switch (args) { case "top": c = client.GetRants(Sort.Top, 1); break; case "algo": c = client.GetRants(Sort.Algo, 1); break; default: c = client.GetRants(Sort.Recent, 1); break; } var rant = c.Result.Rants.First(); var rantEmbed = new DiscordEmbedBuilder { Author = new DiscordEmbedBuilder.EmbedAuthor { IconUrl = GetIcon(rant.UserAvatar.Image), Name = $"{rant.UserName} [{rant.UserScore}]", Url = GetUrl(rant.UserName) }, ThumbnailUrl = GetIcon(rant.UserAvatar.Image), Timestamp = new DateTimeOffset(DateTime.Now), Color = new DiscordColor(rant.UserAvatar.Background), Description = rant.Content }; if (rant.Tags.Any()) { var tags = rant.Tags.Aggregate("", (current, tag) => current + $"[{tag}]"); rantEmbed.WithFooter($"Tags: {tags}", "https://www.google.com/s2/favicons?domain=www.devrant.io"); } if (rant.AttachedImage != null) { rantEmbed.ImageUrl = rant.AttachedImage.URL; } rantEmbed.Build(); await ctx.RespondAsync("", embed : rantEmbed); var comments = client.GetRant(rant.Id).Result.Comments; if (comments.Count == 0) { return; } DiscordEmbedBuilder CommentEmbed(int commentNumber) { return(new DiscordEmbedBuilder { Author = new DiscordEmbedBuilder.EmbedAuthor { IconUrl = GetIcon(comments[commentNumber].UserAvatar.Image), Name = $"{comments[commentNumber].UserName} [{comments[commentNumber].UserScore}]", Url = GetUrl(comments[commentNumber].UserName) }, Color = new DiscordColor(comments[commentNumber].UserAvatar.Background), Description = comments[commentNumber].Content }); } var counter = 1; CommentEmbed(counter).Build(); var commentSection = ctx.RespondAsync($"Comment #{counter}/{comments.Count}", embed: CommentEmbed(counter - 1)) .Result; var up = UpEmoji(ctx); var down = DownEmoji(ctx); await commentSection.CreateReactionAsync(up); await commentSection.CreateReactionAsync(down); ctx.Client.MessageReactionAdded += eventArgs => { if (eventArgs.User.IsBot) { return(Task.CompletedTask); } if (eventArgs.Message.Id != commentSection.Id) { return(Task.CompletedTask); } //if (eventArgs.User.Id != ctx.Member.Id) return Task.CompletedTask; eventArgs.Message.DeleteReactionAsync(eventArgs.Emoji, eventArgs.User); if (eventArgs.Emoji.Equals(up)) { if (counter < 0) { counter = 0; return(Task.CompletedTask); } counter--; commentSection.ModifyAsync($"Comment #{counter}/{comments.Count}", CommentEmbed(counter - 1)); Task.Delay(250); return(Task.CompletedTask); } if (!eventArgs.Emoji.Equals(down)) { return(Task.CompletedTask); } if (counter < comments.Count + 1) { counter++; commentSection.ModifyAsync($"Comment #{counter}/{comments.Count}", CommentEmbed(counter - 1)); Task.Delay(250); return(Task.CompletedTask); } if (counter == comments.Count + 1) { return(Task.CompletedTask); } Task.Delay(250); return(Task.CompletedTask); }; } }
public async Task Search(CommandContext ctx, [Description("Search term")] string term, [Description("Start rant #")] int startingRant = 1) { if (startingRant < 1) { await ctx.RespondAsync("Last argument has to be above 1."); return; } using (var httpClient = new HttpClient()) { var client = DevRantClient.Create(httpClient); var rants = client.SearchRants(term).Result; if (!rants.Success || rants.Results.Count < 1) { await ctx.RespondAsync("No rants with this tag found."); return; } var counter = startingRant; DiscordEmbedBuilder RantEmbed(int rantNumber) { return(new DiscordEmbedBuilder { Author = new DiscordEmbedBuilder.EmbedAuthor { IconUrl = GetIcon(rants.Results[rantNumber].UserAvatar.Image), Name = $"{rants.Results[rantNumber].UserName} [{rants.Results[rantNumber].UserScore}]", Url = GetUrl(rants.Results[rantNumber].UserName) }, ThumbnailUrl = GetIcon(rants.Results[rantNumber].UserAvatar.Image), Timestamp = new DateTimeOffset(DateTime.Now), Color = new DiscordColor(rants.Results[rantNumber].UserAvatar.Background), Description = rants.Results[rantNumber].Content, ImageUrl = rants.Results[rantNumber].AttachedImage == null ? null : rants.Results[rantNumber].AttachedImage.URL }); } var message = ctx.RespondAsync($"Rant #{counter}/{rants.Results.Count}", embed: RantEmbed(counter - 1)).Result; if (rants.Results.Count > 1) { var up = UpEmoji(ctx); var down = DownEmoji(ctx); await message.CreateReactionAsync(up); await message.CreateReactionAsync(down); ctx.Client.MessageReactionAdded += eventArgs => { if (eventArgs.User.IsBot || eventArgs.Message.Id != message.Id) { return(Task.CompletedTask); } eventArgs.Message.DeleteReactionAsync(eventArgs.Emoji, eventArgs.User); //if (eventArgs.User.Id != ctx.Member.Id) return Task.CompletedTask; if (eventArgs.Emoji.Equals(up)) { if (counter < 0) { counter = 0; return(Task.CompletedTask); } counter--; message.ModifyAsync($"Rant #{counter}/{rants.Results.Count}", RantEmbed(counter - 1)); Task.Delay(250); return(Task.CompletedTask); } if (!eventArgs.Emoji.Equals(down)) { return(Task.CompletedTask); } if (counter < rants.Results.Count + 1) { counter++; message.ModifyAsync($"Rant #{counter}/{ rants.Results.Count}", RantEmbed(counter - 1)); Task.Delay(250); return(Task.CompletedTask); } if (counter == rants.Results.Count + 1) { return(Task.CompletedTask); } Task.Delay(250); return(Task.CompletedTask); }; } } }