コード例 #1
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());
        }
コード例 #2
0
        public async Task Github(string branch = "")
        {
            var    embed  = new Discord.EmbedBuilder();
            string Branch = branch.ToLower();

            //embed.WithTitle("Github");

            if (Branch == "master")
            {
                embed.AddInlineField("Master", "https://github.com/Gagong/Toshinou-Revamped/tree/master");
            }
            else if (Branch == "beta")
            {
                embed.AddInlineField("Beta", "https://github.com/Gagong/Toshinou-Revamped/tree/beta").WithFooter("WARNING: This is not a stable build, recommended to use Master");
            }
            else
            {
                embed.AddInlineField("Master (Recommended)", "https://github.com/Gagong/Toshinou-Revamped/tree/master");
                embed.AddInlineField("Beta", "https://github.com/Gagong/Toshinou-Revamped/tree/beta");
            }

            embed.Color = Color.Green;
            embed.WithAuthor("Smart Toshinou | Github", "", ""); // Name, IconURL, URL(???)
            await ReplyAsync("", false, embed);
        }
コード例 #3
0
        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());
            }
        }
コード例 #4
0
ファイル: Test.cs プロジェクト: Fasuh/bot
        public async Task info(SocketUser user = null)
        {
            if (user == null)
            {
                user = Context.Message.Author;
            }
            dbase.chkserver(Context.Guild);
            string       query = "SELECT * FROM uzytkownicy as u INNER JOIN `servery` as s ON u.Server = s.id WHERE u.user='******' AND s.nid='" + Context.Guild.Id.ToString() + "'";
            MySqlCommand cmd   = new MySqlCommand(query, dbase.connect);

            if (!dbase.HasRows(cmd))
            {
                query = "INSERT INTO `uzytkownicy`(`id`, `user`, `score`, `ranks`, `level`, `link`, `server`) VALUES (null,'" + user.Id.ToString() + "',0 ,null ,1 ,null,  '" + dbase.Chkserver(Context.Guild.Id.ToString()) + "')";
                cmd   = new MySqlCommand(query, dbase.connect);
                dbase.make(cmd);
                query = "SELECT * FROM `uzytkownicy` as u INNER JOIN `servery` as s ON u.Server = s.id WHERE u.user='******' AND s.nid='" + Context.Guild.Id.ToString() + "'";
                cmd   = new MySqlCommand(query, dbase.connect);
            }
            DataTable info    = dbase.Read(cmd);
            var       builder = new Discord.EmbedBuilder();

            builder.WithTitle("Informacje o uzytkowniku " + user.Username);
            builder.WithThumbnailUrl(user.GetAvatarUrl());
            builder.AddField("Ilość punktów:", info.Rows[0][2]);
            builder.AddInlineField("Poziom:", info.Rows[0][4]);
            if (info.Rows[0][5] != null && info.Rows[0][5].ToString() != "")
            {
                builder.AddInlineField("Deviantart:", info.Rows[0][5].ToString());
            }
            builder.WithColor(Color.DarkGreen);
            await Context.Channel.SendMessageAsync("", false, builder);
        }
コード例 #5
0
ファイル: Test.cs プロジェクト: Fasuh/bot
        public async Task help()
        {
            var builder = new Discord.EmbedBuilder();

            builder.WithTitle("Komendy");
            builder.AddInlineField("Memy", "`.dmem <nazwa> <link>` - Dodaje mema na serwer,\n\u200b`.dmemnsfw <nazwa> <link>` - Dodaje mema na serwer **tylko nsfw**,\n\u200b`.umem <nazwa>` - Usuwa mem z serwera,\n\u200b`.memelist` - Pokazuje listę memów");
            builder.AddInlineField("Warny", "`.warn <osoba> <powód>` - Daje warna osobie,\n\u200b`.delwarn <osoba> <numer warna>` - Usuwa wybrany warn,\n\u200b`.clearwarns <osoba>` - Czysci wszystkie warny osoby,\n\u200b`.listwarns <[opcjonalnie]osoba>` - pokazuje twoje/czyjes warny.");
            builder.AddInlineField("Rangi", "`.drank <nazwa>` - range o podanej nazwie.,\n\u200b`.urank <nazwa>` - usuwa range podanej nazwie,\n\u200b`.ranga <nazwa>` - nadaje range o podanej nazwie,\n\u200b`.rangi` - pokazuje spis rang dostępnych na serwerze");
            builder.AddInlineField("Fun", "`.patyk <osoba>` - narzędzie wzajemnej motywacji,\n\u200b`.rate <link/zlacznik>` - postuje obrazek na wyznaczonym kanale do oceny przez innych uzytkownikow,\n\u200b`.info <[opcjonalnie]osoba>` - podaje informacje z twojego profilu\n\u200b`.da <link>` - zapisuje link do twojego Deviantartu\n\u200b`.pokazda <[opcjonalnie]osoba>` - podaje link do twojego lub czyjegoś Deviantartu.");
            builder.AddInlineField("Powitania", "`.welmsg <wiadomosc>` - wiadomosc powitalna,\n\u200b`.welchan <kanal>` - kanal na którym wysyłana będzie wiadomość.");
            builder.WithColor(Color.DarkGreen);
            await Context.Channel.SendMessageAsync("", false, builder);
        }
