No description
  • Python 83.2%
  • JavaScript 10.4%
  • CSS 3.8%
  • HTML 2.6%
Find a file
2026-08-16 13:41:00 +03:00
make_streams force update button 2026-07-20 19:37:11 +03:00
web remove text info 2026-07-20 19:42:51 +03:00
.env.example refactoring 2026-07-11 20:14:59 +03:00
.gitignore add track system 2026-07-09 00:08:02 +03:00
bot3.py refactoring 2026-07-11 20:14:59 +03:00
channel_monitor.py добавлено отслеживание нескольких файлов в одном сообщении 2026-08-16 13:05:23 +03:00
env_config.py add .env 2026-02-26 18:00:11 +03:00
ip-check-formatted.txt check max ips 2026-03-19 00:49:02 +03:00
README.md update readme 2026-08-16 13:07:19 +03:00
test_channel_monitor.py добавлено отслеживание нескольких файлов в одном сообщении 2026-08-16 13:05:23 +03:00
vpndetect.txt check max ips 2026-03-19 00:49:02 +03:00

Telegram File Upload Bot (bot3.py)

Актуальная версия бота находится в файле bot3.py. Логика мониторинга Telegram-каналов и веб-панели вынесена в channel_monitor.py.

Что умеет bot3.py

  • Навигация по папкам на сервере из Telegram
  • Создание папок
  • Загрузка файлов из Telegram в выбранную директорию
  • Загрузка файлов по URL
  • Добавление торрентов в TorrServer:
    • по magnet-ссылке (/torr)
    • по .torrent файлу (/torr_file)
  • Запуск генерации .strm через команду /parse_streams

Команды бота

  • /start — открыть меню навигации
  • /check — проверка доступности
  • /torr — добавить magnet (или перейти в режим ожидания magnet-ссылки)
  • /torr_file — добавить .torrent файл
  • /cancel_torr — отменить ожидание magnet/файла
  • /parse_streams — запустить локальный скрипт генерации .strm
  • /check_release_diff — вручную проверить latest release GitHub и сравнить с локальными файлами
  • /monitor — показать адрес веб-панели мониторинга Telegram-каналов

Скрипт для генерации стримов расположен в проекте:

  • make_streams/make_strm_from_torrserver3.py

Запуск генератора через веб страницу

make_streams/app.py — небольшая Flask-панель с кнопкой запуска генератора .strm. Она используется как отдельная веб интеграция.

Перед запуском проверьте константу SCRIPT в make_streams/app.py: она должна указывать на фактический путь к make_strm_from_torrserver3.py.

pip install flask
python3 make_streams/app.py

Панель доступна на http://<server>:8088.

Зависимости

Python 3.10+ (рекомендуется 3.12) и пакеты:

  • telethon
  • requests
  • flask — только для панели запуска через Homarr

Пример установки:

python3.12 -m venv venv
source venv/bin/activate
pip install telethon requests

Настройка

Все чувствительные данные вынесены в .env.

Создайте .env на основе шаблона:

cp .env.example .env

Обязательные переменные для bot3.py:

  • API_ID, API_HASH, BOT_TOKEN
  • ALLOWED_USER_IDS
  • TORRSERVER_URL
  • BASE_DIR — список корневых папок через запятую (например: /mnt/disk/Plex/Library,/mnt/disk2/Library)
  • BASE_DIR_LABELS (опционально) — подписи кнопок для BASE_DIR в том же порядке (например: Library,Library2)

Дополнительно бот теперь умеет раз в день проверять последний GitHub Release и сравнивать его файлы с локальными файлами с теми же именами, например ip-check-formatted.txt и vpndetect.txt. Для этого доступны переменные:

  • GITHUB_RELEASE_REPO — репозиторий в формате owner/repo (по умолчанию fatyzzz/max-list)
  • GITHUB_RELEASE_ASSETS — имена файлов из latest release через запятую
  • LOCAL_RELEASE_FILES_DIR — директория, где лежат локальные файлы для сравнения
  • DAILY_RELEASE_CHECK_HOUR — час ежедневной проверки
  • DAILY_RELEASE_CHECK_MINUTE — минута ежедневной проверки

