如何通过Telegram Bot发送本地存储的图片文件?
你当前的调用方式无法实现本地图片发送,原因如下:
Telegram Bot的sendPhoto接口,当你以GET请求传参的形式传入photo字段时,仅支持传入公网可访问的HTTP/HTTPS链接,Telegram服务器会主动拉取该链接的资源完成发送;而你传入的是本地磁盘路径,Telegram服务器无法访问你本地设备的文件,因此调用失败。
正确的实现方案如下:
- 将请求方式改为POST,
Content-Type设置为multipart/form-data - 不将本地路径拼接到URL参数中,而是将本地图片作为表单附件上传,表单字段名为
photo,同时将chat_id也作为表单字段提交
以Python的requests库为例,参考代码如下:
import requests # 替换为你自己的实际参数 BOT_TOKEN = "你的Bot令牌" CHAT_ID = "目标聊天ID" LOCAL_IMG_PATH = "C:/Users/LENOVO/Pictures/tempexcel.JPG" api_url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendPhoto" payload = {"chat_id": CHAT_ID} file = {"photo": open(LOCAL_IMG_PATH, "rb")} resp = requests.post(api_url, data=payload, files=file) print(resp.json())
注意事项:
- 单张照片类图片最大支持20MB,其他类型图片最大支持10MB,超出大小限制需要改用
sendDocument接口发送 - 确保代码运行环境对指定的本地图片路径有读取权限
内容的提问来源于stack exchange,提问作者user10823899
相关产品推荐
相关产品推荐

