public async Task GetProfile(string region, [Remainder] string name)
        {
            var profile = RequestHandler.GetProfileByName(region, name);
            var builder = Builders.BaseBuilder("", "", Color.Blue, new EmbedAuthorBuilder().WithIconUrl(profile.icon).WithName(profile.name), profile.ratingIcon);

            builder.AddField("Information",
                             $"**Name: **{profile.name}\n" +
                             $"**Prestige: **{profile.prestige}\n" +
                             $"**Level: **{profile.level}\n" +
                             $"**Rating: **{profile.rating}\n" +
                             $"**Total Games Won: **{profile.gamesWon}\n" +
                             $"**QuickPlay Games Won: **{profile.quickPlayStats.games.won}\n" +
                             $"**Competitive:**\n" +
                             $"- Games Played: {profile.competitiveStats.games.played}\n" +
                             $"- Games Won: {profile.competitiveStats.games.won}\n");
            var cpHerolist  = profile.competitiveStats.careerStats.Where(x => x.Value.game.timePlayed != "--").ToDictionary(x => x.Key, x => x.Value);
            var orderedList = cpHerolist.OrderByDescending(x => x.Value.game.gamesWon).ToDictionary(x => x.Key, x => x.Value);
            var count       = 3;

            if (orderedList.Count() < count)
            {
                count = orderedList.Count();
            }
            builder.AddField("Top 3 Competitive Heroes", "Results may not be 100% accurate");
            using (var enumerator = orderedList.GetEnumerator())
            {
                enumerator.MoveNext(); //Skip AllHeroes
                for (int i = 0; i < count; i++)
                {
                    enumerator.MoveNext();
                    var hero = enumerator.Current;
                    builder.AddInlineField(FirstCharToUpper(hero.Key),
                                           $"Playtime: {hero.Value.game.timePlayed}\n" +
                                           $"Eliminations: {hero.Value.combat.eliminations}\n" +
                                           $"Solo Kills: {hero.Value.combat.soloKills}\n" +
                                           $"Deaths: {hero.Value.deaths.deaths}\n" +
                                           $"Weapon Accuracy: {hero.Value.combat.weaponAccuracy}\n");
                }
            }
            builder.AddField("Top 3 QuickPlay Heros", "Results may not be 100% accurate.");
            var qpHerolist = profile.quickPlayStats.careerStats.Where(x => x.Value.game.timePlayed != "--").ToDictionary(x => x.Key, x => x.Value);
            var ordered    = qpHerolist.OrderByDescending(x => x.Value.game.gamesWon).ToDictionary(x => x.Key, x => x.Value);

            using (var enumerator = ordered.GetEnumerator())
            {
                enumerator.MoveNext(); //Skip AllHeroes
                for (int i = 0; i < count; i++)
                {
                    enumerator.MoveNext();
                    var hero = enumerator.Current;
                    builder.AddInlineField(FirstCharToUpper(hero.Key),
                                           $"Playtime: {hero.Value.game.timePlayed}\n" +
                                           $"Eliminations: {hero.Value.combat.eliminations}\n" +
                                           $"Solo Kills: {hero.Value.combat.soloKills}\n" +
                                           $"Deaths: {hero.Value.deaths.deaths}\n" +
                                           $"Weapon Accuracy: {hero.Value.combat.weaponAccuracy}\n");
                }
            }
            await ReplyAsync("", embed : builder.Build());
        }
Exemple #2
0
        public async Task Champion([Remainder] string name)
        {
            var database  = new RiotData();
            var champions = database.Champions.Where(x => x.name.ToLower().Equals(name.ToLower())).Include(c => c.spells).Include(c => c.skins).Include(c => c.info).Include(c => c.passive).ToList();

            DataLibrary.Champion champ = null;
            champ = champions.FirstOrDefault(x => x.name.ToLower().Equals(name.ToLower()));
            if (champ == null)
            {
                champ = champions.First();
            }
            var builder = Builders.BaseBuilder(champ.name, champ.title, Color.DarkBlue, null, $"http://ddragon.leagueoflegends.com/cdn/6.24.1/img/champion/{champ.key}.png");
            var keys    = new List <string>()
            {
                "Q", "W", "E", "R"
            };
            string abilities = "";

            builder.AddField("Abilities", $"{champ.name} has the following spells:");
            for (int i = 0; i < 4; i++)
            {
                //abilities += $"**{keys[i]} {champ.spells[i].name}:**  {champ.spells[i].sanitizedDescription}\n";
                builder.AddField(keys[i] + " " + champ.spells[i].name + ":", $"{champ.spells[i].sanitizedDescription}");
            }
            builder.AddField("Passive", $"**{champ.passive.name}: **{champ.passive.description}");
            //builder.AddField("Abilities", abilities);
            string skins = "";

            champ.skins.ForEach(x => skins += x.name + "\n");
            builder.AddField("Skins", skins);
            await ReplyAsync("", embed : builder.Build());
        }
Exemple #3
0
        public async Task GetHelpCommand([Remainder] string commmand)
        {
            var commandInfo = DiscordManager.Commands.Commands.FirstOrDefault(x =>
                                                                              commmand.ToLower().Contains(x.Name.ToLower()) && commmand.ToLower().Contains(x.Module.Name.ToLower()));

            if (commandInfo != null)
            {
                var builder = Builders.BaseBuilder(commandInfo.Name, "", Color.Blue, null, null);
                var info    = $"**Module: **{commandInfo.Module.Name}\n" +
                              $"**Description: **{commandInfo.Summary}\n";
                foreach (var attribute in commandInfo.Attributes.Where(x => x is AttributeWithValue))
                {
                    var command = (AttributeWithValue)attribute;
                    info += $"{command.Prefix} {command.Value}\n";
                }
                if (!string.IsNullOrEmpty(info))
                {
                    builder.AddField("Information", info);
                }
                await ReplyAsync("", embed : builder.Build());
            }
            else
            {
                await ReplyAsync("Command not found");
            }
        }
