Собираем Telegram-бота для скачивания с YouTube
В этом руководстве мы соберём рабочего Telegram-бота, который превращает любую ссылку YouTube в видео или MP3 — одним вызовом API вместо self-hosted-стека yt-dlp.
Что мы соберём
Бот, где пользователь отправляет ссылку YouTube и получает видео обратно. Не нужно обслуживать yt-dlp, нет прокси и своего Bot API-сервера — Tunelio возвращает прямую ссылку, а Telegram забирает файл по ней.
Что понадобится
- Токен Telegram-бота от @BotFather.
- API-ключ Tunelio (регистрация через Telegram или email — 100 бесплатных кредитов, без карты).
- Python 3.10+ с установленными python-telegram-bot и requests.
Бот
Задайте BOT_TOKEN и TUNELIO_KEY как переменные окружения и запустите это. Каждое текстовое сообщение считается URL, отправляется в GET /create, а полученная ссылка сразу передаётся в Telegram:
import os, requests
from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, filters, ContextTypes
TUNELIO = {"Authorization": f"Bearer {os.environ['TUNELIO_KEY']}"}
async def handle(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
url = update.message.text.strip()
r = requests.get(
"https://tunelio.dev/create",
params={"url": url, "quality": "720p"},
headers=TUNELIO,
).json()
if r.get("status") != "ok":
await update.message.reply_text("Could not download that link.")
return
await update.message.reply_video(r["url"], caption=r["filename"])
app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle))
app.run_polling()Отправка аудио (MP3)
Нужен MP3-бот? Запросите quality=mp3 и ответьте аудио — остальное идентично:
r = requests.get(
"https://tunelio.dev/create",
params={"url": url, "quality": "mp3"},
headers=TUNELIO,
).json()
await update.message.reply_audio(r["url"], title=r["filename"])Чем это лучше бота на yt-dlp
- Нет стены 50 МБ: вы отправляете URL и обходите self-hosted Bot API-сервер, который нужен большинству yt-dlp-ботов для больших файлов.
- Нет обслуживания: прокси, PO-токены и обновления — на сервере.
- Продолжает работать: не нужно просыпаться из-за ночной поломки yt-dlp.
Дальнейшие шаги
Это готовый бот. Прочитайте справочник API про /info (размеры и форматы заранее) и обработку ошибок, затем возьмите бесплатные кредиты и запускайте.
Частые вопросы
Нужен ли self-hosted Telegram Bot API-сервер?
Для отправки URL — нет. reply_video с прямой ссылкой позволяет Telegram забрать файл, что обходит лимит загрузки бота 50 МБ для большинства видео.
Может ли один бот отдавать и аудио, и видео?
Да. Переключайте quality между разрешением (например, 720p) и mp3 и отвечайте reply_video или reply_audio соответственно.
На сколько скачиваний хватит бесплатных кредитов?
Каждый /create стоит 10 кредитов, значит 100 бесплатных кредитов — это около 10 загрузок, чтобы протестировать бота до выбора тарифа.