Пришлите ссылку на публикацию, выберите качество или формат и получите файл в том же чате.
| Формат | Возможности |
|---|---|
| Видео | Выбор разрешения или лучшего качества |
| Аудио | Извлечение MP3 |
| Фото | Обложки видео и фотоальбомы TikTok |
| GIF | Конвертация роликов до 30 секунд |
| Субтитры | Обычные и автоматически созданные |
| Плейлисты | Добавление видео в очередь с лимитом |
| Оформление | Rich Messages с превью, чек-листами и таблицами, цветные кнопки, анимированные премиум-эмодзи, эффекты сообщений |
YouTube · TikTok · Instagram · X / Twitter · Vimeo · Reddit
И другие источники, поддерживаемые yt-dlp. Доступность зависит от сайта и прав доступа к публикации.
В личном чате доступен выбор формата. В группах бот скачивает автоматически, с ориентиром на 720p.
Команды
| Команда | Действие |
|---|---|
/start |
Главное меню |
/help |
Инструкция и лимиты |
/status |
Текущие загрузки |
/cancel |
Отмена проверки ссылки и загрузок до отправки |
/stats |
Личная статистика |
/admin |
Управление ботом |
/broadcast |
Рассылка с подтверждением и остановкой |
/stats_global |
Общая статистика |
Последние три команды доступны администраторам в личном чате.
Рассылка получает всех, кто хоть раз писал боту и не заблокировал его.
- Пост любого типа: текст, медиа, стикер, голосовое или альбом до 10 файлов.
- Перед отправкой — точная копия. Можно добавить кнопки-ссылки, эффект 🎉🔥❤️👍 и отправку без звука.
- Живой прогресс: доставлено, заблокировали, скорость, сколько осталось. Паузы Telegram бот выдерживает сам.
- Прогресс хранится в базе: после перезапуска бот предложит продолжить, без повторной отправки.
- «Отозвать у всех» удаляет пост у получателей (Telegram разрешает в течение 48 часов).
- Те, кто заблокировал бота, автоматически исключаются из следующих рассылок.
Нужны: Docker с Compose. Хватает 4 ГБ RAM и ~9 ГБ диска.
git clone https://github.com/ReNothingg/ReSave.git
cd ReSave
cp .env.example .envЗаполните в .env BOT_TOKEN, ADMIN_IDS, TELEGRAM_API_ID и TELEGRAM_API_HASH
(последние два — на my.telegram.org/apps), затем:
docker compose up -d --buildПоднимутся два контейнера: бот и локальный Telegram Bot API (файлы до 2 ГБ). Оба перезапускаются сами после падения и после перезагрузки сервера.
| Действие | Команда |
|---|---|
| Логи | docker compose logs -f --tail 100 bot |
| Перезапуск | docker compose restart bot |
| Обновление кода | git pull && docker compose up -d --build |
| Загрузить cookies | docker compose cp cookies.txt bot:/data/cookies.txt |
- Каждая загрузка и проверка ссылки идёт в отдельном процессе. Зависший yt-dlp убивается по таймауту или при отсутствии прогресса и не блокирует очередь.
- yt-dlp, yt-dlp-ejs и gallery-dl обновляются сами каждые несколько часов, без перезапуска бота: сайты часто ломают старые версии.
- Если не получилось в выбранном качестве, бот пробует качество ниже и любой доступный формат.
- Перед загрузкой и во время неё проверяется свободное место на диске.
- Временные файлы чистятся каждые 30 минут.
- Если бот зависнет целиком, он сам завершится, и Docker его перезапустит.
Все параметры — в .env.example.
| Параметр | Назначение |
|---|---|
ADMIN_IDS |
ID администраторов через запятую |
MAX_CONCURRENT_DOWNLOADS |
Параллельные загрузки · 1 для сервера на 4 ГБ |
MAX_TASKS_PER_USER |
Задачи одного пользователя |
MAX_PLAYLIST_ITEMS |
Видео из одного плейлиста · 25 |
MAX_FILE_SIZE |
Максимальный размер файла в байтах |
MIN_FREE_DISK_MB |
Сколько места оставлять свободным · 512 |
DOWNLOAD_STALL_TIMEOUT_SECONDS |
Через сколько секунд без прогресса загрузка прерывается |
TOOLS_AUTO_UPDATE |
Автообновление yt-dlp и gallery-dl |
Cookies и хранение данных
- Cookies в формате Netscape —
cookies.txt. Бот использует временные копии. - Статистика —
database.db(SQLite). - Данные бота в Docker лежат в томе
bot-data(/dataвнутри контейнера). - Очередь и меню хранятся в памяти: после перезапуска незавершённые запросы нужно отправить снова.
Для разработки
Оформление включено по умолчанию: RICH_MESSAGES_ENABLED=true, CUSTOM_EMOJI_ENABLED=true.
Эмодзи взяты из набора Telegram Topics и проверены как анимированные.
Для их использования нужен Premium у владельца бота либо дополнительный username с Fragment.
Если API отклоняет эмодзи, бот сохраняет Rich Messages и цветные кнопки, заменяя иконки на обычные.
Для API без Rich Messages предусмотрено HTML-оформление.
Локальный запуск на тестовом боте (нужны uv, FFmpeg и Deno).
Создайте .env.local — его значения важнее .env, а в git он не попадает:
BOT_TOKEN=токен_тестового_бота
BOT_API_BASE_URL=
STATS_DB_PATH=local.db
TEMP_DIR=temp_localuv run --no-project --python 3.12 --with-requirements requirements.txt python main.pyuv сам скачает Python и зависимости, ничего настраивать не нужно.
Без локального Bot API лимит файла — 50 МБ, и длинные видео придут в низком качестве.
Чтобы получить лимит 2 ГБ, поднимите Bot API в Docker и добавьте в .env.local:
docker compose up -d telegram-bot-apiBOT_API_BASE_URL=http://127.0.0.1:8081
BOT_API_IS_LOCAL=true
MAX_FILE_SIZE=2097152000
SEND_AS_DOC_LIMIT=2097152000| Путь | Ответственность |
|---|---|
main.py |
Запуск и сборка сервисов |
src/handlers/ |
Команды, меню и административные действия |
src/core/ |
Очередь, скачивание, обработка и отправка |
src/core/ytdlp_worker.py |
Изолированный процесс yt-dlp |
src/utils/ |
Форматирование текста и работа с файлами |