Exemple #4
0
        public async Task Mastery(string region, string summonerName, string championName)
        {
            RiotData   data       = new RiotData();
            RiotClient riotClient = new RiotClient(OptionManager.RiotKey);

            DataLibrary.Champion champion = null;
            Discord.EmbedBuilder builder  = null;
            var championList = data.Champions.Where(x => x.name.ToLower().Equals(championName.ToLower())).ToList();

            if (championList.Count < 1)
            {
                championList = new RiotData().Champions.Where(x => x.name.ToLower().Contains(championName.ToLower()))
                               .ToList();
            }
            champion = championList[0];
            if (champion != null)
            {
                var summoner        = riotClient.Summoner.GetSummonerByName(summonerName, PlatformHelper.StringToPlatform(region));
                var masteries       = riotClient.Masteries.GetchampionMasteries(PlatformHelper.StringToPlatform(region), summoner.SummonerId);
                var championMastery = masteries.FirstOrDefault(x => x.ChampionId == champion.ChampionId);
                builder = Builders.BaseBuilder($"{summoner.Name} mastery for {champion.name}", "", Color.DarkBlue, null, $"http://ddragon.leagueoflegends.com/cdn/6.24.1/img/champion/{champion.key}.png");
                builder.AddInlineField("Level", championMastery.Level);
                builder.AddInlineField("Points", championMastery.ChampionPoints);
            }
            else
            {
                builder = Builders.ErrorBuilder("Champion was not found");
            }

            await ReplyAsync("", embed : builder.Build());
        }
Exemple #5
0
        public async Task GetCharacter([Remainder] string name)
        {
            var character = MeleeHandler.RequestHandler.GetCharacter(name);

            if (character == null)
            {
                await ReplyAsync("", embed : Builders.ErrorBuilder("Character not found"));
            }
            else
            {
                var builder = Builders.BaseBuilder("", "", Color.Teal,
                                                   new EmbedAuthorBuilder().WithName(character.name).WithIconUrl($"http://smashlounge.com/img/pixel/{character.name.Replace(" ", "")}HeadSSBM.png"), "");
                builder.AddField("Description", character.guide);
                builder.AddField("Stats", $"**Tier: **{character.tierdata}\n" +
                                 $"**Weight: **{character.weight}\n" +
                                 $"**Fallspeed: **{character.fallspeed}\n" +
                                 $"**Can Walljump: **{Convert.ToBoolean(Int32.Parse(character.walljump))}");
                if (character.gifs != null)
                {
                    foreach (var smashLoungeGif in character.gifs)
                    {
                        builder.AddInlineField(smashLoungeGif.Description,
                                               $"**Link: **https://gfycat.com/{smashLoungeGif.Url}\n" +
                                               $"**Source: **{smashLoungeGif.Source}\n");
                    }
                }
                await ReplyAsync("", embed : builder.Build());
            }
        }
Exemple #6
0
        public async Task GetItem([Remainder] string name)
        {
            var message = await ReplyAsync("Getting data...");

            var database = new RiotData();
            //var item = database.Items.FirstOrDefault(x => x.name.ToLower().Equals(name.ToLower()));
            var     itemList = database.Items.Where(x => x.name.ToLower().Equals(name.ToLower())).Include(i => i.gold).ToList();
            ItemDto item     = null;

            Discord.EmbedBuilder builder = null;
            if (itemList.Count > 1)
            {
                var items = database.Items.Where(x => x.name.ToLower().Contains(name.ToLower())).ToList();
                builder = Builders.BaseBuilder("Multiple items found", "", Color.Red, null, "");
                string itemsstring = "";
                items.ForEach(x => itemsstring += x.name + "\n");
                builder.AddField("Items", itemsstring);
                await ReplyAsync("", embed : builder.Build());
            }
            else
            {
                var items = database.Items.Include(x => x.gold).Where(x => x.name.ToLower().Contains(name.ToLower())).ToList();
                if (items.Count == 1)
                {
                    item    = items[0];
                    builder = Builders.BaseBuilder("", "", Color.DarkBlue,
                                                   new EmbedAuthorBuilder().WithName(item.name),
                                                   $"http://ddragon.leagueoflegends.com/cdn/6.24.1/img/item/{item.ItemId}.png");
                    builder.AddField("Effect", item.plaintext);
                    builder.AddField("Tooltip",
                                     Regex.Replace(item.description.Replace("<br>", "\n"), "<.*?>", String.Empty));
                    builder.AddField("Cost", $"**Total: **{item.gold.total}\n" +
                                     $"**Base: **{item.gold.Base}");
                    if (!string.IsNullOrEmpty(item.requiredChampion))
                    {
                        builder.AddField("Required Champion", item.requiredChampion);
                    }
                    if (item.consumed)
                    {
                        builder.AddField("Consumable",
                                         $"This item is a consumable and a play can have {item.stacks} of this item at a time.");
                    }
                    await ReplyAsync("", embed : builder.Build());
                }
                else if (items.Count > 1)
                {
                    builder = Builders.BaseBuilder("Multiple items found", "", Color.Red, null, "");
                    string itemsstring = "";
                    items.ForEach(x => itemsstring += x.name + "\n");
                    builder.AddField("Items", itemsstring);
                    await ReplyAsync("", embed : builder.Build());
                }
                else
                {
                    builder = Builders.ErrorBuilder("Item not found");
                    await ReplyAsync("", embed : builder.Build());
                }
            }
            await message.DeleteAsync();
        }
Exemple #7
0
        public async Task GetTech([Remainder] string name)
        {
            var tech = MeleeHandler.RequestHandler.GetTechnique(name);

            if (tech == null)
            {
                await ReplyAsync("", embed : Builders.ErrorBuilder("Tech not found").Build());
            }
            else
            {
                var builder = Builders.BaseBuilder("", "", Color.Teal,
                                                   new EmbedAuthorBuilder().WithName(tech.TechName),
                                                   "");
                builder.AddField("Information",
                                 $"**Description: **{tech.Description}\n" +
                                 $"**Inputs: **{tech.Inputs}\n" +
                                 $"**SmashWiki Link: **{tech.SmashWikiLink}");
                if (tech.Gifs != null)
                {
                    builder.WithImageUrl($"https://zippy.gfycat.com/{tech.Gifs[0].Url}.gif");
                    foreach (var gif in tech.Gifs)
                    {
                        string source = "";
                        if (!string.IsNullOrEmpty(gif.Source))
                        {
                            source = $"**Source: **{gif.Source}";
                        }
                        builder.AddInlineField(gif.Description,
                                               $"**Link: **https://gfycat.com/{gif.Url} \n" + source
                                               );
                    }
                }
                await ReplyAsync("", embed : builder.Build());
            }
        }
        public async Task Search([Remainder] string name)
        {
            var root = RequestHandler.GetAmiibo(name);

            foreach (var amiibo in root.amiibo)
            {
                Discord.EmbedBuilder builder = Builders.BaseBuilder("", "", Color.DarkMagenta,
                                                                    new EmbedAuthorBuilder().WithName("AmiiboAPI's Results").WithUrl("http://www.amiiboapi.com"), null);
                builder.AddInlineField("General Information",
                                       "**Name: **" + amiibo.Name + "\n" +
                                       "**Amiibo Series: **" + amiibo.Series + "\n" +
                                       "**Game Series: **" + amiibo.GameSeries);
                builder.AddInlineField("Releases",
                                       "**NA:** " + Convert.ToDateTime(amiibo.Releases.na).ToLongDateString() + "\n" +
                                       "**EU: **" + Convert.ToDateTime(amiibo.Releases.eu).ToLongDateString() + "\n" +
                                       "**JP: **" + Convert.ToDateTime(amiibo.Releases.jp).ToLongDateString() + "\n" +
                                       "**AU: **" + Convert.ToDateTime(amiibo.Releases.au).ToLongDateString());
                try
                {
                    builder.WithImageUrl(amiibo.ImageURL);
                }
                catch { }
                await ReplyAsync("", embed : builder.Build());
            }
        }
