Обновить README.md
This commit is contained in:
338
README.md
338
README.md
@@ -2,28 +2,8 @@
|
||||
|
||||
Полнофункциональный Discord бот для защиты сервера от краша, спама и вредоносных ботов. Бот автоматически отслеживает подозрительную активность, применяет наказания и восстанавливает удалённые элементы.
|
||||
|
||||
---
|
||||
|
||||
## 📋 Содержание
|
||||
|
||||
1. [Описание](#описание)
|
||||
2. [Функционал](#функционал)
|
||||
3. [Установка](#установка)
|
||||
4. [Настройка](#настройка)
|
||||
5. [Запуск](#запуск)
|
||||
6. [Модули](#модули)
|
||||
7. [Команды](#команды)
|
||||
8. [База данных](#база-данных)
|
||||
9. [Логирование](#логирование)
|
||||
10. [Запуск на Pterodactyl](#запуск-на-pterodactyl)
|
||||
11. [Решение проблем](#решение-проблем)
|
||||
|
||||
---
|
||||
|
||||
## 📖 Описание
|
||||
|
||||
Discord Anti-Nuke бот — это комплексная система защиты сервера, которая:
|
||||
|
||||
- ✅ Автоматически защищает от массового удаления каналов и ролей
|
||||
- ✅ Предотвращает добавление вредоносных ботов
|
||||
- ✅ Блокирует спам и злоупотребление упоминаниями
|
||||
@@ -64,46 +44,6 @@ Discord Anti-Nuke бот — это комплексная система защ
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Установка
|
||||
|
||||
### Требования
|
||||
|
||||
- Node.js 18+
|
||||
- MySQL или MariaDB
|
||||
- Discord Bot Token
|
||||
|
||||
### Шаги установки
|
||||
|
||||
1. **Клонирование или загрузка проекта**
|
||||
|
||||
```bash
|
||||
cd /path/to/project
|
||||
```
|
||||
|
||||
2. **Установка зависимостей**
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
3. **Настройка конфигурации**
|
||||
|
||||
Скопируйте файл `src/config/config.example.yml` в `src/config/config.yml`:
|
||||
|
||||
```bash
|
||||
cp src/config/config.example.yml src/config/config.yml
|
||||
```
|
||||
|
||||
Отредактируйте `src/config/config.yml` и заполните все необходимые параметры (см. раздел [Настройка](#настройка)).
|
||||
|
||||
4. **Сборка проекта**
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Настройка
|
||||
|
||||
### 1. Получение Discord Bot Token
|
||||
@@ -186,68 +126,6 @@ punishment:
|
||||
|
||||
---
|
||||
|
||||
## 🏃 Запуск
|
||||
|
||||
### Режим разработки
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### Продакшн режим
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
npm start
|
||||
```
|
||||
|
||||
### Использование PM2 (рекомендуется)
|
||||
|
||||
```bash
|
||||
npm install -g pm2
|
||||
npm run build
|
||||
pm2 start dist/index.js --name antinuke-bot
|
||||
pm2 save
|
||||
pm2 startup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Модули
|
||||
|
||||
### Core модули
|
||||
|
||||
#### `logger.ts`
|
||||
Система логирования на основе Winston. Поддерживает логирование в консоль и файл с ротацией.
|
||||
|
||||
#### `database.ts`
|
||||
Модуль работы с MySQL/MariaDB. Обеспечивает подключение, создание таблиц и операции с данными.
|
||||
|
||||
#### `configLoader.ts`
|
||||
Загрузка и валидация конфигурации из YAML файла.
|
||||
|
||||
### Модули защиты
|
||||
|
||||
#### `antiNuke.ts`
|
||||
Основной модуль защиты от краша сервера. Отслеживает массовые операции через Audit Log и сравнивает с лимитами.
|
||||
|
||||
#### `antiBot.ts`
|
||||
Проверяет всех добавляемых ботов и сравнивает с белым списком.
|
||||
|
||||
#### `antiSpam.ts`
|
||||
Контролирует частоту сообщений и упоминаний, применяет наказания за спам.
|
||||
|
||||
#### `autoRestore.ts`
|
||||
Сохраняет данные каналов и ролей перед удалением и восстанавливает их при необходимости.
|
||||
|
||||
#### `punishment.ts`
|
||||
Выполняет наказания: бан, кик, мут. Отправляет сообщения в лог-канал.
|
||||
|
||||
#### `whitelist.ts`
|
||||
Управление белым списком администраторов и ботов.
|
||||
|
||||
---
|
||||
|
||||
## 💬 Команды
|
||||
|
||||
Все команды доступны через Slash Commands (/) в Discord.
|
||||
@@ -277,44 +155,6 @@ pm2 startup
|
||||
|
||||
---
|
||||
|
||||
## 🗄️ База данных
|
||||
|
||||
### Структура таблиц
|
||||
|
||||
#### `events_log`
|
||||
Хранит все события, отслеживаемые ботом.
|
||||
|
||||
| Поле | Тип | Описание |
|
||||
|------|-----|----------|
|
||||
| id | VARCHAR(36) | UUID события |
|
||||
| user_id | VARCHAR(20) | ID пользователя |
|
||||
| action | VARCHAR(100) | Тип действия |
|
||||
| details | TEXT | Детали события |
|
||||
| timestamp | DATETIME | Время события |
|
||||
|
||||
#### `restored_items`
|
||||
Хранит данные для восстановления каналов и ролей.
|
||||
|
||||
| Поле | Тип | Описание |
|
||||
|------|-----|----------|
|
||||
| id | INT | ID записи |
|
||||
| type | ENUM | Тип: channel или role |
|
||||
| old_data | JSON | Данные элемента |
|
||||
| restored_at | DATETIME | Время восстановления |
|
||||
|
||||
#### `punishments`
|
||||
Лог всех применённых наказаний.
|
||||
|
||||
| Поле | Тип | Описание |
|
||||
|------|-----|----------|
|
||||
| id | INT | ID записи |
|
||||
| user_id | VARCHAR(20) | ID пользователя |
|
||||
| reason | TEXT | Причина наказания |
|
||||
| punishment_type | VARCHAR(50) | Тип наказания |
|
||||
| timestamp | DATETIME | Время наказания |
|
||||
|
||||
---
|
||||
|
||||
## 📝 Логирование
|
||||
|
||||
Бот ведёт логи в двух местах:
|
||||
@@ -341,181 +181,3 @@ logging:
|
||||
max_file_size: "10m"
|
||||
max_files: 5
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐳 Запуск на Pterodactyl
|
||||
|
||||
### 1. Создание яйца (Egg)
|
||||
|
||||
Если у вас есть доступ к панели Pterodactyl, создайте новое яйцо для Node.js приложения.
|
||||
|
||||
### 2. Настройка сервера
|
||||
|
||||
1. Создайте новый сервер в Pterodactyl
|
||||
2. Выберите яйцо Node.js
|
||||
3. Установите следующие переменные окружения (если нужно):
|
||||
- `NODE_VERSION`: `18` или выше
|
||||
|
||||
### 3. Установка зависимостей
|
||||
|
||||
В консоли сервера выполните:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 4. Настройка конфигурации
|
||||
|
||||
Отредактируйте `src/config/config.yml` через файловый менеджер или через консоль:
|
||||
|
||||
```bash
|
||||
nano src/config/config.yml
|
||||
```
|
||||
|
||||
### 5. Сборка и запуск
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
npm start
|
||||
```
|
||||
|
||||
### 6. Автозапуск
|
||||
|
||||
Pterodactyl автоматически перезапустит бота при перезагрузке сервера, если процесс завершится.
|
||||
|
||||
### Альтернатива: использование PM2
|
||||
|
||||
Если хотите использовать PM2 на Pterodactyl:
|
||||
|
||||
1. Установите PM2 в консоли сервера:
|
||||
```bash
|
||||
npm install -g pm2
|
||||
```
|
||||
|
||||
2. Создайте файл `ecosystem.config.js`:
|
||||
```javascript
|
||||
module.exports = {
|
||||
apps: [{
|
||||
name: 'antinuke-bot',
|
||||
script: 'dist/index.js',
|
||||
instances: 1,
|
||||
autorestart: true,
|
||||
watch: false,
|
||||
max_memory_restart: '500M',
|
||||
}]
|
||||
};
|
||||
```
|
||||
|
||||
3. Запустите через PM2:
|
||||
```bash
|
||||
npm run build
|
||||
pm2 start ecosystem.config.js
|
||||
pm2 save
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Решение проблем
|
||||
|
||||
### Бот не запускается
|
||||
|
||||
**Проблема**: Ошибка при запуске бота
|
||||
|
||||
**Решения**:
|
||||
1. Проверьте правильность токена в `config.yml`
|
||||
2. Убедитесь, что бот добавлен на сервер с необходимыми правами
|
||||
3. Проверьте подключение к базе данных
|
||||
4. Убедитесь, что Node.js версии 18+
|
||||
|
||||
### Ошибки подключения к БД
|
||||
|
||||
**Проблема**: `Error: connect ECONNREFUSED`
|
||||
|
||||
**Решения**:
|
||||
1. Проверьте, что MySQL/MariaDB запущен
|
||||
2. Проверьте правильность хоста, порта, пользователя и пароля
|
||||
3. Убедитесь, что база данных существует
|
||||
4. Проверьте права доступа пользователя БД
|
||||
|
||||
### Бот не реагирует на события
|
||||
|
||||
**Проблема**: Бот онлайн, но не обрабатывает события
|
||||
|
||||
**Решения**:
|
||||
1. Проверьте, что `guild_id` в конфиге соответствует ID сервера
|
||||
2. Убедитесь, что бот имеет необходимые права на сервере
|
||||
3. Проверьте, что включены необходимые Intents в Discord Developer Portal
|
||||
4. Проверьте логи на наличие ошибок
|
||||
|
||||
### Команды не работают
|
||||
|
||||
**Проблема**: Slash Commands не отображаются или не работают
|
||||
|
||||
**Решения**:
|
||||
1. Подождите несколько минут после запуска (команды регистрируются асинхронно)
|
||||
2. Проверьте права бота (нужны права на использование Slash Commands)
|
||||
3. Убедитесь, что бот имеет права Administrator или необходимые минимальные права
|
||||
4. Попробуйте перезапустить бота
|
||||
|
||||
### Бот банит легитимных пользователей
|
||||
|
||||
**Проблема**: Бот банит администраторов или разрешённых ботов
|
||||
|
||||
**Решения**:
|
||||
1. Добавьте ID администраторов в `whitelist.admins` в конфиге
|
||||
2. Добавьте ID разрешённых ботов в `whitelist.bots`
|
||||
3. Перезагрузите конфигурацию командой `/config reload` или перезапустите бота
|
||||
|
||||
### Восстановление не работает
|
||||
|
||||
**Проблема**: Удалённые каналы/роли не восстанавливаются
|
||||
|
||||
**Решения**:
|
||||
1. Убедитесь, что `punishment.restore_changes: true` в конфиге
|
||||
2. Проверьте права бота (нужны права на создание каналов и ролей)
|
||||
3. Проверьте логи на наличие ошибок восстановления
|
||||
4. Убедитесь, что данные сохраняются в БД (проверьте таблицу `restored_items`)
|
||||
|
||||
### Высокое использование памяти
|
||||
|
||||
**Проблема**: Бот потребляет много памяти
|
||||
|
||||
**Решения**:
|
||||
1. Уменьшите `max_files` в настройках логирования
|
||||
2. Уменьшите `max_file_size` для логов
|
||||
3. Используйте PM2 с ограничением памяти
|
||||
4. Регулярно очищайте старые записи из БД
|
||||
|
||||
---
|
||||
|
||||
## 📞 Поддержка
|
||||
|
||||
Если у вас возникли проблемы, не описанные в этом руководстве:
|
||||
|
||||
1. Проверьте логи бота в файле или консоли
|
||||
2. Проверьте логи базы данных
|
||||
3. Убедитесь, что все зависимости установлены: `npm install`
|
||||
4. Проверьте версию Node.js: `node --version` (должна быть 18+)
|
||||
|
||||
---
|
||||
|
||||
## 📄 Лицензия
|
||||
|
||||
MIT License
|
||||
|
||||
---
|
||||
|
||||
## 🙏 Благодарности
|
||||
|
||||
Бот создан с использованием:
|
||||
- [discord.js](https://discord.js.org/) - Discord API библиотека
|
||||
- [mysql2](https://github.com/sidorares/node-mysql2) - MySQL драйвер
|
||||
- [winston](https://github.com/winstonjs/winston) - Система логирования
|
||||
- [js-yaml](https://github.com/nodeca/js-yaml) - Парсер YAML
|
||||
|
||||
---
|
||||
|
||||
**Версия**: 1.0.0
|
||||
**Последнее обновление**: 2024
|
||||
|
||||
|
||||
Reference in New Issue
Block a user