Discord бот для автоматического скачивания всех файлов из форум-каналов Discord сервера.
⚡ Написан на TypeScript для строгой типизации и лучшего DX
- ✅ Скачивает все файлы из всех тем форум-канала (включая архивные)
- ✅ Поддержка активных и архивных тредов (публичных и приватных)
- ✅ Автоматическая пагинация для больших объемов данных
- ✅ Защита от rate limits Discord API
- ✅ Ограничение одновременных загрузок
- ✅ Подробная статистика и логи процесса
- ✅ Пропуск уже скачанных файлов
- ✅ Безопасная обработка имен файлов
- ✅ Потоковое скачивание для экономии памяти
- Node.js 18.x или выше (для поддержки ESM)
- TypeScript 5.x
- Discord бот с необходимыми правами
- Доступ к форум-каналу для скачивания
-
Клонируйте репозиторий и установите зависимости: ```bash git clone cd discord-forum-downloader npm install ```
-
Создайте Discord приложение и бота:
- Перейдите на Discord Developer Portal
- Создайте новое приложение
- В разделе "Bot" создайте бота и скопируйте токен
- В разделе "Bot" включите следующие Privileged Gateway Intents:
- ✅ Message Content Intent (критически важно!)
- В разделе "OAuth2 > URL Generator" выберите scopes:
bot - В Bot Permissions выберите:
- ✅ View Channels
- ✅ Read Message History
-
Настройте конфигурацию: ```bash cp .env.example .env ```
Отредактируйте
.envфайл: ```env DISCORD_TOKEN=YOUR_BOT_TOKEN_HERE FORUM_CHANNEL_ID=123456789012345678 DOWNLOAD_DIR=downloads MAX_CONCURRENT_DOWNLOADS=5 REQUEST_DELAY=1000 ``` -
Получите ID форум-канала:
- Включите режим разработчика в Discord (User Settings > Advanced > Developer Mode)
- Правый клик на форум-канале → "Copy ID"
- Вставьте ID в переменную
FORUM_CHANNEL_ID
```bash
npm install
npm start
npm run dev
npm run build
npm run clean ```
Файлы сохраняются в следующей структуре: ``` downloads/ ├── 123456789_thread-name-1/ │ ├── messageID_attachmentID_filename.jpg │ └── messageID_attachmentID_document.pdf ├── 987654321_thread-name-2/ │ └── messageID_attachmentID_image.png └── ... ```
| Переменная | Описание | По умолчанию |
|---|---|---|
DISCORD_TOKEN |
Токен Discord бота | - |
FORUM_CHANNEL_ID |
ID форум-канала для скачивания | - |
DOWNLOAD_DIR |
Папка для сохранения файлов | downloads |
MAX_CONCURRENT_DOWNLOADS |
Максимум одновременных загрузок | 5 |
REQUEST_DELAY |
Задержка между запросами (мс) | 1000 |
Для корректной работы бот должен иметь следующие права:
- ✅ View Channel - просмотр канала
- ✅ Read Message History - чтение истории сообщений
- ✅ Manage Threads - управление тредами
- ✅ Guilds - доступ к гильдиям и каналам
- ✅ Guild Messages - доступ к сообщениям
- ✅ Message Content Intent - доступ к содержимому (критично!)
- Проверьте права бота в канале
- Убедитесь, что бот добавлен на сервер с правильными разрешениями
- Включите Message Content Intent в Developer Portal
- Добавьте
MessageContentв intents в коде
- Увеличьте
REQUEST_DELAYв конфигурации - Уменьшите
MAX_CONCURRENT_DOWNLOADS
- Добавьте боту право Manage Threads
- Убедитесь, что бот имеет доступ к приватным тредам
Бот выводит подробную информацию о процессе:
- 📋 Количество найденных тредов
- 📨 Количество обработанных сообщений в каждом треде
- 📎 Количество найденных вложений
- ✅ Количество скачанных файлов
- ⏭️ Количество пропущенных файлов (уже скачанных)
- ❌ Количество ошибок
- ✅ Не логируйте токен бота в консоль
- ✅ Добавьте
.envв.gitignore - ✅ Используйте отдельного бота только для этой задачи
- ✅ Ограничивайте права бота минимально необходимыми
- Максимальный размер файла для скачивания: согласно лимитам Discord (обычно 8MB для обычных пользователей, 100MB для Nitro)
- Скорость скачивания ограничена Discord Rate Limits
- Приватные архивные треды требуют дополнительных прав
MIT License - см. файл LICENSE для деталей.