Exemple #9
0
        public async Task Skin([Remainder] string name)
        {
            var database = new RiotData();
            var skins    = database.Skins;
            var skinlist = skins.Where(x => x.name.ToLower().Contains(name.ToLower())).ToList();

            if (skinlist.Count() > 1)
            {
                var    builder = Builders.BaseBuilder("Error: Multiple found", "", Color.Red, null, "");
                string doubes  = "";
                skinlist.ForEach(x => doubes += x.name + "\n");
                builder.AddField("Skins", doubes);
                await ReplyAsync("", embed : builder.Build());
            }
            else
            {
                var      skin  = skinlist[0];
                Champion champ = null;
                foreach (var databaseChampion in database.Champions.Include("skins"))
                {
                    foreach (var databaseChampionSkin in databaseChampion.skins)
                    {
                        if (databaseChampionSkin.skinId == skin.skinId)
                        {
                            champ = databaseChampion;
                        }
                    }
                }
                var builder = Builders.BaseBuilder("", "", Color.DarkBlue, null, "");
                builder.WithImageUrl($"http://ddragon.leagueoflegends.com/cdn/img/champion/splash/{champ.key}_{skin.num}.jpg");
                await ReplyAsync("", embed : builder.Build());
            }
        }
Exemple #10
0
        public async Task GetTierlist()
        {
            var builder = Builders.BaseBuilder("Tierlist v3", "", Color.Blue, null, "");

            builder.WithImageUrl("http://i0.kym-cdn.com/photos/images/original/001/228/054/f15.png");
            builder.AddField("Information",
                             "The Smash 4 Tierlist as of 25 December 2017.\nRemember that Tierlists are objective, always play who you love instead of the best character.");
            await ReplyAsync("", embed : builder.Build());
        }
Exemple #11
0
        public async Task GetTierlist()
        {
            var builder = Builders.BaseBuilder("Tierlist", "", Color.Blue, null, "");

            builder.WithImageUrl("https://i.imgur.com/veixUjI.png");
            builder.AddField("Information",
                             "The SSBM Tierlist as of 25 December 2017.\nRemember that Tierlists are objective, always play who you love instead of the best character.");
            await ReplyAsync("", embed : builder.Build());
        }
        public async Task GetTierlist()
        {
            var builder = Builders.BaseBuilder("", "", Color.DarkerGrey,
                                               new EmbedAuthorBuilder().WithName("Tierlist Smash 64").WithUrl("https://www.ssbwiki.com/tier_list"), null);

            builder.WithImageUrl("https://image.prntscr.com/image/6KEnlBs1SSy9w1QrCpGUzQ.png");
            builder.AddField("Information",
                             "The Smash 64 Tierlist as of 1 January 2018.\nRemember that Tierlists are objective, always play who you love instead of the best character.");
            await ReplyAsync("", embed : builder.Build());
        }
        public async Task GetHero([Remainder] string name)
        {
            var    hero     = RequestHandler.GetHeroByName(name);
            string subroles = "";

            hero.sub_roles.ForEach(x => subroles += x.name + ", ");
            if (subroles.Length > 0)
            {
                subroles = subroles.Remove(subroles.Length - 2, 2);
            }
            var builder = Builders.BaseBuilder(hero.name, "", Color.LightOrange, null, "");

            builder.AddField("Information", $"**Name: **{hero.name}\n" +
                             $"**Main Role: **{hero.role.name}\n" +
                             $"**Sub Roles: **{subroles}");
            string lore = "";

            if (!string.IsNullOrEmpty(hero.real_name))
            {
                lore += $"**Real Name: **{hero.real_name}\n";
            }
            if (!string.IsNullOrEmpty(hero.affiliation))
            {
                lore += $"**Affiliation: **{hero.affiliation}\n";
            }
            if (!string.IsNullOrEmpty(hero.base_of_operations))
            {
                lore += $"**Base of Operations: **{hero.base_of_operations}\n";
            }
            if (hero.age != null)
            {
                lore += $"**Age: **{hero.age}\n";
            }
            if (hero.height != null)
            {
                lore += $"**Height: **{hero.height}\n";
            }
            builder.AddField("Lore", lore);
            builder.AddField("Stats",
                             $"**Health: **{hero.health}\n" +
                             $"**Armor: **{hero.armor}\n" +
                             $"**Shield: **{hero.shield}");
            string abilityInfo = "";

            foreach (var overwatchAbility in hero.abilities)
            {
                if (overwatchAbility.is_ultimate)
                {
                    abilityInfo += "***Ultimate***\n";
                }
                abilityInfo += $"**{overwatchAbility.name}**: {overwatchAbility.description}\n";
            }
            builder.AddField("Abilities", abilityInfo);
            await ReplyAsync("", embed : builder.Build());
        }
        public async Task GetGame([Remainder] string gameName)
        {
            var handler = new RequestHandler();
            var game    = handler.LookupGame(gameName);

            if (game == null)
            {
                return;
            }
            var    gameobj = game.data[0];
            var    builder = Builders.BaseBuilder("", "", Color.DarkerGrey, null, "");
            string names   = "";
            bool   first   = true;

            foreach (var gameobjName in gameobj.names)
            {
                if (first)
                {
                    builder.Title = gameobjName.Value;
                    first         = false;
                }
                names += gameobjName.Key + ": " + gameobjName.Value + "\n";
            }

            string categories = "";

            gameobj.categories.data.ForEach(x => categories += x.name + "\n");
            builder.AddInlineField($"**Names:**", names);
            builder.AddInlineField("**Categories**", categories);
            //            builder.AddInlineField("Categories",categories);
            foreach (var gameobjAsset in gameobj.assets)
            {
                if (gameobjAsset.Key == "icon")
                {
                    builder.WithThumbnailUrl(gameobjAsset.Value.uri);
                    break;
                }
            }
            string platforms = "";

            foreach (var gameobjPlatform in gameobj.platforms.data)
            {
                platforms += $"**{gameobjPlatform.name}:** {gameobjPlatform.released}\n";
            }
            builder.AddInlineField("Platforms", platforms);
            string moderators = "";

            foreach (var moderator in gameobj.moderators.data)
            {
                moderators += moderator.names.Values.First() + "\n";
            }
            builder.AddInlineField("**Moderators**", moderators);
            await ReplyAsync("", embed : builder.Build());
        }