Для мониторинга Telegram-каналов доступны переменные:

  • WEB_HOST — host веб-панели (по умолчанию 0.0.0.0)
  • WEB_PORT — порт веб-панели (по умолчанию 8089)
  • CHANNEL_MONITOR_INTERVAL_SECONDS — период проверки новых сообщений (по умолчанию 300)
  • CHANNEL_MONITOR_CLIENT — клиент для чтения каналов: bot или user (по умолчанию bot)
  • CHANNEL_MONITOR_USER_SESSION — имя .session файла для пользовательской Telethon-сессии
  • CHANNEL_MONITOR_PHONE — телефон аккаунта для первого интерактивного входа user-сессии
  • CHANNEL_MONITOR_DIALOG_SEARCH_LIMIT — сколько ваших диалогов просматривать для подсказок каналов; 0 означает все диалоги
  • CHANNEL_MONITOR_RULES_FILE — JSON-файл правил мониторинга
  • CHANNEL_MONITOR_DOWNLOADED_FILE — JSON-файл message id, из которых контент уже скачан

Мониторинг каналов

После запуска откройте веб-панель на http://<server>:8089 или отправьте боту /monitor.

В панели можно:

  • выбрать канал через автодополнение или вручную ввести @username
  • задать ключевые слова для поиска в тексте/подписи сообщения
  • ограничить поиск датой начала через календарь
  • выбрать директорию сохранения внутри BASE_DIR
  • выбрать стратегию именования файлов:
    • оригинальное имя из Telegram
    • канал + дата + id сообщения
    • начало подписи + дата
    • первое найденное ключевое слово + дата
    • только id сообщения
    • порядковый номер от последнего имени (s01e02.mp4s01e03.mp4)
    • регулярное выражение по оригинальному имени файла

При добавлении правила бот сразу проходит по доступной истории канала и скачивает найденные видео. Затем он периодически проверяет новые сообщения и докачивает новые совпадения. Чтобы не скачивать повторно, бот хранит message id в CHANNEL_MONITOR_DOWNLOADED_FILE. Об успешной или неудачной загрузке бот отправляет уведомление всем пользователям из ALLOWED_USER_IDS.

Для стратегии "Регулярное выражение" панель показывает оригинальное имя первого найденного видео по выбранному каналу и ключевым словам. В поле замены поддерживаются группы вида $1, $2, например Yomi no Tsugai - ([0-9]{2}) TG(\.mp4) и s01e$1$2.

Сканирование правил и скачивание медиа выполняются последовательно: одновременно обрабатывается только одно правило, а видео ставятся в общую очередь и скачиваются по одному файлу за раз.

Ограничение Telegram: если CHANNEL_MONITOR_CLIENT=bot, мониторинг работает от bot user и Telegram запрещает ему часть методов: глобальный поиск каналов, полноценный список ваших диалогов и доступ к вашим личным подпискам. Чтобы читать всё, что доступно вашему Telegram-аккаунту, включите пользовательскую сессию:

CHANNEL_MONITOR_CLIENT=user
CHANNEL_MONITOR_USER_SESSION=file_uploader_monitor_user
CHANNEL_MONITOR_PHONE=+79990000000
CHANNEL_MONITOR_DIALOG_SEARCH_LIMIT=0

Первый запуск с CHANNEL_MONITOR_CLIENT=user выполните вручную в терминале:

source venv/bin/activate
python3.12 bot3.py

Telethon попросит код входа из Telegram и, если включена, 2FA-пароль. После успешного входа рядом с проектом появится file_uploader_monitor_user.session; дальше сервис можно запускать как обычно. BOT_TOKEN при этом всё ещё используется для команд и уведомлений, а user-сессия используется только для поиска каналов, чтения истории и скачивания медиа.

Минимум проверьте перед запуском bot3.py:

  • все пути из BASE_DIR существуют и доступны пользователю процесса
  • в LOCAL_RELEASE_FILES_DIR лежат локальные файлы с теми же именами, что и в GITHUB_RELEASE_ASSETS
  • TORRSERVER_URL доступен с сервера
  • GitHub доступен с сервера, чтобы бот мог читать latest release и скачивать assets
  • в ALLOWED_USER_IDS указан ваш Telegram user id
  • порт WEB_PORT доступен с вашего компьютера, если веб-панель открывается не локально на сервере

Запуск

source venv/bin/activate
python3.12 bot3.py

Пример systemd unit

Создайте файл /etc/systemd/system/telegram_bot.service:

[Unit]
Description=Telegram File Upload Bot
After=network.target

[Service]
User=botuser
Group=botuser
WorkingDirectory=/opt/file-uploader-bot
ExecStart=/opt/file-uploader-bot/venv/bin/python3.12 /opt/file-uploader-bot/bot3.py
Restart=always
RestartSec=5
Environment=PATH=/usr/bin:/usr/local/bin
EnvironmentFile=/opt/file-uploader-bot/.env

[Install]
WantedBy=multi-user.target

Дальше:

sudo systemctl daemon-reload
sudo systemctl enable --now telegram_bot.service
sudo systemctl status telegram_bot.service