7.2 KiB
🛡️ Discord Anti-Nuke Бот
Полнофункциональный Discord бот для защиты сервера от краша, спама и вредоносных ботов. Бот автоматически отслеживает подозрительную активность, применяет наказания и восстанавливает удалённые элементы.
📖 Описание
- ✅ Автоматически защищает от массового удаления каналов и ролей
- ✅ Предотвращает добавление вредоносных ботов
- ✅ Блокирует спам и злоупотребление упоминаниями
- ✅ Отслеживает изменения названия и иконки сервера
- ✅ Восстанавливает удалённые элементы автоматически
- ✅ Ведёт подробные логи всех событий
- ✅ Применяет наказания нарушителям
🎯 Функционал
Защита от краша сервера (Anti-Nuke)
- Массовое удаление каналов: Отслеживает количество удалённых каналов за период времени
- Массовое удаление ролей: Контролирует удаление ролей
- Массовое создание каналов/ролей: Предотвращает создание большого количества элементов
- Изменение сервера: Защищает от изменения названия и иконки сервера
- Выдача админских прав: Отслеживает массовую выдачу административных прав
Защита от ботов (Anti-Bot)
- Автоматическая проверка всех добавляемых ботов
- Сравнение с белым списком разрешённых ботов
- Бан неразрешённых ботов и пригласивших их пользователей
Защита от спама (Anti-Spam)
- Контроль частоты сообщений
- Защита от злоупотребления упоминаниями (@everyone, @here)
- Автоматический мут или бан спамеров
Автоматическое восстановление
- Сохранение данных каналов и ролей перед удалением
- Автоматическое восстановление удалённых элементов
- Сохранение всех разрешений и настроек
⚙️ Настройка
1. Получение Discord Bot Token
- Перейдите на Discord Developer Portal
- Создайте новое приложение или выберите существующее
- Перейдите в раздел "Bot"
- Нажмите "Reset Token" и скопируйте токен
- Включите следующие привилегии:
- SERVER MEMBERS INTENT (Privileged Gateway Intents)
- MESSAGE CONTENT INTENT (Privileged Gateway Intents)
- В разделе "OAuth2" → "URL Generator":
- Выберите scope:
bot,applications.commands - Выберите permissions:
Administrator(или минимальные: Ban Members, Manage Channels, Manage Roles, Manage Server, View Audit Log) - Скопируйте URL и откройте в браузере для добавления бота на сервер
- Выберите scope:
2. Получение ID сервера
- Включите режим разработчика в Discord (Настройки → Расширенные → Режим разработчика)
- Правый клик по серверу → "Копировать ID сервера"
3. Настройка базы данных
Создайте базу данных MySQL/MariaDB:
CREATE DATABASE antinuke CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Или используйте существующую базу данных. Бот автоматически создаст необходимые таблицы при первом запуске.
4. Редактирование config.yml
Откройте src/config/config.yml и заполните:
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:<ID> type:<admin|bot>
Добавляет пользователя или бота в белый список.
Пример:
/whitelist add user_id:123456789012345678 type:admin
/whitelist remove user_id:<ID> type:<admin|bot>
Удаляет пользователя или бота из белого списка.
/whitelist list
Показывает текущий белый список.
/antinuke status
Отображает статус системы защиты, текущие лимиты и настройки.
/antinuke test
Проверяет работу системы защиты.
/config reload
Перезагружает конфигурацию из файла config.yml без перезапуска бота.
📝 Логирование
Бот ведёт логи в двух местах:
- Консоль: Все события выводятся в консоль с цветовой кодировкой
- Файл: Логи сохраняются в файл (настраивается в
config.yml)
Уровни логирования
error: Критические ошибкиwarn: Предупрежденияinfo: Информационные сообщенияdebug: Отладочная информация
Настройка логирования
В config.yml:
logging:
enabled: true
file_path: "./logs/bot.log"
level: "info"
max_file_size: "10m"
max_files: 5