public async Task ReplyLeaderboardAsync(ILeaderboard leaderboard) { List <string> lines = new List <string>(leaderboard.Select(item => { int rankWidth = leaderboard.Count().ToString().Length; int scoreWidth = leaderboard.Max(i => i.Score).ToString().Length; return(string.Format("**`{0}.`**{1}`{2}` {3}", item.Rank.ToString("0".PadRight(rankWidth, '0')), item.Icon, item.Score.ToString("0".PadRight(scoreWidth, '0')), string.Format(item.Rank <= 3 ? "**{0}**" : "{0}", string.IsNullOrEmpty(item.Name) ? "Results" : item.Name.ToTitle()) )); })); IEnumerable <Discord.Messaging.IEmbed> pages = EmbedUtilities.CreateEmbedPages(string.Empty, lines, itemsPerPage: 20, columnsPerPage: 1, options: EmbedPaginationOptions.AddPageNumbers); string title = leaderboard.Title; if (string.IsNullOrWhiteSpace(title)) { title = "Leaderboard"; } title = $"🏆 {title.ToTitle()} ({lines.Count()})"; foreach (Discord.Messaging.IEmbed page in pages) { page.Title = title; } await ReplyAsync(new PaginatedMessage(pages)); }