You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python向Telegram频道发送视频?现有代码运行失败求解决

问题排查及修正方案

错误原因梳理

  • 接口路径不完整:Telegram Bot API调用对应方法需要在基础路径后追加方法名,你当前只拼接了bot和token,没有加sendVideo或者sendDocument方法路径,请求地址本身无效。
  • 参数传递逻辑错误:同时传json和files参数会导致请求格式冲突,上传文件时需要用data参数传递普通表单字段,不能用json参数;且你定义的chat_id值为元组,格式错误,只需传频道ID字符串即可。
  • MIME类型配置错误:MP4视频文件的正确MIME类型为video/mp4,填成video会导致接口识别文件类型失败。
  • 定义的desc参数未使用:发送视频时可以通过caption字段传递视频描述,对应你代码里的desc参数。
  • 未做文件流安全处理:直接用open打开文件没有手动关闭,容易出现文件句柄泄漏。

前置确认项

运行代码前先确认两个前提:

  1. 你的机器人已经被设为频道管理员,且拥有「发送消息」权限
  2. 待发送的{title}.mp4文件和脚本在同一目录下,文件大小不超过50MB(公共Bot API限制最大50MB文件上传,超过需要部署本地Bot API服务)
修正后的可运行代码
import requests

def upload_video(title, desc):
    bot_token = '替换为你自己的bot token'
    bot_chatID = '@PinkPanthersShow'
    # 拼接完整的sendVideo接口路径,专门用于发送视频,可直接在频道内显示预览
    api_url = f'https://api.telegram.org/bot{bot_token}/sendVideo'
    
    # 普通表单参数,不用json格式传递
    data = {
        'chat_id': bot_chatID,
        'caption': desc
    }
    
    # 正确配置视频文件参数
    with open(f'{title}.mp4', 'rb') as f:
        files = {
            'video': (f'{title}.mp4', f, 'video/mp4')
        }
        r = requests.post(api_url, data=data, files=files)
    
    print(r.json())
    return r.json()

内容的提问来源于stack exchange,提问作者SMARTNIMA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:45:03