# 🛡️ Discord Anti-Nuke Бот Полнофункциональный Discord бот для защиты сервера от краша, спама и вредоносных ботов. Бот автоматически отслеживает подозрительную активность, применяет наказания и восстанавливает удалённые элементы. ## 📖 Описание - ✅ Автоматически защищает от массового удаления каналов и ролей - ✅ Предотвращает добавление вредоносных ботов - ✅ Блокирует спам и злоупотребление упоминаниями - ✅ Отслеживает изменения названия и иконки сервера - ✅ Восстанавливает удалённые элементы автоматически - ✅ Ведёт подробные логи всех событий - ✅ Применяет наказания нарушителям --- ## 🎯 Функционал ### Защита от краша сервера (Anti-Nuke) - **Массовое удаление каналов**: Отслеживает количество удалённых каналов за период времени - **Массовое удаление ролей**: Контролирует удаление ролей - **Массовое создание каналов/ролей**: Предотвращает создание большого количества элементов - **Изменение сервера**: Защищает от изменения названия и иконки сервера - **Выдача админских прав**: Отслеживает массовую выдачу административных прав ### Защита от ботов (Anti-Bot) - Автоматическая проверка всех добавляемых ботов - Сравнение с белым списком разрешённых ботов - Бан неразрешённых ботов и пригласивших их пользователей ### Защита от спама (Anti-Spam) - Контроль частоты сообщений - Защита от злоупотребления упоминаниями (@everyone, @here) - Автоматический мут или бан спамеров ### Автоматическое восстановление - Сохранение данных каналов и ролей перед удалением - Автоматическое восстановление удалённых элементов - Сохранение всех разрешений и настроек --- ## ⚙️ Настройка ### 1. Получение Discord Bot Token 1. Перейдите на [Discord Developer Portal](https://discord.com/developers/applications) 2. Создайте новое приложение или выберите существующее 3. Перейдите в раздел "Bot" 4. Нажмите "Reset Token" и скопируйте токен 5. Включите следующие привилегии: - **SERVER MEMBERS INTENT** (Privileged Gateway Intents) - **MESSAGE CONTENT INTENT** (Privileged Gateway Intents) 6. В разделе "OAuth2" → "URL Generator": - Выберите scope: `bot`, `applications.commands` - Выберите permissions: `Administrator` (или минимальные: Ban Members, Manage Channels, Manage Roles, Manage Server, View Audit Log) - Скопируйте URL и откройте в браузере для добавления бота на сервер ### 2. Получение ID сервера 1. Включите режим разработчика в Discord (Настройки → Расширенные → Режим разработчика) 2. Правый клик по серверу → "Копировать ID сервера" ### 3. Настройка базы данных Создайте базу данных MySQL/MariaDB: ```sql CREATE DATABASE antinuke CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` Или используйте существующую базу данных. Бот автоматически создаст необходимые таблицы при первом запуске. ### 4. Редактирование config.yml Откройте `src/config/config.yml` и заполните: ```yaml bot: token: "ВАШ_ТОКЕН_БОТА" guild_id: "ID_ВАШЕГО_СЕРВЕРА" prefix: "!" log_channel_id: "ID_КАНАЛА_ДЛЯ_ЛОГОВ" # Необязательно database: type: "mysql" host: "localhost" port: 3306 user: "root" password: "ваш_пароль" name: "antinuke" limits: max_channel_creates: 3 max_role_deletes: 2 max_channel_deletes: 2 max_role_creates: 5 max_spam_messages: 5 max_mentions: 3 window_seconds: 10 spam_window_seconds: 3 whitelist: admins: - "ID_ДОВЕРЕННОГО_АДМИНА_1" - "ID_ДОВЕРЕННОГО_АДМИНА_2" bots: - "ID_РАЗРЕШЁННОГО_БОТА_1" punishment: ban_user: true ban_bot: true ban_inviter: true restore_changes: true mute_on_spam: true mute_duration_minutes: 10 ``` ### 5. Настройка белого списка Добавьте ID доверенных администраторов и разрешённых ботов в секцию `whitelist` конфигурации. Эти пользователи и боты не будут забанены системой защиты. --- ## 💬 Команды Все команды доступны через Slash Commands (/) в Discord. ### `/whitelist add user_id: type:` Добавляет пользователя или бота в белый список. **Пример:** ``` /whitelist add user_id:123456789012345678 type:admin ``` ### `/whitelist remove user_id: type:` Удаляет пользователя или бота из белого списка. ### `/whitelist list` Показывает текущий белый список. ### `/antinuke status` Отображает статус системы защиты, текущие лимиты и настройки. ### `/antinuke test` Проверяет работу системы защиты. ### `/config reload` Перезагружает конфигурацию из файла `config.yml` без перезапуска бота. --- ## 📝 Логирование Бот ведёт логи в двух местах: 1. **Консоль**: Все события выводятся в консоль с цветовой кодировкой 2. **Файл**: Логи сохраняются в файл (настраивается в `config.yml`) ### Уровни логирования - `error`: Критические ошибки - `warn`: Предупреждения - `info`: Информационные сообщения - `debug`: Отладочная информация ### Настройка логирования В `config.yml`: ```yaml logging: enabled: true file_path: "./logs/bot.log" level: "info" max_file_size: "10m" max_files: 5 ```