基于python-telegram-bot库的机器人如何获取用户上传的视频文件?
实现视频上传功能的解决方案
步骤1:编写视频处理函数
和你处理照片的逻辑一致,只需将处理对象从photo替换为video即可:
async def video_data(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int: user = update.message.from_user # 获取视频文件(视频为单个文件,无需像照片那样取数组最后一项) video_file = await update.message.video.get_file() # 下载到本地,建议加入用户ID避免文件覆盖 await video_file.download_to_drive(f"user_{user.id}_video.mp4") await update.message.reply_text("视频已成功上传")
步骤2:更新消息处理器
在你的FILE处理器列表中,新增针对视频的MessageHandler:
FILE: [ MessageHandler(filters.PHOTO & ~filters.COMMAND, file_data), # 新增视频处理逻辑的处理器 MessageHandler(filters.VIDEO & ~filters.COMMAND, video_data), CommandHandler("skip", skip_file), CommandHandler("cancel", cancel) ],
补充说明
- 视频文件直接通过
update.message.video获取,不同于照片的多尺寸数组结构 - 文件名加入用户ID可以避免多个用户上传的视频互相覆盖
- 如果需要处理动图类视频(如Telegram的
animation类型),可以添加filters.ANIMATION对应的处理器,逻辑与上述视频处理一致
内容的提问来源于stack exchange,提问作者runor runor
相关产品推荐
相关产品推荐