Exemple #15
0
        public async Task Games()
        {
            var games = RequestHandler.GetGames();

            Discord.EmbedBuilder builder = Builders.BaseBuilder("", "", ColorPicker.SmashModule,
                                                                null, "");
            string message = "";

            games.ForEach(x => message += x.Name + "\n");
            builder.AddField(new EmbedFieldBuilder().WithValue(message).WithName("All games playable on " + Names.SmashLadder));
            await ReplyAsync("", embed : builder.Build());
        }
Exemple #16
0
        public async Task Performance()
        {
            var stats   = RequestHandler.GetOverallPerformance();
            var builder = Builders.BaseBuilder("Performance per lane", $"On patch *{stats.patch}* and elo *{stats.elo}*", Color.LightOrange,
                                               new EmbedAuthorBuilder().WithName("Statistics by Champion.gg").WithUrl("http://champion.gg"), "");

            builder.AddField(ChampionGGBuilder.GetFieldByLane("Top", stats.positions.TOP));
            builder.AddField(ChampionGGBuilder.GetFieldByLane("Jungle", stats.positions.JUNGLE));
            builder.AddField(ChampionGGBuilder.GetFieldByLane("Mid", stats.positions.MIDDLE));
            builder.AddField(ChampionGGBuilder.GetFieldByLane("ADC", stats.positions.DUO_CARRY));
            builder.AddField(ChampionGGBuilder.GetFieldByLane("Support", stats.positions.DUO_SUPPORT));
            await ReplyAsync("", embed : builder.Build());
        }
        public async Task GetWorldRecord(string game, string category)
        {
            var leaderboard = new RequestHandler().GetWorldRecord(game, category.Replace("%", "")).data;
            var builder     = Builders.BaseBuilder("World record of " + leaderboard.game.data.names["international"] + " " + leaderboard.category.data.name, ""
                                                   , Color.Blue, null, null);

            builder.AddInlineField("Run info",
                                   $"**Time: **{leaderboard.runs[0].run.times.primary.Replace("PT", "").Replace("H", ":").Replace("M", ":").Replace("S", "")}\n" +
                                   $"**Runner: **{leaderboard.players.data[0].names["international"]}\n" +
                                   $"**Video: **{leaderboard.runs[0].run.videos.links[0].uri}\n" +
                                   $"**Comment: \n**{leaderboard.runs[0].run.comment.Replace("\r\n\r\n", "\n")}");
            builder.WithUrl(leaderboard.runs[0].run.weblink);
            builder.WithThumbnailUrl(leaderboard.game.data.assets["icon"].uri);
            await ReplyAsync("", embed : builder.Build());
        }
Exemple #18
0
        public async Task Game(string region, [Remainder] string summonerName)
        {
            Platforms platform   = (Platforms)Enum.Parse(typeof(Platforms), region.ToUpper());
            var       riotClient = new RiotClient(OptionManager.RiotKey);
            var       champions  = new RiotData().Champions;
            var       summoner   = riotClient.Summoner.GetSummonerByName(summonerName, platform);
            var       match      = riotClient.Specate.GameBySummoner(platform, summoner.SummonerId);
            var       builder    = Builders.BaseBuilder("", "", Color.DarkBlue,
                                                        new EmbedAuthorBuilder().WithName(summonerName + "'s game"), "");
            TimeSpan time = new TimeSpan(0, 0, (int)match.GameLength);

            builder.AddField($"Information", $"**Map: **{match.MapId}\n**Time: **{Math.Round(time.TotalMinutes,2)} minutes\n**Mode: **{match.GameMode}");
            for (int i = 1; i < 3; i++)
            {
                string bans1 = "";
                foreach (var matchBannedChampion in match.BannedChampions)
                {
                    if (matchBannedChampion.TeamId == i * 100)
                    {
                        try
                        {
                            bans1 +=
                                champions.FirstOrDefault(x => x.ChampionId == matchBannedChampion.ChampionId).name +
                                ", ";
                        }
                        catch
                        {
                            bans1 += "None, ";
                        }
                    }
                }
                bans1 = bans1.Remove(bans1.Length - 2, 2);
                builder.AddField("Bans Team " + i,
                                 bans1);
                string names          = "";
                string championsNames = "";
                foreach (var currentGameParticipant in match.Participants.Where(x => x.TeamId == i * 100).ToList())
                {
                    names          += currentGameParticipant.SummonerName + "\n";
                    championsNames += champions.FirstOrDefault(x => x.ChampionId == currentGameParticipant.ChampionId)?.name + "\n";
                }
                builder.AddInlineField("Summoners", names);
                builder.AddInlineField("Champion", championsNames);
            }
            await ReplyAsync("", embed : builder.Build());
        }
Exemple #19
0
        public async Task Profile(string region, [Remainder] string summonerName)
        {
            var message = await ReplyAsync("Getting data...");

            var       riotClient = new RiotClient(OptionManager.RiotKey);
            Platforms platform   = RiotWrapper.Helpers.PlatformHelper.StringToPlatform(region);
            var       summoner   = riotClient.Summoner.GetSummonerByName(summonerName, platform);
            var       leagues    = riotClient.League.GetPositionDto(platform, summoner.SummonerId);
            var       masteries  = riotClient.Masteries.GetchampionMasteries(platform, summoner.SummonerId);
            var       matches    =
                masteries = masteries.OrderByDescending(x => x.Level).ThenByDescending(x => x.ChampionPoints).ToList();
            var builder = Builders.BaseBuilder("", "", Color.DarkBlue, new EmbedAuthorBuilder().WithName(summoner.Name),
                                               $"http://ddragon.leagueoflegends.com/cdn/6.24.1/img/profileicon/{summoner.ProfileIconId}.png");

            builder.AddInlineField($"Information", $"**Name: **{summoner.Name}\n**Region: **region\n**Level: **{summoner.SummonerLevel}");
            string rankings = "";

            leagues.Reverse();
            foreach (var leaguePositionDto in leagues)
            {
                rankings += $"**{RankedHelper.NormalizedQueue(leaguePositionDto.QueueType)}: **{leaguePositionDto.Tier.First().ToString().ToUpper() + leaguePositionDto.Tier.ToLower().Substring(1)} {leaguePositionDto.Rank}\n";
            }
            if (rankings == "")
            {
                rankings = "Unranked";
            }
            builder.AddInlineField($"Ranking", rankings);
            int champions = 4;

            if (champions > masteries.Count)
            {
                champions = masteries.Count;
            }
            builder.AddField("Top Mastery Champions", $"The top {champions} champions by mastery score");
            for (int i = 0; i < champions; i++)
            {
                int id       = Convert.ToInt32(masteries[i].ChampionId);
                var database = new RiotData();
                var champion = database.Champions.FirstOrDefault(x => x.ChampionId == id);
                builder.AddInlineField(champion.name, $"**Level: **{masteries[i].Level}\n**Points: **{masteries[i].ChampionPoints}");
            }
            await ReplyAsync("", embed : builder.Build());

            await message.DeleteAsync();
        }
