public async Task GetSummonerStatsAsync(params string[] summonerName)
        {
            foreach (var summonerRef in summonerName)
            {
                var summonerRefNormalized =
                    FirstLetterToUpper(summonerRef); // We normalize the name to account for any capitlizations
                var summoner = await Task.Run(() => LeagueofLegends.GetSummonerAsync(summonerRefNormalized));

                //var champ = await Task.Run(() => LeagueofLegends.GetSummonerLeagueStatsAsync(summoner));
                if (summoner != null) //&& champ != null)
                {
                    var id    = summoner.Id;
                    var level = summoner.Level;
                    await ReplyAsync(
                        Format.Code(
                            $@"Summoner: {summoner.Name}{Environment.NewLine}Summer id: {id.ToString()}{
                                    Environment.NewLine
                                }Summoner level: {level.ToString()}"));
                }
                else
                {
                    await ReplyAsync($"Could not retrieve info about {summonerRef}.");
                }
            }
        }
        public async Task GetMostRecentMatchAsync([Remainder] string summonerName)
        {
            var         normalizedSummonerName = FirstLetterToUpper(summonerName);
            MatchExtend matchEx;
            Summoner    summoner;
            long        accountId;

            try
            {
                var match = await Task.Run(() => LeagueofLegends.GetMostRecentGame(normalizedSummonerName));

                matchEx  = new MatchExtend(match);
                summoner = await Task.Run(() => LeagueofLegends.GetSummonerAsync(normalizedSummonerName));

                accountId = summoner.AccountId;
            }
            catch (Exception)
            {
                await ReplyAsync(
                    $"There was an error retrieving recent match for {summonerName}. The error has been logged.");

                return;
            }


            if (matchEx != null)
            {
                var shamefulString    = "";
                var worstPlayerString = "";
                var reasonWeLost      = "";

                foreach (var participant in matchEx.Match.ParticipantIdentities)
                {
                    foreach (var person in matchEx.Match.Participants)
                    {
                        if (person.ParticipantId == participant.ParticipantId && participant.Player.AccountId == accountId)
                        {
                            var name        = participant.Player.SummonerName;
                            var highestTier = person.HighestAchievedSeasonTier;
                            var lane        = person.Timeline.Lane;
                            var role        = person.Timeline.Role;
                            var assists     = person.Stats.Assists;
                            var kills       = person.Stats.Kills;
                            var deaths      = person.Stats.Deaths;
                            var damageDealt = person.Stats.TotalDamageDealtToChampions;
                            var damageTaken = person.Stats.TotalDamageTaken;
                            var healed      = person.Stats.TotalHeal;
                            var champ       = await Task.Run(() => LeagueofLegends.GetChampionInfoAsync(person.ChampionId));

                            var time       = matchEx.Match.GameDuration;
                            var outcome    = person.Stats.Winner;
                            var champLevel = person.Stats.ChampLevel;

                            var playerTeam = matchEx.Teams.First(x => x.Stats.TeamId == person.TeamId);

                            worstPlayerString =
                                $"{playerTeam.WorstParticipant.SummonerName} was the worst player on the team.";

                            shamefulString +=
                                $"Game ID: {matchEx.Match.GameId}{Environment.NewLine}Name: {name}{Environment.NewLine}Game Mode: {matchEx.Match.GameMode}{Environment.NewLine}Lane: {lane}{Environment.NewLine}Role: {role}{Environment.NewLine}Champion: {champ.Name}{Environment.NewLine}Champ Level: {champLevel}{Environment.NewLine}Game Length: {ConvertTime(time)}{Environment.NewLine}KDA: {kills}/{deaths}/{assists}{Environment.NewLine}Highest Rank (at the end of a season): {highestTier}{Environment.NewLine}Damage Dealt: {damageDealt.ToString("N0")}{Environment.NewLine}Damage Taken: {damageTaken.ToString("N0")}";

                            //!outcome = the player lost their game
                            if (damageTaken > damageDealt && !outcome && deaths >= kills + 3 && !role.Contains("SUPPORT"))
                            {
                                reasonWeLost = $"{name} is the reason we lost.";
                            }
                            else if (healed < damageTaken && !outcome && deaths >= kills + 6 && assists <= kills + deaths &&
                                     role.Contains("SUPPORT"))
                            {
                                reasonWeLost = $"{name} is the reason we lost.";
                            }
                        }
                    }
                }

                await ReplyAsync($"Most recent game:{Environment.NewLine}" + Format.Code(shamefulString) +
                                 Environment.NewLine + reasonWeLost + Environment.NewLine + worstPlayerString);
            }
            else
            {
                await ReplyAsync("There was an error retrieving recent games. The error has been logged.");
            }
        }