Перейти к содержимому

Собираем 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 загрузок, чтобы протестировать бота до выбора тарифа.

Похожие руководства