Exemple #20
0
        public async Task GetGuide([Remainder] string name)
        {
            var client = new MeleeClient();
            var link   = client.ContentWrapper.MediaContent.Get2018GuideByCharacterName(name);

            if (link != null)
            {
                var builder = Builders.BaseBuilder("", "", Color.DarkRed,
                                                   new EmbedAuthorBuilder().WithName("2018 Melee Guides by Third Chair")
                                                   .WithUrl("https://www.youtube.com/playlist?list=PLQRQYzKDzrDrv0I9N68Y-9efH2Jo3Vt-r"), null);
                builder.AddField("Links",
                                 $"Link for {name}: {link}\n" +
                                 $"General playlist: https://www.youtube.com/playlist?list=PLQRQYzKDzrDrv0I9N68Y-9efH2Jo3Vt-r");
                builder.AddField("Information",
                                 "All of this content is owned and made by Third Chair. Atlas does not have any relationship with Third Chair.");
                await ReplyAsync("", embed : builder.Build());
            }
        }
Exemple #21
0
        public async Task matchup(string player1, string player2)
        {
            var message = await ReplyAsync("Getting data...");

            var dbContext     = new SmashggTracker.DAL.SmashggTrackerContext();
            var player1Object = dbContext.Players.FirstOrDefault(x => x.Name.ToLower() == player1.ToLower());
            var player2Object = dbContext.Players.FirstOrDefault(x => x.Name.ToLower() == player2.ToLower());

            if (player1Object != null && player2Object != null)
            {
                var matches = dbContext.Matches.Where(x =>
                                                      (x.Player1 == player1Object || x.Player2 == player1Object) &&
                                                      (x.Player1 == player2Object || x.Player2 == player2Object)).Include(x => x.Player1)
                              .Include(x => x.Player2).Include(x => x.Tournament);
                var    builder = Builders.BaseBuilder("Tournament results", "", Color.Blue, null, null);
                string info    = "";
                foreach (var match in matches)
                {
                    info +=
                        $"{match.Player1.Name} - {match.Player2.Name}: {match.Score1} - {match.Score2} at {match.Tournament.Name}\n";
                }
                builder.AddField("Info",
                                 $"All games played between {player1Object.Name} and {player2Object.Name} known to AtlasBot");
                builder.AddField("Matches", info);
                await ReplyAsync("", embed : builder.Build());
            }
            else
            {
                if (player1Object == null)
                {
                    var builder = Builders.BaseBuilder("Player not found", null, Color.Red, null, null);
                    builder.AddField("Error", $"No played named {player1} found.");
                    await ReplyAsync("", embed : builder.Build());
                }
                if (player2Object == null)
                {
                    var builder = Builders.BaseBuilder("Player not found", null, Color.Red, null, null);
                    builder.AddField("Error", $"No played named {player2} found.");
                    await ReplyAsync("", embed : builder.Build());
                }
            }
            await message.DeleteAsync();
        }
Exemple #22
0
        public async Task Skill([Summary("Champion name")] string champion, [Summary("Ability used")] string ability)
        {
            var database = new RiotData();
            List <DataLibrary.Champion> champions = database.Champions.Include(c => c.spells).ThenInclude(s => s.vars).ThenInclude(s => s.Coeff).ToList();

            DataLibrary.Champion champ = null;
            champ = champions.FirstOrDefault(x => x.name.ToLower().Equals(champion.ToLower()));
            if (champ == null)
            {
                champ = champions.FirstOrDefault(x => x.name.ToLower().Contains(champion.ToLower()));
            }
            var keys = new List <string>()
            {
                "Q", "W", "E", "R"
            };
            int index   = keys.IndexOf(ability.ToUpper());
            var spell   = champ.spells[index];
            var builder = Builders.BaseBuilder(spell.name, "", Color.DarkBlue,
                                               new EmbedAuthorBuilder().WithName(champ.name + " " + ability), $"http://ddragon.leagueoflegends.com/cdn/6.24.1/img/spell/{spell.key}.png ");

            builder.AddField("Description", spell.sanitizedDescription);
            string tooltip = spell.sanitizedTooltip;

            foreach (var spellVar in spell.vars)
            {
                tooltip = tooltip.Replace("{{ " + spellVar.key + " }}", spellVar.Coeff[0].value.ToString());
            }
            var spellburn = spell.EffectBurn.Split(',').ToList();

            for (int i = 1; i < spellburn.Count; i++)
            {
                tooltip = tooltip.Replace("{{ e" + i + " }}", spellburn[i]);
            }

            builder.AddField("Tooltip", tooltip);
            builder.AddField("Stats", $"**Resource: **{spell.costType}\n" +
                             $"**Costs: **{spell.resource.Replace("{{ cost }}", "40")}\n" +
                             $"**Cooldown: **{spell.cooldownBurn}");

            await ReplyAsync("", embed : builder.Build());
        }