コード例 #6
0
ファイル: Test.cs プロジェクト: Fasuh/bot
        public async Task rate(string link = null)
        {
            DateTime czas = time.AddSeconds(10);

            if (link == null)
            {
                link = Context.Message.Attachments.FirstOrDefault().Url;
            }
            var builder = new Discord.EmbedBuilder();

            builder.WithTitle("Ocena");
            builder.AddInlineField("Autor: " + Context.Message.Author.Username, "Obrazek:");
            builder.WithImageUrl(link);
            builder.WithColor(Color.DarkGreen);
            dbase.chkserver(Context.Guild);
            string       query = "SELECT * FROM `servery` WHERE `nid`='" + Context.Guild.Id.ToString() + "'";
            MySqlCommand cmd   = new MySqlCommand(query, dbase.connect);
            var          msg   = await((ISocketMessageChannel)Context.Guild.GetChannel(ulong.Parse(dbase.Read(cmd).Rows[0][3].ToString()))).SendMessageAsync("", false, builder);
            await msg.AddReactionAsync(Context.Guild.Emotes.First(e => e.Name == "redbean"));

            string format = "yyyy-MM-dd HH:mm:ss";

            query = "INSERT INTO `timery` (`id`, `user`, `type`, `time`, `text`, `Server`) VALUES (NULL, '" + Context.Message.Author.Id + "', 'rate', '" + czas.ToString(format) + "', '" + msg.Id + "', '" + dbase.Chkserver(Context.Guild.Id.ToString()) + "')";
            cmd   = new MySqlCommand(query, dbase.connect);
            dbase.timer(cmd, "rate", czas, (IGuildUser)Context.Message.Author, Context.Guild.Id.ToString(), msg.Id.ToString());
            Console.WriteLine(time + "\tRozpoczeto glosowanie obrazka uzytkownika " + Context.Message.Author.Username + ".");
        }
コード例 #7
0
ファイル: Experiments.cs プロジェクト: Virgoloid/MidnightBot
            public async Task Encode([Remainder] string data)
            {
                StringBuilder sb = new StringBuilder();

                foreach (char c in data.ToCharArray())
                {
                    sb.Append(Convert.ToString(c, 2).PadLeft(8, '0'));
                }

                string endres = sb.ToString();

                var b = new Discord.EmbedBuilder();

                b.AddInlineField("The Text Given To Me", data);
                b.AddInlineField("The Binary Code", endres);

                await ReplyAsync("", false, b);
            }
コード例 #8
0
ファイル: Experiments.cs プロジェクト: Virgoloid/MidnightBot
            public async Task Decode(string data)
            {
                List <Byte> byteList = new List <Byte>();

                for (int i = 0; i < data.Length; i += 8)
                {
                    byteList.Add(Convert.ToByte(data.Substring(i, 8), 2));
                }

                string endres = Encoding.ASCII.GetString(byteList.ToArray());

                var b = new Discord.EmbedBuilder();

                b.AddInlineField("The Binary Code Given To Me", data);
                b.AddInlineField("The Text", endres);

                await ReplyAsync("", false, b);
            }
コード例 #9
0
        public async Task UserInfo(SocketGuildUser user)
        {
            var perms    = user.GuildPermissions.ToList();
            var allPerms = string.Join(", ", perms);

            if (user != null)
            {
                var answer = new Discord.EmbedBuilder();
                answer.WithColor(40, 200, 150);
                answer.ThumbnailUrl = user.GetAvatarUrl(ImageFormat.Auto);
                answer.AddField("User Info for " + user, "UserID | " + user.Id);
                //answer.AddInlineField("User Nickname" + "", user.Nickname);
                answer.AddInlineField("Server Permissions ", allPerms);
                answer.AddInlineField("Joined Server at", user.JoinedAt);
                answer.AddInlineField("Joined Discord at ", user.CreatedAt.DateTime.ToLongDateString());
                answer.AddInlineField("User Status ", user.Status);
                await Context.Channel.SendMessageAsync("", false, answer.Build());
            }
        }
コード例 #10
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());
        }
コード例 #11
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"));
            }
        }
