Files
gggg/README.md
2025-11-27 22:00:48 +02:00

184 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🛡️ 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
```