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

FREE Factoid : 0.0.3 0.0.3

Нет прав для скачивания
C#:
using System;
using System.Collections.Generic;
using System.Net;
using Newtonsoft.Json;
using UnityEngine;

/*v.0.0.1 - Prints random facts to chat, //https://api.api-ninjas.com/v1/facts - for the API
 * v.0.0.2 - Added Chat Icon Customization.
 *v.0.0.3 - Fixed API WebRequest URL due to limiting changing to premium users only resulting in error.
 */

namespace Oxide.Plugins
{
    [Info("Factoid", "Wrecks", "0.0.3")]
    [Description("Prints random facts to chat.")]
    internal class Factoid : RustPlugin
    {
        private Timer factTimer;
        private WebClient webClient;

        #region methods

        private void PrintRandomFact()
        {
            try
            {
                if (webClient == null)
                {
                    webClient = new WebClient();
                    webClient.Headers.Add("X-Api-Key", config.ApiKey);
                }

                var factJson = webClient.DownloadString("https://api.api-ninjas.com/v1/facts");
                var factData = JsonConvert.DeserializeObject<List<Fact>>(factJson);

                if (factData.Count > 0)
                    Server.Broadcast($"[<color=#a590a2>FACTOID</color>]\n<color=#20f0a0>{factData[0].fact}</color>",
                        null, config.ChatIcon);
            }
            catch (Exception ex)
            {
                Puts($"Failed to fetch a random fact: {ex.Message}");
            }
        }

        #endregion

        private class Fact
        {
            public string fact { get; set; }
        }


        #region Config

        private static Configuration config;

        public class Configuration
        {
            [JsonProperty("API KEY")] public string ApiKey { get; set; }

            [JsonProperty("Announcement Interval")]

            public int AnnouncementInterval { get; set; }

            [JsonProperty("Chat Icon")] public ulong ChatIcon { get; set; }

            public static Configuration DefaultConfig()
            {
                return new Configuration
                {
                    ApiKey = "YOUR_API_KEY_HERE", //https://api.api-ninjas.com/v1/facts
                    AnnouncementInterval = 631,
                    ChatIcon = 0
                };
            }
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                config = Config.ReadObject<Configuration>();
                if (config == null) LoadDefaultConfig();
                SaveConfig();
            }
            catch (Exception e)
            {
                Debug.LogException(e);
                PrintWarning("Creating new config file.");
                LoadDefaultConfig();
            }
        }

        protected override void LoadDefaultConfig()
        {
            config = Configuration.DefaultConfig();
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(config);
        }

        #endregion

        #region oxidehooks

        private void Init()
        {
            factTimer = timer.Every(config.AnnouncementInterval, PrintRandomFact);
        }


        private void Unload()
        {
            factTimer?.Destroy();
            webClient?.Dispose();
        }

        #endregion
    }
}

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