Telegram Bot报错Bad Request:发送.ts文件失败求助
解决Telegram Bot发送.ts文件的400错误
你遇到的错误是因为直接将文件二进制数据拼在URL参数里,Telegram API不支持这种上传本地文件的方式。正确的做法是通过multipart/form-data格式提交文件,也就是把文件作为表单字段传递,而不是放在URL的query参数中。
正确代码示例
发送.ts文件作为文档(sendDocument)
from requests import post # 构造接口URL url = f"https://api.telegram.org/bot{telegram_token}/sendDocument" # 聊天ID参数 payload = {"chat_id": chat_id} # 要发送的文件,直接传递文件对象 files = {"document": open("name.ts", "rb")} # 发送请求 response = post(url, data=payload, files=files) # 打印返回结果 print(response.json())
发送.ts文件作为视频(sendVideo)
如果你的.ts文件是标准视频格式,可使用此接口;如果返回格式不支持错误,建议改用sendDocument:
from requests import post url = f"https://api.telegram.org/bot{telegram_token}/sendVideo" payload = {"chat_id": chat_id} files = {"video": open("name.ts", "rb")} response = post(url, data=payload, files=files) print(response.json())
关键说明
- 使用
files参数传递打开的文件对象,requests库会自动处理multipart/form-data编码,符合Telegram API的要求。 - 不要直接读取文件二进制内容后拼接到URL中,这会导致参数格式错误,触发400 Bad Request。
- 若sendVideo接口提示格式不支持,.ts文件可能不符合Telegram的视频编码规范,此时用sendDocument发送为普通文档即可绕过格式校验。
内容的提问来源于stack exchange,提问作者Farhad
相关产品推荐
相关产品推荐

