public async Task <RuntimeResult> ListWarningsAsync(IGuildUser user) { var warnings = await _warnings.GetWarningsAsync(user); var appearance = PaginatedAppearanceOptions.Default; appearance.Title = "Warnings"; appearance.Color = Color.Orange; var paginatedEmbed = await PaginatedEmbedFactory.PagesFromCollectionAsync ( _feedback, _interactivity, this.Context.User, warnings, async (eb, warning) => { eb.WithTitle($"Warning #{warning.ID} for {user.Username}:{user.Discriminator}"); var author = await this.Context.Guild.GetUserAsync((ulong)warning.Author.DiscordID); eb.WithAuthor(author); eb.WithDescription(warning.Reason); eb.AddField("Created", warning.CreatedAt); if (warning.CreatedAt != warning.UpdatedAt) { eb.AddField("Last Updated", warning.UpdatedAt); } if (warning.IsTemporary) { eb.AddField("Expires On", warning.ExpiresOn); } if (!(warning.MessageID is null)) { // TODO } }, appearance : appearance ); await _interactivity.SendInteractiveMessageAndDeleteAsync ( this.Context.Channel, paginatedEmbed, TimeSpan.FromMinutes(5) ); return(RuntimeCommandResult.FromSuccess()); }
public async Task <IResult> ListWarningsAsync(IUser user) { var warnings = await _warnings.GetWarningsAsync(_context.GuildID.Value, user.ID); var createPages = await PaginatedEmbedFactory.PagesFromCollectionAsync ( warnings, async warning => { var getAuthor = await _userAPI.GetUserAsync(warning.Author.DiscordID); if (!getAuthor.IsSuccess) { return(Result <Embed> .FromError(getAuthor)); } var author = getAuthor.Entity; var getAuthorAvatar = CDN.GetUserAvatarUrl(author); var embedFields = new List <EmbedField>(); var eb = new Embed { Title = $"Warning #{warning.ID} for {user.Username}:{user.Discriminator}", Colour = Color.Orange, Author = new EmbedAuthor(author.Username) { IconUrl = getAuthorAvatar.IsSuccess ? getAuthorAvatar.Entity.ToString() : default(Optional <string>) }, Description = warning.Reason, Fields = embedFields }; embedFields.Add(new EmbedField("Created", warning.CreatedAt.Humanize())); if (warning.CreatedAt != warning.UpdatedAt) { embedFields.Add(new EmbedField("Last Updated", warning.UpdatedAt.Humanize())); } if (warning.ExpiresOn.HasValue) { embedFields.Add(new EmbedField("Expires On", warning.ExpiresOn.Humanize())); } return(eb); } ); if (createPages.Any(p => !p.IsSuccess)) { return(createPages.First(p => !p.IsSuccess)); } var pages = createPages.Select(p => p.Entity).ToList(); return((Result)await _feedback.SendContextualPaginatedMessageAsync ( _context.User.ID, pages, ct : this.CancellationToken )); }