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)); }