Иконка ресурса

FREE VKBot : 1.4 1.4

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Newtonsoft.Json.Linq;
using Oxide.Core;
using Oxide.Core.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Oxide.Plugins {
    [Info("VKBot", "SkiTles", "1.4")]
    class VKBot : RustPlugin {
        private System.Random random = new System.Random();
        private string opc;
        private string stw;
        private string sts;
        private string str;
        private string stb;
        private string ste;
        private string msg;
        private string mapfile;
        private bool NewWipe = false;
        private string VkID = "Заполните эти поля, и выполните команду o.reload VKBot";
        private string VKToken = "Заполните эти поля, и выполните команду o.reload VKBot";
        private string VKTokenApp = "Заполните эти поля, и выполните команду o.reload VKBot";
        private string GroupID = "Заполните эти поля, и выполните команду o.reload VKBot";
        private bool SendReports = false;
        private bool UpdateStatus = true;
        private string EmojiCounterList = "onlinecounter, rocketscounter, blueprintsconter, explosivecounter";
        private string StatusText = "{usertext}.Онлайн игроков: {onlinecounter}.Добыто дерева: {woodcounter}.Добыто серы: {sulfurecounter}.Выпущено ракет: {rocketscounter}.Использовано взрывчатки: {explosivecounter}.Создано чертежей: {blueprintsconter}.{connect}";
        private string connecturl = "Заполните эти поля, и выполните команду o.reload VKBot";
        private string StatusUT = "Сервер 1 Max 3";
        private int UpdateTimer = 30;
        private bool WPostB = true;
        private string WPostMsg = "Заполните эти поля, и выполните команду o.reload VKBot";
        private bool WPostAttB = true;
        private string WPostAtt = "Заполните эти поля, и выполните команду o.reload VKBot, не нужно заполнять если нет оповещения";
        private bool WPostMsgAdmin = true;
        private bool UserBannedMsg = false;
        private bool VKGroupGifts = true;
        private bool VKGGNotify = true;
        private int VKGGTimer = 30;
        public Dictionary<string, object> VKGroupGiftList = new Dictionary<string, object> {
            {
                "supply.signal", 1
            }
            , {
                "pookie.bear", 2
            }
        }
        ;
        private string VKGroupUrl = "vk.com/1234";
        private bool GiftsBool = true;
        private void Init() {
            cmd.AddChatCommand("report", this, "SendReport");
            cmd.AddChatCommand("vk", this, "VKcommand");
            cmd.AddConsoleCommand("updatestatus", this, "UStatus");
            cmd.AddConsoleCommand("sendmsgadmin", this, "MsgAdmin");
        }
        class DataStorageStats {
            public int WoodGath;
            public int SulfureGath;
            public int Rockets;
            public int Blueprints;
            public int Explosive;
            public DataStorageStats() {
            }
        }
        class DataStorageUsers {
            public Dictionary<ulong, VKUDATA> VKUsersData = new Dictionary<ulong, VKUDATA>();
            public DataStorageUsers() {
            }
        }
        class VKUDATA {
            public ulong UserID;
            public string Name;
            public string VkID;
            public int ConfirmCode;
            public bool Confirmed;
            public bool GiftRecived;
            public string LastRaidNotice;
        }
        DataStorageStats statdata;
        DataStorageUsers usersdata;
        private DynamicConfigFile VKBData;
        private DynamicConfigFile StatData;
        void OnServerInitialized() {
            VKBData = Interface.Oxide.DataFileSystem.GetFile("VKBotUsers");
            StatData = Interface.Oxide.DataFileSystem.GetFile("VKBot");
            LoadData();
            if (NewWipe) {
                WipeAlerts(mapfile);
            }
        }
        protected override void LoadDefaultConfig() {
            Puts("Creating a new config file");
            Config.Clear();
            PrintWarning("");
        }
        private void LoadConfigValues() {
            GetConfig("VkID администратора", ref VkID);
            GetConfig("VK Token группы (для сообщений)", ref VKToken);
            GetConfig("VK Token приложения (для записей на стене и статуса)", ref VKTokenApp);
            GetConfig("VKID группы", ref GroupID);
            GetConfig("Включить отправку сообщений администратору командой /report ?", ref SendReports);
            GetConfig("Обновлять статус в группе? Если стоит /false/ статистика собираться не будет", ref UpdateStatus);
            GetConfig("Список счетчиков, которые будут отображаться в виде emoji", ref EmojiCounterList);
            GetConfig("Формат статуса", ref StatusText);
            GetConfig("Ссылка на коннект сервера вида /connect 111.111.111.11:11111/", ref connecturl);
            GetConfig("Текст для статуса", ref StatusUT);
            GetConfig("Таймер обновления статуса (минуты)", ref UpdateTimer);
            GetConfig("Отправлять пост в группу после вайпа?", ref WPostB);
            GetConfig("Текст поста о вайпе", ref WPostMsg);
            GetConfig("Добавить изображение к посту о вайпе?", ref WPostAttB);
            GetConfig("Ссылка на изображение к посту о вайпе вида 'photo-1_265827614'", ref WPostAtt);
            GetConfig("Отправлять сообщение администратору о вайпе?", ref WPostMsgAdmin);
            GetConfig("Отправлять сообщение администратору о бане игрока?", ref UserBannedMsg);
            GetConfig("Выдавать подарок игроку за вступление в группу ВК?", ref VKGroupGifts);
            GetConfig("Подарки за вступление в группу (shortname предмета, количество)", ref VKGroupGiftList);
            GetConfig("Ссылка на группу ВК", ref VKGroupUrl);
            GetConfig("Оповещения в общий чат о получении награды", ref GiftsBool);
            GetConfig("Включить оповещения для игроков не получивших награду за вступление в группу?", ref VKGGNotify);
            GetConfig("Интервал оповещений для игроков не получивших награду за вступление в группу (в минутах)", ref VKGGTimer);
            SaveConfig();
        }
        void Loaded() {
            LoadConfigValues();
            if (UpdateStatus) {
                timer.Repeat(UpdateTimer * 60, 0, Update);
            }
            if (VKGGNotify) {
                timer.Repeat(VKGGTimer * 60, 0, GiftNotifier);
            }
        }
        void Unload() {
            if (UpdateStatus) {
                StatData.WriteObject(statdata);
            }
        }
        void OnNewSave(string filename) {
            NewWipe = true;
            mapfile = filename;
        }
        private void WipeAlerts(string filename) {
            if (UpdateStatus) {
                statdata.Blueprints = 0;
                statdata.Rockets = 0;
                statdata.SulfureGath = 0;
                statdata.WoodGath = 0;
                statdata.Explosive = 0;
                StatData.WriteObject(statdata);
                NewWipe = false;
                Update();
            }
            if (WPostMsgAdmin) {
                string s = filename;
                string[] array = s.Split('/');
                int t = array.Length - 1;
                string savename = array[t];
                string[] mapname = savename.Split('.');
                string msg = $"[VKBot] Сервер вайпнут.Установлена карта: {mapname[0]}.Размер: {mapname[1]}.Сид: {mapname[2]}";
                SendVkMessage(VkID, msg);
            }
            if (WPostB) {
                if (WPostAttB) {
                    SendVkWall($"{WPostMsg}&attachments={WPostAtt}");
                }
                else {
                    SendVkWall($"{WPostMsg}");
                }
            }
        }
#region VKAPI
        private void MsgAdmin(ConsoleSystem.Arg arg) {
            if (arg.IsAdmin != true) {
                return;
            }
            if (arg.Args == null) {
                PrintWarning($"Текст сообщения отсутсвует, правильная команда |sendmsgadmin сообщение|.Message missing, use command |sendmsgadmin message|");
                return;
            }
            string[] args = arg.Args;
            if (args.Length > 0) {
                string text = string.Join(" ", args.Skip(0).ToArray());
                SendVkMessage(VkID, text);
                Log("Log", $"Отправлено новое сообщение пользователю администратору: ({text})");
            }
        }
        string GetUserVKId(ulong userid) {
            if (usersdata.VKUsersData.ContainsKey(userid) && usersdata.VKUsersData[userid].Confirmed) {
                return usersdata.VKUsersData[userid].VkID;
            }
            else {
                return null;
            }
        }
        string GetUserLastNotice(ulong userid) {
            if (usersdata.VKUsersData.ContainsKey(userid) && usersdata.VKUsersData[userid].Confirmed) {
                return usersdata.VKUsersData[userid].LastRaidNotice;
            }
            else {
                return null;
            }
        }
        string AdminVkID() {
            return VkID;
        }
        private void VKAPISaveLastNotice(ulong userid, string lasttime) {
            if (usersdata.VKUsersData.ContainsKey(userid)) {
                usersdata.VKUsersData[userid].LastRaidNotice = lasttime;
                VKBData.WriteObject(usersdata);
            }
            else {
                return;
            }
        }
        private void VKAPIWall(string text, string attachments, bool atimg) {
            if (atimg) {
                SendVkWall($"{text}&attachments={attachments}");
                Log("Log", $"Отправлен новый пост на стену: ({text}&attachments={attachments})");
            }
            else {
                SendVkWall($"{text}");
                Log("Log", $"Отправлен новый пост на стену: ({text})");
            }
        }
        private void VKAPIMsg(string text, string attachments, string reciverID, bool atimg) {
            if (atimg) {
                SendVkMessage(reciverID, $"{text}&attachment={attachments}");
                Log("Log", $"Отправлено новое сообщение пользователю {reciverID}: ({text}&attachments={attachments})");
            }
            else {
                SendVkMessage(reciverID, $"{text}");
                Log("Log", $"Отправлено новое сообщение пользователю {reciverID}: ({text})");
            }
        }
        private void VKAPIStatus(string msg) {
            SendVkStatus(msg);
            Log("Log", $"Отправлен новый статус: {msg}");
        }
#endregion
#region VKfunction
        private string EmojiCounters(string counter) {
            var chars = counter.ToCharArray();
            string emoji = "";
            for (int ctr = 0; ctr < chars.Length; ctr++) {
                string replace = chars[ctr] + "⃣";
                emoji = emoji + replace;
            }
            return emoji;
        }
        private void UStatus(ConsoleSystem.Arg arg) {
            if (arg.IsAdmin != true) {
                return;
            }
            if (UpdateStatus) {
                Update();
            }
            else {
                PrintWarning($"Функция обновления статуса отключена.Status update disabled");
            }
        }
        void OnPlayerBanned(string name, ulong id, string address, string reason) {
            if (UserBannedMsg) {
                string msg = $"Игрок {name} ({id}) был забанен на сервере.Причина: {reason}.Ссылка на профиль стим: steamcommunity.com/profiles/{id}/";
                if (usersdata.VKUsersData.ContainsKey(id) && usersdata.VKUsersData[id].Confirmed) {
                    msg = msg + $".Ссылка на профиль ВК: vk.com/id{usersdata.VKUsersData[id].VkID}";
                }
                SendVkMessage(VkID, msg);
            }
        }
        private void SendReport(BasePlayer player, string cmd, string[] args) {
            if (SendReports) {
                if (args.Length > 0) {
                    string text = string.Join(" ", args.Skip(0).ToArray());
                    msg = "[VKBot] " + player.displayName + "(" + player.UserIDString + ") написал сообщение: " + text;
                    string reciverID = VkID;
                    SendVkMessage(reciverID, msg);
                    Log("Log", $"{player.displayName} ({player.userID}): написал администратору: {msg}");
                    PrintToChat(player, String.Format($"<size=17>Ваше сообщение было отправлено администратору.</size>"));
                    PrintToChat(player, String.Format($"<size=17><color=#990404>ВНИМАНИЕ!</color> Наличие в тексте нецензурных выражений, оскорблений администрации или игроков сервера, а так же большое количество безсмысленных сообщений <color=#990404>приведет к бану!</color></size>"));
                }
                else {
                    PrintToChat(player, String.Format($"<size=17>Введите команду <color=#990404>/report сообщение</color>.Текст сообщения будет отправлен администратору.</size>"));
                    PrintToChat(player, String.Format($"<size=17><color=#990404>ВНИМАНИЕ!</color> Наличие в тексте нецензурных выражений, оскорблений администрации или игроков сервера, а так же большое количество безсмысленных сообщений <color=#990404>приведет к бану!</color></size>"));
                    return;
                }
            }
            else {
                PrintToChat(player, String.Format("Данная функция отключена администратором."));
            }
        }
        private void CheckVkUser(BasePlayer player, string url) {
            string Userid = null;
            string[] arr1 = url.Split('/');
            int num = arr1.Length - 1;
            string vkname = arr1[num];
            string url2 = "https://api.vk.com/method/users.get?user_ids=" + vkname + "&v=5.68&access_token=" + VKToken;
            webrequest.Enqueue(url2, null, (code, response) => {
                Log("responce", response);
                var json = JObject.Parse(response);
                Userid = (string)json["response"][0]["id"];
                if (Userid != null) {
                    AddVKUser(player, Userid);
                }
                else {
                    PrintToChat(player, "Ошибка обработки вашей ссылки ВК, обратитесь к администратору.");
                }
            }
            , this);
        }
        private void AddVKUser(BasePlayer player, string Userid) {
            if (!usersdata.VKUsersData.ContainsKey(player.userID)) {
                usersdata.VKUsersData.Add(player.userID, new VKUDATA() {
                    UserID = player.userID, Name = player.displayName, VkID = Userid, ConfirmCode = random.Next(1, 9999999), Confirmed = false, GiftRecived = false
                }
                );
                VKBData.WriteObject(usersdata);
                SendVkMessage(usersdata.VKUsersData[player.userID].VkID, $"Для подтверждения вашего ВК профиля введите в игровой чат команду /vk confirm {usersdata.VKUsersData[player.userID].ConfirmCode}");
                PrintToChat(player, String.Format($"<size=17>Вам был отправлен код подтверждения.Если сообщение не пришло, зайдите в группу <color=#990404>{VKGroupUrl}</color> и напишите любое сообщение.После этого введите команду <color=#990404>/vk confirm</color></size>"));
            }
            else {
                if (Userid == usersdata.VKUsersData[player.userID].VkID) {
                    PrintToChat(player, String.Format($"<size=17>Вы уже подтвердили свой профиль.</size>"));
                    return;
                }
                usersdata.VKUsersData[player.userID].Name = player.displayName;
                usersdata.VKUsersData[player.userID].VkID = Userid;
                usersdata.VKUsersData[player.userID].Confirmed = false;
                usersdata.VKUsersData[player.userID].ConfirmCode = random.Next(1, 9999999);
                VKBData.WriteObject(usersdata);
                SendVkMessage(usersdata.VKUsersData[player.userID].VkID, $"Для подтверждения вашего ВК профиля введите в игровой чат команду /vk confirm {usersdata.VKUsersData[player.userID].ConfirmCode}");
                PrintToChat(player, String.Format($"<size=17>Вам был отправлен код подтверждения.Если сообщение не пришло, зайдите в группу <color=#990404>{VKGroupUrl}</color> и напишите любое сообщение.После этого введите команду <color=#990404>/vk confirm</color></size>"));
            }
        }
        private void VKcommand(BasePlayer player, string cmd, string[] args) {
            if (args.Length > 0) {
                if (args[0] == "add") {
                    if (args.Length == 1) {
                        PrintToChat(player, String.Format($"<size=17>Список доступных команд: \n /vk add ссылка на вашу страницу - добавление вашего профиля ВК в базу</size>"));
                        return;
                    }
                    CheckVkUser(player, args[1]);
                }
                if (args[0] == "confirm") {
                    if (args.Length >= 2) {
                        if (usersdata.VKUsersData.ContainsKey(player.userID)) {
                            if (usersdata.VKUsersData[player.userID].Confirmed) {
                                PrintToChat(player, String.Format($"<size=17>Вы уже подтвердили свой профиль.</size>"));
                                return;
                            }
                            if (args[1] == usersdata.VKUsersData[player.userID].ConfirmCode.ToString()) {
                                usersdata.VKUsersData[player.userID].Confirmed = true;
                                VKBData.WriteObject(usersdata);
                                PrintToChat(player, String.Format($"<size=17>Вы подтвердили свой профиль! Спасибо!</size>"));
                                if (VKGroupGifts) {
                                    PrintToChat(player, String.Format($"<size=17>Вы можете получить награду, если вступили в нашу группу <color=#990404>{VKGroupUrl}</color> введя команду <color=#990404>/vk gift</color></size>"));
                                }
                            }
                            else {
                                PrintToChat(player, String.Format($"<size=17>Неверный код подтверждения.</size>"));
                            }
                        }
                        else {
                            PrintToChat(player, String.Format($"<size=17>Сначала добавьте свой VK ID командой <color=#990404>/vk add ссылка на вашу страницу</color></size>"));
                        }
                    }
                    else {
                        if (usersdata.VKUsersData[player.userID].Confirmed) {
                            PrintToChat(player, String.Format($"<size=17>Вы уже подтвердили свой профиль.</size>"));
                            return;
                        }
                        if (usersdata.VKUsersData.ContainsKey(player.userID)) {
                            SendVkMessage(usersdata.VKUsersData[player.userID].VkID, $"Для подтверждения вашего ВК профиля введите в игровой чат команду /vk confirm {usersdata.VKUsersData[player.userID].ConfirmCode}");
                            PrintToChat(player, String.Format($"<size=17>Вам был отправлен код подтверждения.Если сообщение не пришло, зайдите в группу <color=#990404>{VKGroupUrl}</color> и напишите любое сообщение.После этого введите команду <color=#990404>/vk confirm</color></size>"));
                        }
                        else {
                            PrintToChat(player, String.Format($"<size=17>Сначала добавьте свой VK ID командой <color=#990404>/vk add ссылка на вашу страницу</color></size>"));
                        }
                    }
                }
                if (args[0] == "gift") {
                    if (VKGroupGifts) {
                        if (!usersdata.VKUsersData.ContainsKey(player.userID)) {
                            PrintToChat(player, String.Format($"<size=17>Сначала добавьте свой VK ID командой <color=#990404>/vk add ссылка на вашу страницу</color></size>"));
                            return;
                        }
                        if (!usersdata.VKUsersData[player.userID].Confirmed) {
                            PrintToChat(player, String.Format($"<size=17>Сначала подтвердите свой профиль ВК командой <color=#990404>/vk confirm</color></size>"));
                            return;
                        }
                        if (usersdata.VKUsersData[player.userID].GiftRecived) {
                            PrintToChat(player, String.Format($"<size=17>Вы уже получили свою награду.</size>"));
                            return;
                        }
                        string url = $"https://api.vk.com/method/groups.isMember?group_id={GroupID}&user_id={usersdata.VKUsersData[player.userID].VkID}&v=5.68&access_token={VKToken}";
                        webrequest.Enqueue(url, null, (code, response) => {
                            var json = JObject.Parse(response);
                            string Result = (string)json["response"];
                            GetGift(code, Result, player);
                        }
                        , this);
                    }
                    else {
                        PrintToChat(player, String.Format("Данная функция отключена администратором."));
                    }
                }
                if (args[0] != "add" && args[0] != "gift" && args[0] != "confirm") {
                    PrintToChat(player, String.Format($"<size=17>Список доступных команд: \n /vk add ссылка на вашу страницу - добавление вашего профиля ВК в базу.\n /vk confirm - подтверждение вашего профиля ВК</size>"));
                    if (VKGroupGifts) {
                        PrintToChat(player, String.Format($"<size=17>/vk gift - получение награды за вступление в группу <color=#990404>{VKGroupUrl}</color></size>"));
                    }
                }
            }
            else {
                PrintToChat(player, String.Format($"<size=17>Список доступных команд: \n /vk add ссылка на вашу страницу - добавление вашего профиля ВК в базу.\n /vk confirm - подтверждение вашего профиля ВК</size>"));
                if (VKGroupGifts) {
                    PrintToChat(player, String.Format($"<size=17>/vk gift - получение награды за вступление в группу <color=#990404>{VKGroupUrl}</color></size>"));
                }
            }
        }
        private void GetGift(int code, string Result, BasePlayer player) {
            if (Result == "1") {
                int FreeSlots = 24 - player.inventory.containerMain.itemList.Count;
                if (FreeSlots >= VKGroupGiftList.Count) {
                    for (int i = 0; i < VKGroupGiftList.Count; i++) {
                        Item gift = ItemManager.CreateByName(VKGroupGiftList.ElementAt(i).Key, Convert.ToInt32(VKGroupGiftList.ElementAt(i).Value));
                        gift.MoveToContainer(player.inventory.containerMain, -1, false);
                    }
                    usersdata.VKUsersData[player.userID].GiftRecived = true;
                    VKBData.WriteObject(usersdata);
                    PrintToChat(player, String.Format($"<size=17>Вы получили свою награду! Проверьте инвентарь!</size>"));
                    if (GiftsBool) {
                        Server.Broadcast(String.Format($"<size=17>Игрок <color=#990404>{player.displayName}</color> получил награду за вступление в группу <color=#990404>{VKGroupUrl}.</color> \n Хочешь тоже получить награду? Введи в чат команду <color=#990404>/vk gift</color>.</size>"));
                    }
                }
                else {
                    PrintToChat(player, String.Format($"<size=17>Недостаточно места для получения награды.</size>"));
                }
            }
            else {
                PrintToChat(player, String.Format($"<size=17>Вы не являетесь участником группы <color=#990404>{VKGroupUrl}</color></size>"));
            }
        }
        private void GiftNotifier() {
            if (VKGroupGifts) {
                foreach (var pl in BasePlayer.activePlayerList) {
                    if (!usersdata.VKUsersData.ContainsKey(pl.userID)) {
                        PrintToChat(pl, String.Format($"<size=17>Вступите в нашу группу <color=#990404>{VKGroupUrl}</color> и получите награду! \n Введите команду <color=#990404>/vk gift</color></size>"));
                    }
                    else {
                        if (!usersdata.VKUsersData[pl.userID].GiftRecived) {
                            PrintToChat(pl, String.Format($"<size=17>Вступите в нашу группу <color=#990404>{VKGroupUrl}</color> и получите награду! \n Введите команду <color=#990404>/vk gift</color></size>"));
                        }
                    }
                }
            }
        }
        private void OnItemResearchStart(ResearchTable table) {
            statdata.Blueprints++;
        }
        private void OnDispenserGather(ResourceDispenser dispenser, BaseEntity entity, Item item) {
            if (UpdateStatus) {
                if (item.info.shortname == "wood") {
                    statdata.WoodGath = statdata.WoodGath + item.amount;
                }
                if (item.info.shortname == "sulfur.ore") {
                    statdata.SulfureGath = statdata.SulfureGath + item.amount;
                }
            }
        }
        private void OnDispenserBonus(ResourceDispenser dispenser, BasePlayer player, Item item) {
            if (UpdateStatus && item.info.shortname == "sulfur.ore") {
                statdata.SulfureGath = statdata.SulfureGath + item.amount;
            }
        }
        private void OnCollectiblePickup(Item item, BasePlayer player) {
            if (UpdateStatus) {
                if (item.info.shortname == "wood") {
                    statdata.WoodGath = statdata.WoodGath + item.amount;
                }
                if (item.info.shortname == "sulfur.ore") {
                    statdata.SulfureGath = statdata.SulfureGath + item.amount;
                }
            }
        }
        private void OnRocketLaunched(BasePlayer player, BaseEntity entity) {
            if (UpdateStatus) {
                statdata.Rockets++;
            }
        }
        private void OnExplosiveThrown(BasePlayer player, BaseEntity entity) {
            if (UpdateStatus) {
                List<object> include = new List<object>() {
                    "explosive.satchel.deployed", "grenade.f1.deployed", "grenade.beancan.deployed", "explosive.timed.deployed"
                }
                ;
                if (include.Contains(entity.ShortPrefabName)) {
                    statdata.Explosive++;
                }
            }
        }
        void Update() {
            StatData.WriteObject(statdata);
            List<ulong> OnlinePlayers = new List<ulong>();
            foreach (var pl in BasePlayer.activePlayerList) {
                OnlinePlayers.Add(pl.userID);
            }
            if (EmojiCounterList.Contains("onlinecounter")) {
                opc = EmojiCounters(OnlinePlayers.Count.ToString());
            }
            else {
                opc = OnlinePlayers.Count.ToString();
            }
            if (EmojiCounterList.Contains("woodcounter")) {
                stw = EmojiCounters(statdata.WoodGath.ToString());
            }
            else {
                stw = statdata.WoodGath.ToString();
            }
            if (EmojiCounterList.Contains("sulfurecounter")) {
                sts = EmojiCounters(statdata.SulfureGath.ToString());
            }
            else {
                sts = statdata.SulfureGath.ToString();
            }
            if (EmojiCounterList.Contains("rocketscounter")) {
                str = EmojiCounters(statdata.Rockets.ToString());
            }
            else {
                str = statdata.Rockets.ToString();
            }
            if (EmojiCounterList.Contains("blueprintsconter")) {
                stb = EmojiCounters(statdata.Blueprints.ToString());
            }
            else {
                stb = statdata.Blueprints.ToString();
            }
            if (EmojiCounterList.Contains("explosivecounter")) {
                ste = EmojiCounters(statdata.Explosive.ToString());
            }
            else {
                ste = statdata.Explosive.ToString();
            }
            string cu = connecturl;
            string su = StatusUT;
            SendStatus(StatusText, new KeyValuePair<string, string>("onlinecounter", opc), new KeyValuePair<string, string>("woodcounter", stw), new KeyValuePair<string, string>("sulfurecounter", sts), new KeyValuePair<string, string>("rocketscounter", str), new KeyValuePair<string, string>("blueprintsconter", stb), new KeyValuePair<string, string>("explosivecounter", ste), new KeyValuePair<string, string>("connect", cu), new KeyValuePair<string, string>("usertext", su));
        }
        private void SendStatus(string key, params KeyValuePair<string, string>[] replacements) {
            string message = key;
            foreach (var replacement in replacements) message = message.Replace($"{{{replacement.Key}}}", replacement.Value);
            SendVkStatus(message);
        }
#endregion
        void LoadData() {
            try {
                statdata = Interface.GetMod().DataFileSystem.ReadObject<DataStorageStats>("VKBot");
                usersdata = Interface.GetMod().DataFileSystem.ReadObject<DataStorageUsers>("VKBotUsers");
            }
            catch {
                statdata = new DataStorageStats();
                usersdata = new DataStorageUsers();
            }
        }
        void Log(string filename, string text) {
            LogToFile(filename, $"[{DateTime.Now}] {text}", this);
        }
        private void GetConfig<T>(string Key, ref T var) {
            if (Config[Key] != null) {
                var = (T)Convert.ChangeType(Config[Key], typeof(T));
            }
            Config[Key] = var;
        }
        private void SendVkMessage(string reciverID, string msg) {
            string type = "message";
            string url = "https://api.vk.com/method/messages.send?user_ids=" + reciverID + "&message=" + msg + "&v=5.68&access_token=" + VKToken;
            webrequest.Enqueue(url, null, (code, response) => GetCallback(code, response, type), this);
        }
        private void SendVkWall(string msg) {
            string type = "post";
            string url = "https://api.vk.com/method/wall.post?owner_id=-" + GroupID + "&message=" + msg + "&from_group=1&v=5.68&access_token=" + VKTokenApp;
            webrequest.Enqueue(url, null, (code, response) => GetCallback(code, response, type), this);
        }
        private void SendVkStatus(string msg) {
            string type = "status";
            string url = "https://api.vk.com/method/status.set?group_id=" + GroupID + "&text=" + msg + "&v=5.68&access_token=" + VKTokenApp;
            webrequest.Enqueue(url, null, (code, response) => GetCallback(code, response, type), this);
        }
        void GetCallback(int code, string response, string type) {
            if (!response.Contains("error")) {
                Puts($"New {type} sended: {response}");
            }
            else {
                PrintWarning($"{type} not sended.Error logs: /oxide/logs/VKBot/");
                Log("Errors", $"{type} not sended.Error: {response}");
            }
        }
    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху