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

            var players = await ScrapClient.GetPlayersByNameAsync(name, 10);

            await DeleteConstructionMessageAsync();

            if (players.Length == 0)
            {
                await ReplyAsync(embed : EmbedUtils.NotFoundEmbed("Player", name));

                return;
            }
            if (players.Length == 1)
            {
                var player = players[0];
                var team   = await player.GetTeamAsync();

                var member = team != null
                    ? await team.GetMemberAsync(player.Id)
                    : null;

                await ReplyAsync(embed : EmbedUtils.PlayerEmbed(player, team, member));

                return;
            }

            var sortedPlayers = players.OrderBy(x => x.Name).ToList();

            var selection = new MessageSelectionBuilder <Player>()
                            .WithSelectables(sortedPlayers.Take(12).ToArray())
                            .WithUsers(Context.User)
                            .WithTitle("Pick your player!")
                            .WithAllowCancel(false)
                            .WithDeletion(DeletionOptions.AfterCapturedContext | DeletionOptions.Valid)
                            .WithStringConverter(x => $"{x.Name} ({x.Trophies}:trophy:)")
                            .Build();

            var result = await Interactivity.SendSelectionAsync(selection, Context.Channel);

            if (result.IsCancelled || result.IsTimeouted)
            {
                return;
            }

            var selectedPlayer = result.Value;
            var selectedTeam   = await selectedPlayer.GetTeamAsync();

            var selectedMember = selectedTeam != null
                ? await selectedTeam.GetMemberAsync(selectedPlayer.Id)
                : null;

            await ReplyAsync(embed : EmbedUtils.PlayerEmbed(selectedPlayer, selectedTeam, selectedMember));
        }