コード例 #1
0
        public async Task TeamMembersAsync([Name("TeamName")][Remainder] string name)
        {
            SendConstructionMessage();

            var team = await ScrapClient.GetTeamByNameAsync(name);

            await DeleteConstructionMessageAsync();

            if (team != null)
            {
                var pages = new List <PageBuilder>();

                var allMembers = await team.GetMembersAsync();

                var groups = allMembers.GroupBy(x => x.Rank);

                var leader = groups.Where(x => x.Key == Rank.Leader).First().First();
                pages.Add(PageUtils.LeaderPage(team, leader));

                if (groups.Where(x => x.Key == Rank.Coleader).Any())
                {
                    var coLeaders = groups.Where(x => x.Key == Rank.Coleader).First().OrderByDescending(x => x.Trophies).ToArray();
                    pages.AddRange(coLeaders.Chunk(10).Select(x => PageUtils.CoLeaderPage(team, x.ToArray())));
                }
                if (groups.Where(x => x.Key == Rank.Elder).Any())
                {
                    var elders = groups.Where(x => x.Key == Rank.Elder).First().OrderByDescending(x => x.Trophies).ToArray();
                    pages.AddRange(elders.Chunk(10).Select(x => PageUtils.ElderPage(team, x.ToArray())));
                }
                if (groups.Where(x => x.Key == Rank.Member).Any())
                {
                    var members = groups.Where(x => x.Key == Rank.Member).First().OrderByDescending(x => x.Trophies).ToArray();
                    pages.AddRange(members.Chunk(10).Select(x => PageUtils.MemberPage(team, x.ToArray())));
                }

                var paginator = new StaticPaginatorBuilder()
                                .WithDefaultEmotes()
                                .WithDeletion(DeletionOptions.AfterCapturedContext | DeletionOptions.Valid)
                                .WithUsers(Context.User)
                                .WithPages(pages)
                                .Build();

                await Interactivity.SendPaginatorAsync(paginator, Context.Channel);
            }
            else
            {
                await ReplyAsync(embed : EmbedUtils.NotFoundEmbed("Team", name));
            }
        }