搭建一个下载 YouTube 视频的 Telegram 机器人
本指南搭建一个可用的 Telegram 机器人,把任意 YouTube 链接变成视频或 MP3——用一次 API 调用取代自建的 yt-dlp 技术栈。
你将搭建什么
一个机器人:用户发送 YouTube 链接,就能拿回视频。无需维护 yt-dlp、无需代理、无需自建 Bot API 服务器——Tunelio 返回直链,Telegram 直接从那里获取文件。
前置条件
- 来自 @BotFather 的 Telegram 机器人 token。
- 一个 Tunelio API key(用 Telegram 或邮箱注册——100 个免费额度,无需信用卡)。
- 已安装 python-telegram-bot 和 requests 的 Python 3.10+。
机器人代码
将 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 并用 audio 回复——其余完全相同:
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 MB 的墙:你发送 URL,因此跳过了大多数 yt-dlp 机器人处理大文件所需的自建 Bot API 服务器。
- 无需维护:代理、PO token 和更新都在服务端处理。
- 持续可用:不必因 yt-dlp 每晚失效而被叫醒。
后续步骤
这就是一个完整的机器人。阅读 API 参考中的 /info(预先获取大小和格式)与错误处理,然后领取免费额度并上线。
Frequently asked questions
我需要自建 Telegram Bot API 服务器吗?
发送 URL 的话,不需要。用直链调用 reply_video 让 Telegram 去获取文件,对大多数视频都能绕过 50 MB 的机器人上传上限。
同一个机器人能同时提供音频和视频吗?
可以。在分辨率(如 720p)和 mp3 之间切换 quality,并相应地用 reply_video 或 reply_audio 回复。
免费额度够下载多少次?
每次 /create 花费 10 个额度,因此 100 个免费额度约为 10 次下载,足够在选择套餐前测试机器人。