Exemple #23
0
 public async Task GetHelp([Optional][Remainder] string command)
 {
     if (!string.IsNullOrEmpty(command))
     {
         await GetHelpCommand(command);
     }
     else
     {
         var builder = Builders.BaseBuilder("All commands known", "", Color.DarkerGrey, null, "");
         if (Context.User.Id == 105748849036922880 && new Random().Next(0, 6) > 3)
         {
             builder.AddField("RedNekra",
                              "Oh NedNekra called me, better behave now before we get kicked...\nHere is the list of commands hope you have a good day! 😀");
         }
         foreach (var module in DiscordManager.Commands.Modules)
         {
             string commandinfo = "";
             if (!module.Attributes.Contains(new HiddenModule()))
             {
                 foreach (var moduleCommand in module.Commands)
                 {
                     if (!moduleCommand.Attributes.Contains(new HiddenModule()))
                     {
                         string arguments = "";
                         foreach (var moduleCommandParameter in moduleCommand.Parameters)
                         {
                             arguments += $"<{moduleCommandParameter.Name}> ";
                         }
                         commandinfo += $"**-s {module.Name} {moduleCommand.Name} {arguments}: **{moduleCommand.Summary}\n";
                     }
                 }
             }
             if (!string.IsNullOrEmpty(commandinfo) && !string.IsNullOrEmpty(module.Name))
             {
                 builder.AddInlineField(module.Name, commandinfo);
             }
         }
         await ReplyAsync("", embed : builder.Build());
     }
 }
        public async Task GetLeaderboard(string game, string category)
        {
            var leaderboard = new RequestHandler().GetLeaderboard(game, category.Replace("%", "")).data;

            if (leaderboard != null)
            {
                var builder = Builders.BaseBuilder(leaderboard.game.data.names["international"],
                                                   "Leaderboard of " + leaderboard.category.data.name, Color.Blue, null, null);
                string runs = "";
                for (int i = 0; i < leaderboard.runs.Count; i++)
                {
                    runs +=
                        $"**{i+1}**: {leaderboard.players.data.FirstOrDefault(x => x.id == leaderboard.runs[i].run.players[0].id).names["international"]}, {leaderboard.runs[i].run.times.primary.Replace("PT", "").Replace("H", ":").Replace("M", ":").Replace("S", "")}\n";
                }
                builder.AddInlineField("Leaderboard", runs);
                if (leaderboard.category.data.rules.Length < 1024)
                {
                    builder.AddInlineField("Rules", leaderboard.category.data.rules);
                }
                builder.WithThumbnailUrl(leaderboard.game.data.assets["icon"].uri);
                builder.WithUrl(leaderboard.weblink);
                await ReplyAsync("", embed : builder.Build());
            }
        }
        public async Task GetRunsUser(string game, string username)
        {
            var requester = new RequestHandler();
            var message   = await ReplyAsync("Gathering Data...");

            try
            {
                var user    = requester.GetUser(username).data;
                var runs    = requester.GetRunsPerUserPerGame(user.id, game);
                var builder = Builders.BaseBuilder(user.names["international"],
                                                   "Runs done in game " + runs[0].game.data.names["international"], Color.Blue, null,
                                                   runs[0].game.data.assets["icon"].uri);
                string runText = "";
                foreach (var run in runs)
                {
                    if (run.level?.data == null)
                    {
                        runText +=
                            $"**{run.category.data.name} {PlaceConverter.Ordinal(run.place)} place:** {ConvertToTime(run.run.times.primary)}\n";
                    }
                    else
                    {
                        runText +=
                            $"**(IL) {run.level.data.name} {PlaceConverter.Ordinal(run.place)} place:** {ConvertToTime(run.run.times.primary)}\n";
                    }
                }
                builder.AddInlineField("Runs", runText);
                await message.DeleteAsync();
                await ReplyAsync("", embed : builder.Build());
            }
            catch
            {
                await message.DeleteAsync();
                await ReplyAsync("User or Game not found");
            }
        }
        public async Task GetCharacter([Remainder] string name)
        {
            var character = new _64Context().Characters.FirstOrDefault(x => x.Name.ToLower().Equals(name.ToLower()));

            if (character != null)
            {
                var builder = Builders.BaseBuilder("", "", Color.DarkerGrey,
                                                   new EmbedAuthorBuilder().WithName(character.Name), "");
                builder.AddInlineField("General",
                                       $"**Name: **{character.Name}\n" +
                                       $"**Max Jumps:** {character.MaxNumberOfJumps}\n" +
                                       $"**Weight:** {character.Weight}\n" +
                                       $"**Jump Animation: **{character.JumpAnimationFrames} Frames");
                builder.AddInlineField("Grounded",
                                       $"**Walking Speed:** {character.WalkingSpeed}\n" +
                                       $"**Running Speed:** {character.RunningSpeed}\n" +
                                       $"**Initial Dash Speed:** {character.InitialDashSpeed}\n" +
                                       $"**Initial Dash Duration:** {character.InitialDashFrames} frames\n" +
                                       $"**Dashing Deceleration: **{character.DashDeceleration}");
                builder.AddInlineField("Air",
                                       $"**X-Air Acceleration: **{character.XAirAcceleration}\n" +
                                       $"**X-Air Maximum Speed: **{character.XAirMaxSpeed}\n" +
                                       $"**X-Air Resistance: **{character.XAirResistance}\n" +
                                       $"**Y-Fall Acceleration: **{character.YFallAcceleration}\n" +
                                       $"**Y-Fall Maximum Speed: **{character.YMaxSpeedFall}\n" +
                                       $"**Y-FastFall Maximum Speed: **{character.YMaxFastFallSpeed}\n");
                await ReplyAsync("", embed : builder.Build());
            }
            else
            {
                var builder = Builders.BaseBuilder("Error", "Ahh shoot not again", Color.Red, null, "");
                builder.AddField("Not found!",
                                 "The character you were looking for was not found, please check your spelling!");
                await ReplyAsync("", embed : builder.Build());
            }
        }
        public async Task GetUserData([Remainder] string name)
        {
            var message = await ReplyAsync("Gathering data...");

            try
            {
                var user    = new RequestHandler().GetUser(name).data;
                var builder = Builders.BaseBuilder(user.names["international"], "", Color.Blue, null, null);
                builder.AddInlineField("Information",
                                       $"**Name:** {user.names["international"]}\n" +
                                       $"**Country:** {user.location.country.names["international"]}");
                string links = "";
                if (user.twitch != null)
                {
                    links += user.twitch.uri + "\n";
                }
                if (user.twitter != null)
                {
                    links += user.twitter.uri + "\n";
                }
                if (user.hitbox != null)
                {
                    links += user.hitbox + "\n";
                }
                if (user.speedrunslive != null)
                {
                    links += user.speedrunslive.uri + "\n";
                }
                if (user.youtube != null)
                {
                    links += user.youtube.uri + "\n";
                }
                if (!string.IsNullOrEmpty(links))
                {
                    builder.AddInlineField("Links", links);
                }
                builder.WithUrl(user.weblink);
                var    wrRuns       = new RequestHandler().GetWorldRecordsPerUser(user.id).OrderBy(x => x.game.data.names["international"]).ToList();
                string worldrecords = "";
                for (int i = 0; i < wrRuns.Count; i++)
                {
                    if (wrRuns[i].level?.data == null)
                    {
                        worldrecords +=
                            $"**{wrRuns[i].game.data.names["international"]} {wrRuns[i].category.data.name}: **{ConvertToTime(wrRuns[i].run.times.primary)}\n";
                    }
                    else
                    {
                        worldrecords +=
                            $"**{wrRuns[i].game.data.names["international"]} (IL) {wrRuns[i].level.data.name}: **{ConvertToTime(wrRuns[i].run.times.primary)}\n";
                    }
                }
                if (!string.IsNullOrEmpty(worldrecords))
                {
                    builder.AddInlineField("World Records", worldrecords);
                }
                var    recentRuns = new RequestHandler().GetLatestRunsPerUser(user.id);
                string runs       = "";
                for (int i = 0; i < 10; i++)
                {
                    if (recentRuns[i].level?.data == null)
                    {
                        runs +=
                            $"**{recentRuns[i].game.data.names["international"]} {recentRuns[i].category.data.name} {PlaceConverter.Ordinal(recentRuns[i].place)} place:** " +
                            $"{/*recentRuns[i].run.times.primary.Replace("PT", "").Replace("H", ":").Replace("M", ":").Replace("S", "")*/ ConvertToTime(recentRuns[i].run.times.primary)}\n";
                    }
                    else
                    {
                        runs +=
                            $"**{recentRuns[i].game.data.names["international"]} (IL) {recentRuns[i].level.data.name} {PlaceConverter.Ordinal(recentRuns[i].place)} place:** {ConvertToTime(recentRuns[i].run.times.primary)}\n";
                    }
                }
                if (!string.IsNullOrEmpty(runs))
                {
                    builder.AddInlineField("Recent PBs", runs);
                }
                await message.DeleteAsync();
                await ReplyAsync("", embed : builder.Build());
            }
            catch
            {
                await message.DeleteAsync();
                await ReplyAsync("User not found");
            }
        }
