在Telegram机器人开发中,发送短视频和动图(GIF)是提升用户体验的重要功能。无论是制作趣味互动机器人,还是构建媒体分发工具,掌握这些技能都能让机器人更加生动。本文将带你从零开始,使用官方Bot API彻底搞定短视频与动图的发送,并提供可直接运行的Python示例。
一、短视频和动图的基础知识
Telegram Bot API支持两种类似的媒体类型:视频(Video)和动图(Animation)。它们都支持动画效果,但存在关键区别:
- 视频(sendVideo):有音轨的完整视频文件,通常为MP4格式,可以控制播放进度。
- 动图(sendAnimation):无音轨的循环动画,常见为GIF或WebP格式,体积更小,适合表达情绪。
在消息展示上,Telegram会为视频提供播放控制条,而动图则自动循环播放,更具轻量感。开发者需要根据内容特点选择合适的发送方式。
二、准备工作:创建机器人和获取Token
在编写代码前,你需要一个机器人Token:
- 在Telegram中搜索
@BotFather,发送/newbot并按提示填写名称和用户名。 - 创建成功后,BotFather会返回一个类似
123456789:ABCdefGHIjklMNOpqrsTUVwxyz的HTTP API Token。 - 妥善保管Token,它是你调用API的唯一凭证。
如果使用Python,建议安装 python-telegram-bot 库(版本需≥20.0),它封装了底层API,简化开发。
三、使用sendVideo发送短视频
发送短视频的核心是调用 sendVideo 方法。你需要提供 chat_id(目标会话ID)和 video(视频文件)。视频可通过文件ID、URL或本地文件上传。
3.1 参数详解
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| chat_id | Integer/String | 是 | 会话唯一标识 |
| video | InputFile/String | 是 | 视频文件,支持file_id、URL或multipart上传 |
| duration | Integer | 否 | 视频时长(秒) |
| width | Integer | 否 | 视频宽度 |
| height | Integer | 否 | 视频高度 |
| caption | String | 否 | 说明文字,支持HTML/Markdown |
3.2 发送视频的Python示例
from telegram import Bot
bot = Bot(token="YOUR_BOT_TOKEN")
# 使用本地文件
with open("video.mp4", "rb") as f:
bot.send_video(chat_id="@your_channel", video=f, caption="看看这个视频!")
# 使用URL
bot.send_video(chat_id="@your_channel", video="https://example.com/video.mp4", duration=10, width=1280, height=720)四、使用sendAnimation发送动图
动图与视频类似,但 sendAnimation 专门用于GIF和WebP动画。它的参数与 sendVideo 基本相同,唯一区别是媒体文件类型。
4.1 支持的文件格式
- GIF(推荐使用MPEG-4编码的GIF,更适合Telegram)
- WebP动画
- MP4视频(会被当作动图处理,但无音轨)
4.2 发送动图的Python示例
# 使用文件ID(需先通过其他方式获取)
animation_file_id = "CgADBAAD_QkAA1wGqQABK0f0XJm2WzYCA"
bot.send_animation(chat_id="@your_channel", animation=animation_file_id, caption="哈哈好可爱!")
# 使用URL
bot.send_animation(chat_id="@your_channel", animation="https://media.giphy.com/media/3oEduXdm2gPZK6Kc1C/giphy.gif")五、实战示例:结合按键与动图的互动机器人
为了让你更直观地理解,我们构建一个简单的互动机器人:当用户发送 /gif 命令时,机器人返回一个动图;发送 /video 时返回短视频。
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
TOKEN = "YOUR_BOT_TOKEN"
async def send_gif(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_animation("https://media.giphy.com/media/JIX9t2j0ZTN9S/giphy.gif", caption="给你的动图!")
async def send_video(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_video("https://www.w3schools.com/html/mov_bbb.mp4", caption="示例视频", duration=10)
def main():
app = Application.builder().token(TOKEN).build()
app.add_handler(CommandHandler("gif", send_gif))
app.add_handler(CommandHandler("video", send_video))
app.run_polling()
if __name__ == "__main__":
main()运行这段代码后,你就能在聊天中通过命令触发机器人发送动图和视频了。记得先安装依赖 pip install python-telegram-bot。
六、常见问题与排查
6.1 文件大小限制是多少?
Telegram Bot API对文件大小有严格限制:通过Bot发送的视频最大为50MB,动图(GIF/WebP)最大也是50MB。如果文件过大,需要压缩或改用URL传送。
6.2 视频无法播放/动图不显示怎么办?
- 确保视频编码为H.264(MP4),音频为AAC。
- 动图优先使用GIF或WebP格式,MP4需保证无音轨。
- 检查URL是否可公开访问,且无防盗链。
6.3 如何获取已发送文件的file_id?
每次发送后,API响应中会包含 file_id。你可以让机器人转发消息,或通过 getUpdates 方法拉取。经验做法是将file_id存储,以便后续复用。
总结
通过本文,你已经掌握了Telegram机器人发送短视频和动图的核心方法。关键要点:
- 根据内容选择
sendVideo或sendAnimation。 - 注意参数细节和文件大小限制。
- 善用Python库可大幅提升开发效率。
现在,动手创建你的第一个多媒体机器人吧!如果有更多疑问,欢迎在评论区交流。