在Telegram机器人开发中,发送视频是常见的需求。除了上传本地文件,你还可以通过URL直接发送网络视频,无需先将文件下载到服务器。这种方式特别适合分享已有的视频链接,例如网络教程、宣传片或用户上传的内容。本文将深入讲解Telegram Bot API中通过URL发送网络视频的方法,并提供可运行的代码示例。
Telegram Bot API 发送视频的两种方式
Telegram机器人的sendVideo方法支持两种视频来源:
- 上传本地文件:通过multipart/form-data将视频文件上传至Telegram服务器,适用于小体积或需要即时发送的文件。
- 通过URL发送:直接传递一个视频文件的公开URL,Telegram服务器会自行下载并发送给用户。本文重点讨论这种方式。
通过URL发送视频的API参数详解
sendVideo方法的关键参数如下:
chat_id:必填,目标聊天(用户、群组或频道)的唯一标识。video:必填,可以是一个有效的视频文件ID,也可以是HTTP/HTTPS协议的URL。当使用URL时,Telegram会异步下载视频。caption(可选):视频说明,支持最多1024个字符。parse_mode(可选):实体解析模式,如HTML或MarkdownV2,可让说明文字支持富文本。thumb(可选):缩略图,可以是文件ID或URL,用于视频封面。width和height(可选):视频尺寸,用于客户端预览。duration(可选):视频时长(秒)。
注意:video参数如果传入URL,必须是一个直接可访问的媒体文件链接,不能是包含网页的普通页面地址。例如,YouTube视频页面不适用,必须使用视频文件的直链。
实践:使用Python(python-telegram-bot)发送URL视频
以下示例使用python-telegram-bot库(v20.x)演示如何通过URL发送视频。
1. 安装依赖
pip install python-telegram-bot
2. 编写代码
import asyncio
from telegram import Bot
async def send_network_video():
# 请替换为你的机器人Token
bot = Bot(token="YOUR_BOT_TOKEN")
# 替换为目标聊天ID(用户ID、群组ID或频道ID)
chat_id = "YOUR_CHAT_ID"
# 视频文件的直接URL
video_url = "https://example.com/path/to/video.mp4"
# 发送视频
message = await bot.send_video(
chat_id=chat_id,
video=video_url,
caption="这是一段来自URL的网络视频",
parse_mode="HTML",
duration=60,
width=1280,
height=720
)
print(f"视频已发送,消息ID:{message.message_id}")
if __name__ == "__main__":
asyncio.run(send_network_video())
运行脚本后,机器人就会将指定URL的视频发送到目标聊天。
使用requests直接调用Bot API
如果你不想依赖高级库,也可以使用类似requests的HTTP客户端直接调用API:
import requests
TOKEN = "YOUR_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID"
video_url = "https://example.com/video.mp4"
api_url = f"https://api.telegram.org/bot/sendVideo"
payload = {
"chat_id": chat_id,
"video": video_url,
"caption": "从URL发送的视频"
}
response = requests.post(api_url, data=payload)
print(response.json())
返回结果中的ok字段为true表示发送成功。
注意事项与常见问题
1. URL必须是可公开访问的直接链接
Telegram服务器需要能够直接从该URL下载文件,因此URL不能要求登录、不能有IP限制,且必须支持HTTP/HTTPS协议。
2. 视频大小限制
通过URL发送的视频文件最大为50MB。若超过此限制,建议先将文件下载到本地,然后通过sendVideo的本地文件方式上传——本地上传支持最大2GB(需提前分片)。
3. 视频格式支持
Telegram通常接受MP4、MOV等常见格式,但建议使用H.264编码的MP4文件,兼容性最佳。Telegram可能会对不兼容的格式进行转码。
4. 超时与性能
如果视频源服务器响应慢,Telegram下载可能超时。建议选用稳定高速的CDN链接,并合理设置请求超时。
进阶技巧:增强视频消息的实用性
除了基础发送功能,你还可以结合其他API让机器人更强大:
- 设置缩略图:通过
thumb参数传递缩略图URL,提升消息美观度。 - 添加内联键盘:配合
InlineKeyboardMarkup,在视频下方显示“打开源网页”等按钮。 - 缓存消息ID:高频率发送同一视频时,可先发送一次,再使用
sendVideo的video参数传入已有的文件ID(从返回结果中获取),避免重复下载流量。
总结
通过URL发送网络视频是Telegram机器人实现媒体分发的高效方式。只需一个可访问的直链,配合sendVideo接口,你就能随时随地推送视频内容。开发中注意URL的稳定性、大小限制和格式兼容性,结合进阶技巧,可以让机器人体验更加完善。希望本文能帮助你在机器人开发之路上一帆风顺!