示例#1
0
        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));
        }