コード例 #12
0
        public async Task Help()
        {
            var a = new Discord.EmbedBuilder();

            a.AddInlineField("/mchelp", "Gets the list of GameOut Minecraft Server commands.").WithColor(25, 25, 112);

            a.AddInlineField("/adhelp", "Gets the list of bot owner commands.");

            a.AddInlineField("/reee", "For when autism strikes.");

            a.AddInlineField("/insult", "For when you wanna insult someone.");

            a.AddInlineField("/killme", "For when you wanna die.");

            a.AddInlineField("/8ball", "For when autism strikes.");

            a.AddInlineField("/tellajoke", "Tells a joke.");

            a.AddInlineField("/rate + WhatYouWantRatedHere", "Rates the input.");

            a.AddInlineField("/stats", "Receives bot stats.");

            a.AddInlineField("/get time", "Gets the current time.");

            a.AddInlineField("/get date", "Gets the current date.");

            IDMChannel gencom = await Context.Message.Author.GetOrCreateDMChannelAsync();

            await gencom.SendMessageAsync("", false, a);

            await gencom.CloseAsync();
        }
コード例 #13
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();
        }
コード例 #14
0
        public async Task PlayerPerformance(string playerName, [Remainder] string tournamentName)
        {
            var message = await ReplyAsync("Getting data...");

            var tournament = RequestHandler.GetTournamentRoot(tournamentName);

            if (tournament.entities == null)
            {
                var embed = Builders.BaseBuilder("Tournament not found", "", Color.Red, null, "");
                await ReplyAsync("", embed : embed.Build());
            }
            var bracketPhases = tournament.entities.phase.Where(x => x.groupCount == 1).ToList();

            Discord.EmbedBuilder builder = Builders.BaseBuilder(playerName + " Results For " + tournament.entities.tournament.name, "", Color.Red, null, "");
            bool   playerFound           = false;
            double wins   = 0;
            double losses = 0;

            foreach (var bracketPhase in bracketPhases)
            {
                var phaseId = bracketPhase.id;
                var group   = tournament.entities.groups.FirstOrDefault(x => x.phaseId == phaseId);
                var result  = RequestHandler.GetResultSets(group.id);
                var players = result.Entities.Player;
                var player  = players.Where(x => x.GamerTag.ToLower().Trim().Contains(playerName.ToLower().Trim()))
                              .ToList();
                if (player.Count == 1) //player is found, lets go
                {
                    playerFound = true;
                    builder.WithTitle($"{player[0].GamerTag} Results at {tournament.entities.tournament.name}");
                    var sets = result.Entities.Sets.Where(x =>
                                                          x.Entrant1Id == Convert.ToInt64(player[0].EntrantId) ||
                                                          x.Entrant2Id == Convert.ToInt64(player[0].EntrantId)).ToList();
                    string setinfo = "";
                    sets = sets.OrderBy(x => x.CompletedAt).ToList();
                    var characters = new List <string>()
                    {
                        "Bowser",
                        "Captain Falcon",
                        "Donkey Kong",
                        "Dr. Mario",
                        "Falco",
                        "Fox",
                        "Ganondorf",
                        "Ice Climbers",
                        "Jigglypuff",
                        "Kirby",
                        "Link",
                        "Luigi",
                        "Mario",
                        "Marth",
                        "Mewtwo",
                        "Mr. Game And Watch",
                        "Ness",
                        "Peach",
                        "Pichu",
                        "Pikachu",
                        "Roy",
                        "Samus",
                        "Sheik",
                        "Yoshi",
                        "Young Link",
                        "Zelda"
                    };
                    Event  prevEvent = null;
                    string eventInfo = "";
                    foreach (var set in sets)
                    {
                        var setEvent = tournament.entities.Event.FirstOrDefault(x => x.id == set.EventId);
                        if (prevEvent == null)
                        {
                            prevEvent = setEvent;
                        }
                        if (prevEvent.id != setEvent.id)
                        {
                            builder.AddInlineField(prevEvent.name, eventInfo);
                            prevEvent = setEvent;
                            eventInfo = "";
                        }
                        int    playerPlace = 1;
                        Player player2     = null;
                        if (Convert.ToInt64(player[0].EntrantId) == set.Entrant1Id)
                        {
                            player2 = players.FirstOrDefault(x => set.Entrant2Id == Convert.ToInt64(x.EntrantId));
                        }
                        else
                        {
                            player2     = players.FirstOrDefault(x => set.Entrant1Id == Convert.ToInt64(x.EntrantId));
                            playerPlace = 2;
                        }
                        if (player2 != null)
                        {
                            string gameinfo = "";
                            foreach (var game in set.Games)
                            {
                                gameinfo +=
                                    $"{characters[(int) game.Entrant1P1CharacterId - 1]} {game.Entrant1P1Stocks} - {game.Entrant2P1Stocks} {characters[(int) game.Entrant2P1CharacterId - 1]}\n";
                            }
                            if (gameinfo == "")
                            {
                                gameinfo = "Nothing available\n";
                            }
                            if (playerPlace == 1 && set.Entrant1Score != null && set.Entrant2Score != null)
                            {
                                eventInfo +=
                                    $"**{set.FullRoundText}:**\n{player[0].GamerTag} - {player2.GamerTag}: {set.Entrant1Score} - {set.Entrant2Score}\n" +
                                    gameinfo + "\n";
                                if (set.Entrant1Score != null)
                                {
                                    wins += (double)set.Entrant1Score;
                                }
                                if (set.Entrant2Score != null)
                                {
                                    losses += (double)set.Entrant2Score;
                                }
                            }
                            else if (set.Entrant1Score != null && set.Entrant2Score != null)
                            {
                                eventInfo +=
                                    $"**{set.FullRoundText}:**\n{player2.GamerTag} - {player[0].GamerTag}: {set.Entrant1Score} - {set.Entrant2Score}\n" +
                                    $"{gameinfo}\n";
                                if (set.Entrant2Score != null)
                                {
                                    wins += (double)set.Entrant1Score;
                                }
                                if (set.Entrant1Score != null)
                                {
                                    losses += (double)set.Entrant2Score;
                                }
                            }
                        }
                    }
                    //builder.AddField("Results", ssetinfo);
                    var imageurl = player[0].Images.FirstOrDefault(x => x.Type == "profile");
                    if (imageurl != null)
                    {
                        builder.WithThumbnailUrl(imageurl.Url);
                    }
                    if (wins != 0 && losses != 0)
                    {
                        eventInfo += $"\n" +
                                     $"***Overall performance***\n" +
                                     $"**Games Won: **{wins}\n" +
                                     $"**Games Lost: **{losses}\n" +
                                     $"**Winrate: **{Math.Round((wins / (wins + losses) * 100), 2)}%";
                    }

                    builder.AddInlineField(prevEvent.name, eventInfo);
                }
            }
            if (!playerFound)
            {
                builder = Builders.BaseBuilder("Player not found", "", Color.Red, null, "");
            }
            await ReplyAsync("", embed : builder.Build());

            await message.DeleteAsync();
        }
