Пришлите ссылку на публикацию, выберите качество или формат и получите файл в том же чате.
| Формат | Возможности |
|---|---|
| Видео | Выбор разрешения или лучшего качества |
| Аудио | Извлечение 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 |
Общая статистика |
Последние три команды доступны администраторам в личном чате.
Рассылка: пришлите пост → проверьте его точную копию → подтвердите отправку. До отправки пост можно заменить, во время — остановить рассылку. Отчёт отдельно показывает ошибки и сообщения без подтверждения Telegram.
Нужны: Python 3.11+, FFmpeg и ffprobe.
git clone https://github.com/ReNothingg/ReSave.git
cd ReSave
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
cp .env.example .envВставьте токен бота в .env:
BOT_TOKEN=ваш_токенЗапустите:
.venv/bin/python main.pyВсе параметры — в .env.example. Относительные пути считаются от корня проекта.
| Параметр | Назначение |
|---|---|
ADMIN_IDS |
ID администраторов через запятую |
MAX_CONCURRENT_DOWNLOADS |
Параллельные загрузки · по умолчанию 2 |
MAX_TASKS_PER_USER |
Задачи одного пользователя · 10 |
MAX_PLAYLIST_ITEMS |
Видео из одного плейлиста · 25 |
MAX_FILE_SIZE |
Максимальный размер файла в байтах |
COOKIES_FILE |
Файл cookies для публикаций с ограниченным доступом |
Лимит очереди пользователя действует и на плейлисты. Фактический размер файла ограничен выбранным Bot API.
Большие файлы: локальный Bot API
Для файлов больше облачного лимита используется локальный Telegram Bot API.
Добавьте в .env:
BOT_API_BASE_URL=http://127.0.0.1:8081
BOT_API_IS_LOCAL=true
BOT_API_USE_FILE_URI=false
TELEGRAM_API_ID=ваш_api_id
TELEGRAM_API_HASH=ваш_api_hash
MAX_FILE_SIZE=2097152000
SEND_AS_DOC_LIMIT=2097152000Запустите API через Docker, затем бота:
docker compose up -d telegram-bot-api
.venv/bin/python main.pyBOT_API_USE_FILE_URI=true нужен только при общей файловой системе бота и API. Для Docker оставьте false.
Cookies и хранение данных
- Cookies в формате Netscape —
cookies.txt. Бот использует временные копии. - Статистика —
database.db(SQLite). - Временные файлы —
temp_downloads/. - Очередь и меню хранятся в памяти: после перезапуска незавершённые запросы нужно отправить снова.
Для разработки
Оформление включено по умолчанию: RICH_MESSAGES_ENABLED=true, CUSTOM_EMOJI_ENABLED=true.
Эмодзи взяты из набора Telegram Topics и проверены как анимированные.
Для их использования нужен Premium у владельца бота либо дополнительный username с Fragment.
Если API отклоняет эмодзи, бот сохраняет Rich Messages и цветные кнопки, заменяя иконки на обычные.
Для API без Rich Messages предусмотрено HTML-оформление.
.venv/bin/python -m pip install 'ruff>=0.9,<1'
.venv/bin/python -m ruff check .
.venv/bin/python -m compileall -q main.py config.py src| Путь | Ответственность |
|---|---|
main.py |
Запуск и сборка сервисов |
src/handlers/ |
Команды, меню и административные действия |
src/core/ |
Очередь, скачивание, обработка и отправка |
src/utils/ |
Форматирование текста и работа с файлами |
Основные зависимости закреплены в requirements.txt. После их обновления проверяйте скачивание с нужных сайтов.