Exemple #28
0
        public async Task GetResult([Remainder] string name)
        {
            var message = await ReplyAsync("Gathering Data... This may take a while for bigger tournaments");

            var embed = CachedEmbedContainer.GetEmbedByArgs("smashgg result " + name.ToLower());

            if (embed != null)
            {
                await message.DeleteAsync();
                await ReplyAsync("", embed : embed);

                return;
            }
            Discord.EmbedBuilder builder = null;
            var tournament = RequestHandler.GetTournamentRoot(name);

            if (tournament.entities == null)
            {
                builder = Builders.BaseBuilder("Tournament not found", "", Color.Red, null, "");
                await ReplyAsync("", embed : builder.Build());

                await message.DeleteAsync();

                return;
            }
            var    bracketPhases = tournament.entities.phase.Where(x => x.groupCount == 1).ToList();
            var    icon          = tournament.entities.tournament.images.FirstOrDefault(x => x.type == "profile");
            string url           = "";

            if (icon != null)
            {
                url = icon.url;
            }
            builder = Builders.BaseBuilder(tournament.entities.tournament.name, "", Color.DarkOrange, null, url);
            foreach (var bracketPhase in bracketPhases)
            {
                var phaseId       = bracketPhase.id;
                var selectedEvent = tournament.entities.Event.FirstOrDefault(x => x.id == bracketPhase.eventId);
                var group         = tournament.entities.groups.FirstOrDefault(x => x.phaseId == phaseId);
                var result        = RequestHandler.GetResult(group.id);
                var players       = result.Entities.Player;
                if (players != null && result.Entities.Seeds != null)
                {
                    var seedlist    = result.Entities.Seeds.Where(x => x.Placement != null).ToList();
                    var seeds       = seedlist.OrderBy(x => x.Placement).ToList(); //Results sorted by ranking
                    int playerCount = 10;
                    if (seeds.Count < playerCount)
                    {
                        playerCount = seeds.Count;
                    }
                    string placementInfo = "";
                    for (int i = 0; i < playerCount; i++)
                    {
                        var player = players.Where(x => Convert.ToInt64(x.EntrantId) == seeds[i].EntrantId).ToList();
                        if (player.Count == 2)
                        {
                            var player1 = "";
                            var player2 = "";
                            if (!string.IsNullOrEmpty(player[0].Prefix))
                            {
                                player1 = $"**{player[0].Prefix}** {player[0].GamerTag}";
                            }
                            else
                            {
                                player1 = $"{player[0].GamerTag}";
                            }
                            if (!string.IsNullOrEmpty(player[1].Prefix))
                            {
                                player2 = $"**{player[1].Prefix}** {player[1].GamerTag}";
                            }
                            else
                            {
                                player2 = $"{player[1].GamerTag}";
                            }

                            placementInfo +=
                                $"{seeds[0].Placement}: {player1} | {player2}\n";
                        }
                        else
                        {
                            var player1 = "";
                            if (!string.IsNullOrEmpty(player[0].Prefix))
                            {
                                player1 = $"**{player[0].Prefix}** {player[0].GamerTag}";
                            }
                            else
                            {
                                player1 = $"{player[0].GamerTag}";
                            }
                            if (player[0] != null)
                            {
                                placementInfo += $"{seeds[i].Placement}: {player1}\n";
                            }
                        }
                    }
                    if (!string.IsNullOrEmpty(placementInfo))
                    {
                        builder.AddInlineField($"{selectedEvent.name} Results", placementInfo);
                    }
                }
            }
            var tournamentDate = new DateTime(1970, 1, 1, 0, 0, 0);

            tournamentDate = tournamentDate.AddSeconds(tournament.entities.tournament.endAt);
            TimeSpan duration = DateTime.Now - tournamentDate;

            if ((duration.Days < 7 || duration.Days < 0) && Context.Guild != null)
            {
                var spoiled = Builders.BaseBuilder("Spoiler preventer!", "", Color.Red, null, "");
                spoiled.AddField("Spoiler prevented!",
                                 "To prevent spoiling tournament results for people, we only allow tournaments older than a week to be shown in servers.\nThe embed has been DMed to you ;)");
                await ReplyAsync("", embed : spoiled.Build());

                await Context.Message.Author.GetOrCreateDMChannelAsync().Result
                .SendMessageAsync("", embed: builder.Build());
            }
            else
            {
                var embedBuild = builder.Build();
                await ReplyAsync("", embed : embedBuild);

                CachedEmbedContainer.AddEmbed(embedBuild, "smashgg result " + name.ToLower(), TimeSpan.FromDays(1));
            }
            await message.DeleteAsync();
        }
