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

FREE DiscordBanNotification : 1.0.1 1.0.1

Нет прав для скачивания
C#:
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using System;
using System.Net;
using System.IO;
using System.Threading.Tasks;

//  ____  _       _ _       
// / ___|(_) __ _(_) | ___  
// \___ \| |/ _` | | |/ _ \ 
//  ___) | | (_| | | | (_) |
// |____/|_|\__, |_|_|\___/ 
//          |___/             
// ☽✧✵✧✵✧✵✧✵✧✵✧✵✧☾
// ✦    RUST PLUGINS   ✦
// ✦     Sigilo.dev    ✦
// ☽✧✵✧✵✧✵✧✵✧✵✧✵✧☾

namespace Oxide.Plugins
{
    [Info("DiscordBanNotification", "Sigilo", "1.0.1")]
    class DiscordBanNotification : CovalencePlugin
    {
        private string webhookUrl;
        private bool notifyBans;
        private bool notifyKicks;

        private void Init()
        {
            LoadConfig();
        }

        protected override void LoadDefaultConfig()
        {
            Config["WebhookURL"] = "Your Discord Webhook URL here";
            Config["NotifyBans"] = true;
            Config["NotifyKicks"] = true;
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            webhookUrl = Config["WebhookURL"].ToString();
            notifyBans = Convert.ToBoolean(Config["NotifyBans"]);
            notifyKicks = Convert.ToBoolean(Config["NotifyKicks"]);
        }

        void OnUserBanned(string name, string id, string ip, string reason)
        {
            if (notifyBans)
            {
                SendDiscordNotification(name, reason, "banned", id, ConVar.Server.hostname);
            }
        }

        void OnUserUnbanned(string name, string id, string reason)
        {
            SendDiscordNotification(name, "", "unbanned", id, ConVar.Server.hostname);
        }

        void OnUserKicked(IPlayer player, string reason)
        {
            if (notifyKicks)
            {
                if (reason.StartsWith("Kicked: "))
                {
                    reason = reason.Substring(8);
                }

                SendDiscordNotification(player.Name, reason, "kicked", player.Id, ConVar.Server.hostname);
            }
        }

        private void SendDiscordNotification(string userName, string reason, string action, string id, string serverName)
        {
            Task.Run(() =>
            {
                try
                {
                    var httpWebRequest = (HttpWebRequest)WebRequest.Create(webhookUrl);
                    httpWebRequest.ContentType = "application/json";
                    httpWebRequest.Method = "POST";

                    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                    {
                        string reasonField = "";
                        if (action != "unbanned")
                        {
                            reasonField = $@",
                                {{
                                    ""name"": ""Reason"",
                                    ""value"": ""{reason}"",
                                    ""inline"": false
                                }}";
                        }

                        string json = $@"{{
                            ""embeds"": [{{
                                ""title"": ""{serverName}"",
                                ""fields"": [
                                    {{
                                        ""name"": ""User"",
                                        ""value"": ""**{userName}** | [Steam](https://steamcommunity.com/profiles/{id}) | [BM](https://www.battlemetrics.com/rcon/players?filter%5Bsearch%5D={id}) | [RA](https://www.rustadmin.com/player-search-{id})"",
                                        ""inline"": false
                                    }},
                                    {{
                                        ""name"": ""SteamID"",
                                        ""value"": ""{id}"",
                                        ""inline"": false
                                    }},
                                    {{
                                        ""name"": ""Action"",
                                        ""value"": ""{action}"",
                                        ""inline"": false
                                    }}{reasonField}
                                ]
                            }}]
                        }}";
                        streamWriter.Write(json);
                        streamWriter.Flush();
                    }

                    httpWebRequest.GetResponse();
                }
                catch (Exception ex)
                {
                    Puts($"Error sending Discord notification: {ex.Message}");
                }
            });
        }
    }
}

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