Ejemplo n.º 1
0
        public void GetClan(ClanWoT currentClan)
        {
            urlRequest = resourceMan.GetString("uri_get_clan_by_name") + appID + "&search=" + currentClan.ClanName;
            string  resultResponse = GetResponse(urlRequest);
            JObject parsed         = JObject.Parse(resultResponse);

            string status = (string)parsed["status"];

            if (status == "ok")
            {
                int count = int.Parse((string)parsed["meta"]["count"]);
                if (count > 0)
                {
                    currentClan.ID           = int.Parse((string)parsed["data"][0]["clan_id"]);
                    currentClan.ClanTag      = (string)parsed["data"][0]["tag"];
                    currentClan.CountMembers = int.Parse((string)parsed["data"][0]["members_count"]);
                    currentClan.CreatedAt    = ConvertFromTimestamp(
                        int.Parse((string)parsed["data"][0]["created_at"]));
                }
                else
                {
                    throw new ClanNotFound("Клан не найден!");
                }
            }
            else
            {
                throw new ClanNotFound("Ошибка запроса");
            }
        }
Ejemplo n.º 2
0
        public void GetStat(ClanWoT currentClan)
        {
            urlRequest = resourceMan.GetString("uri_get_stat_clan") + appID + "&clan_id=" + currentClan.ID;
            string  resultResponse = GetResponse(urlRequest);
            JObject parsed         = JObject.Parse(resultResponse);

            string status = (string)parsed["status"];

            if (status == "ok")
            {
                string efficiency    = (string)parsed["data"][currentClan.ID.ToString()]["efficiency"]["value"];
                string globalMapStat = (string)parsed["data"][currentClan.ID.ToString()]["gm_elo_rating"]["value"];
                string fbStat        = (string)parsed["data"][currentClan.ID.ToString()]["fb_elo_rating"]["value"];
                if (efficiency != null)
                {
                    currentClan.GlobalRating = float.Parse(efficiency);
                }
                else
                {
                    currentClan.GlobalRating = -1;
                }
                if (globalMapStat != null)
                {
                    currentClan.GmEloRating = float.Parse(globalMapStat);
                }
                else
                {
                    currentClan.GmEloRating = -1;
                }
                if (fbStat != null)
                {
                    currentClan.FbEloRating = (float)parsed["data"][currentClan.ID.ToString()]["fb_elo_rating"]["value"];
                }
                else
                {
                    currentClan.FbEloRating = -1;
                }
            }
            else
            {
                throw new ClanNotFound("Неизвестная ошибка");
            }
        }
Ejemplo n.º 3
0
        static async Task MainTask(string[] args)
        {
            string token = WargaminAPI.Enigma.Decrypt(resourceMan.GetString("DisToken"), PHRASE);

            discord = new DiscordClient(new DiscordConfiguration
            {
                Token                 = token,
                TokenType             = TokenType.Bot,
                UseInternalLogHandler = true,
                LogLevel              = LogLevel.Debug
            });

            discord.MessageCreated += async e =>
            {
                string message = e.Message.Content;
                if (message.StartsWith("&"))
                {
                    if (message.ToLower().StartsWith(HELP))
                    {
                        string helpMsg = e.Author.Mention + "```css\nПомните: [] - обязательный параметр  \n" +
                                         "&stats_player [type_of_game] [your_nick] - показывает вашу статистику\n" +
                                         "&clan [type_of_game] [clan_name] - показывает инфу про клан\n" +
                                         "Где [type_of_game] - список игр варгейминг:\n" +
                                         "- WoT\n- WoW\n ```";
                        await e.Message.RespondAsync(helpMsg);
                    }
                    else
                    {
                        string typeOfGame = parseTypeOfGame(message);
                        if (typeOfGame == null || typeOfGame == "")
                        {
                            await e.Message.RespondAsync(e.Author.Mention + ",\nВы не указали, какая игра. Введите &help для помощи.");
                        }
                        else if (typeOfGame.ToLower() == "wow")
                        {
                            await e.Message.RespondAsync(e.Author.Mention + ",\nВ связи с тем, что разработчики по неизвестным причинам " +
                                                         "сделали очень скудный набор публичный данных для разработчиков, адекватную статистику для WoWS сделать невозможно!\n");
                        }
                        else if (typeOfGame.ToLower() == "wot")
                        {
                            PlayerInfo operations = new PlayerInfo();

                            if (message.ToLower().StartsWith(STAT_PLAYER))
                            {
                                string playerNickname = parseName(message, STAT_PLAYER, typeOfGame, true);
                                Player currentPlayer  = new Player();
                                bool   foundPlayer    = false;
                                try
                                {
                                    currentPlayer = operations.FindPlayer(playerNickname);
                                    foundPlayer   = true;
                                }
                                catch (PlayerNotFound ex)
                                {
                                    await e.Message.RespondAsync(ex.Message);
                                }
                                catch
                                {
                                    string infoMsg = e.Author.Mention + "Напишите GRAF или hunterlan об ошибке и пропишите все ваши действия.";
                                    await e.Message.RespondAsync(infoMsg);
                                }
                                if (foundPlayer)
                                {
                                    Statistics playerStatistics = operations.GetStatistic(currentPlayer);
                                    await e.Message.RespondAsync(e.Author.Mention + "\n```Игрок: " + currentPlayer.ToString() +
                                                                 "  \n" + playerStatistics.ToString() + "```");
                                }
                            }
                            else if (message.ToLower().StartsWith(INFO_CLAN))
                            {
                                ClanInfo ops  = new ClanInfo();
                                ClanWoT  clan = new ClanWoT();
                                clan.ClanName = parseName(message, INFO_CLAN, typeOfGame, false);
                                try
                                {
                                    ops.GetClan(clan);
                                }
                                catch (ClanNotFound ex)
                                {
                                    await e.Message.RespondAsync(e.Author.Mention + "\n" + ex.Message);
                                }
                                catch
                                {
                                    string infoMsg = e.Author.Mention + "\nНапишите GRAF или hunterlan об ошибке и пропишите все ваши действия.";
                                    await e.Message.RespondAsync(infoMsg);
                                }
                                try
                                {
                                    ops.GetStat(clan);
                                    await e.Message.RespondAsync(e.Author.Mention + clan.ToString());
                                }
                                catch (ClanNotFound ex)
                                {
                                    await e.Message.RespondAsync(e.Author.Mention + "\n" + ex.Message);
                                }
                                catch
                                {
                                    string infoMsg = e.Author.Mention + "\nНапишите GRAF или hunterlan об ошибке и пропишите все ваши действия.";
                                    await e.Message.RespondAsync(infoMsg);
                                }
                            }
                        }
                    }
                }
            };

            await discord.ConnectAsync();

            await Task.Delay(-1);
        }