コード例 #15
0
        public async Task GetInfo([Remainder] string name)
        {
            Discord.EmbedBuilder builder = null;
            var root = RequestHandler.GetTournamentRoot(name);

            if (root.entities != null)
            {
                if (!root.entities.tournament.Private)
                {
                    var tournament = root.entities.tournament;
                    builder = Builders.BaseBuilder(tournament.name, "", Color.DarkGreen, null,
                                                   null);
                    var baseDate  = new DateTime(1970, 1, 1, 0, 0, 0);
                    var startDate = baseDate.AddSeconds(tournament.startAt);
                    var endDate   = baseDate.AddSeconds(tournament.endAt);
                    builder.AddField("Information",
                                     $"**Name: **{tournament.name}\n" +
                                     $"**Venue: **{tournament.venueName}\n" +
                                     $"**Venue Adress: **{tournament.venueAddress}\n" +
                                     $"**Timezone: **{tournament.timezone.Replace("/", " ").Replace("_", "")}\n" +
                                     $"**From **{startDate.ToLongDateString()} \n" +
                                     $"**To:** {endDate.ToLongDateString()}");
                    if (root.entities.videogame != null && root.entities.videogame.Count < 20)
                    {
                        foreach (var game in root.entities.videogame)
                        {
                            var    events = root.entities.Event.Where(x => x.videogameId == game.id).ToList();
                            string info   = "";
                            events.ForEach(x => info += "- " + x.name + "\n");
                            builder.AddInlineField(game.name, info);
                        }
                    }
                    else if (root.entities.videogame != null)
                    {
                        string info = "**Games Available:**\n";

                        foreach (var videoGame in root.entities.videogame)
                        {
                            if (info.Length > 900)
                            {
                                info += "For more info check Smash.gg";
                                break;
                            }
                            info += videoGame.name + "\n";
                        }
                        builder.AddField("Games", info);
                    }

                    var image = tournament.images.FirstOrDefault(x => x.type == "profile");
                    if (image != null)
                    {
                        builder.WithThumbnailUrl(image.url);
                    }
                    var banner = tournament.images.FirstOrDefault(x => x.type == "banner");
                    if (banner != null)
                    {
                        builder.ImageUrl = banner.url;
                    }
                }
                else
                {
                    builder = Builders.BaseBuilder("Tournament is private.", "", Color.Red, null, "");
                    builder.AddField("No access", "The tournament you are trying to access is labeled as private in Smash.gg\nWhile we could technically show you the data, we decided not to be unethical and protect the user.");
                }
            }
            else
            {
                builder = Builders.BaseBuilder("Tournament was not found.", "", Color.Red, null, "");
            }
            await ReplyAsync("", embed : builder.Build());
        }