Exemple #29
0
        public async Task GetMove(string charactername, [Remainder] string moveName)
        {
            Discord.EmbedBuilder builder = null;
            var character = RequestHandler.GetCharacterName(charactername);

            if (character == null)
            {
                await ReplyAsync("", embed : Builders.ErrorBuilder("Character not found"));
            }
            var  moves = RequestHandler.GetMoves(charactername);
            Move move  = null;

            move = moves.FirstOrDefault(x => x.Name.ToLower().Equals(moveName.ToLower()));
            if (move == null)
            {
                move = moves.FirstOrDefault(x => x.Name.ToLower().Contains(moveName.ToLower()));
            }
            if (move != null)
            {
                builder = Builders.BaseBuilder("", "", Color.DarkBlue,
                                               new EmbedAuthorBuilder().WithName(character.Name + " | " + move.Name)
                                               .WithUrl("http://kuroganehammer.com/smash4/" + move.Owner), character.ThumbnailURL);
                string statistics = "";
                //builder.WithImageUrl("https://zippy.gfycat.com/EuphoricCookedHornshark.webm"); //TODO Add later when gifs are supported but holy shit it works.
                if (!string.IsNullOrEmpty(move.MoveType))
                {
                    statistics += "**Move Type:** " + move.MoveType + "\n";
                }
                if (!string.IsNullOrEmpty(move.BaseDamage))
                {
                    statistics += "**Base Damage:** " + move.BaseDamage + "%\n";
                }
                if (!string.IsNullOrEmpty(move.BaseKockbackSetKnockback))
                {
                    statistics += "**Base/Set Knockback: **" + move.BaseKockbackSetKnockback + "\n";
                }
                if (!string.IsNullOrEmpty(move.LandingLag))
                {
                    statistics += "**Landinglag: **" + move.LandingLag + " frames\n";
                }
                if (!string.IsNullOrEmpty(move.HitboxActive))
                {
                    statistics += "**Hitbox Active: **Frames " + move.HitboxActive + "\n";
                }
                if (!string.IsNullOrEmpty(move.KnockbackGrowth))
                {
                    statistics += "**Knockback Growth: **" + move.HitboxActive + "\n";
                }
                if (!string.IsNullOrEmpty(move.Angle))
                {
                    statistics += "**Angle: **" + move.Angle.Replace("361", "Sakuari Angle/361") + "\n";
                }
                if (!string.IsNullOrEmpty(move.AutoCancel))
                {
                    statistics += "**Auto-Cancel: **Frame " + move.AutoCancel.Replace("&gt;", ">") + "\n";
                }
                if (!string.IsNullOrEmpty(move.FirstActionableFrame))
                {
                    statistics += "**First Actionable Frame: **" + move.FirstActionableFrame + "\n";
                }
                builder.AddInlineField("Statistics",
                                       statistics);
                if (move.Angle.Equals("361"))
                {
                    builder.AddInlineField("Sakurai Angle",
                                           "\"The Sakurai angle (sometimes displayed as * in moveset lists) is a special knockback behavior that many attacks use. While it reads in the game data as an angle of 361 degrees, the actual resulting angle is dependent on whether the victim is on the ground or in the air, as well as the strength of the knockback.\"\nSource: https://www.ssbwiki.com/Sakurai_angle");
                }

                builder.AddField("Info",
                                 "If you don't understand the values please visit http://kuroganehammer.com/Glossary");
                await ReplyAsync("", embed : builder.Build());
            }
            else
            {
                await ReplyAsync("", embed : Builders.ErrorBuilder("Move was not found"));
            }
        }
Exemple #30
0
        public async Task GetCharacter([Remainder][Summary("The name of the chracter")] string name)
        {
            var character = RequestHandler.GetCharacterName(name);

            if (character == null)
            {
                await ReplyAsync("", embed : Builders.ErrorBuilder("Character not found"));
            }
            var moves = RequestHandler.GetMoves(name);

            Discord.EmbedBuilder builder = Builders.BaseBuilder("", "", Color.DarkTeal,
                                                                new EmbedAuthorBuilder().WithName("KuroganeHammer Result:").WithUrl("http://kuroganehammer.com"),
                                                                character.ThumbnailURL);
            //builder.WithImageUrl(character.MainImageURL);
            builder.WithUrl(character.FullURL);
            string info = "";

            info += "**Name: **" + character.Name;
            if (!string.IsNullOrEmpty(character.Description))
            {
                info += "**Description: **" + character.Description;
            }
            if (!string.IsNullOrEmpty(character.Style))
            {
                info += "**Style: **" + character.Style;
            }
            builder.AddField(new EmbedFieldBuilder().WithName("Information").WithValue(info));
            var movement = RequestHandler.GetMovement(name);
            var half     = movement.Attributes.Count / 2;
            var info1    = "";
            var info2    = "";

            for (int i = 0; i < movement.Attributes.Count / 2; i++)
            {
                info1 += $"**{movement.Attributes[i].Name}**: {movement.Attributes[i].Value}\n";
                info2 += $"**{movement.Attributes[i + half].Name}**: {movement.Attributes[i + half].Value}\n";
            }
            builder.AddInlineField("Movement", info1);
            builder.AddInlineField("Movement", info2);
            string movesinfo    = "";
            string specials     = "";
            int    specialcount = 0;
            string aerials      = "";
            string smashes      = "";
            string grabs        = "";
            string tilts        = "";

            moves.ForEach(x =>
            {
                if (x.MoveType == "ground")
                {
                    if (x.Name.Contains("smash"))
                    {
                        smashes += x.Name + "\n";
                    }
                    else if (x.Name.Contains("tilt"))
                    {
                        tilts += x.Name + "\n";
                    }
                    else if (x.Name.ToLower().Contains("grab"))
                    {
                        grabs += x.Name + "\n";
                    }
                    else
                    {
                        movesinfo += x.Name + "\n";
                    }
                }

                if (x.MoveType == "special")
                {
                    specials += x.Name + "\n";
                    specialcount++;
                }
                if (x.MoveType == "aerial")
                {
                    aerials += x.Name + "\n";
                }
            });
            builder.AddInlineField("Ground Moves", movesinfo);
            builder.AddInlineField("Smashes", smashes);
            builder.AddInlineField("Specials", specials);
            builder.AddInlineField("Aerials", aerials);
            builder.AddInlineField("Tilts", tilts);
            builder.AddInlineField("Grabs", tilts);
            await ReplyAsync("", embed : builder.Build());
        }