184 lines
7.2 KiB
Markdown
184 lines
7.2 KiB
Markdown
# 🛡️ 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:<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` без перезапуска бота.
|
||
|
||
---
|
||
|
||
## 📝 Логирование
|
||
|
||
Бот ведёт логи в двух местах:
|
||
|
||
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
|
||
```
|