文件大小:51.2 KB尝试发送:
>>> send_img_url = 'https://api.telegram.org/botXXXXXXXXXXXXXXXXXXXXX/sendPhoto'
>>> img_name = 'C:/Users/Administrator/Downloads/WhatsApp Image 2019-05-30 at 20.54.40.jpeg'
>>> r = requests.post(send_img_url, data={'chat_id': '-351543550', 'photo': open(img_name, 'rb')})
>>> r
<Response [413]>
>>> r.reason
'Request Entity Too Large'
>>> r.content
b''
>>>
此外,我尝试一些其他的请求,如:
photo = open(('C:/Users/Administrator/Downloads/WhatsAppImage.jpeg').encode('utf-8'), 'rb')
r = requests.post(send_img_url, data={'chat_id': '-351543550', 'photo': photo})
以及:
with io.open('C:/Users/Administrator/Downloads/WhatsAppImage.jpeg', encoding='utf-8', errors='ignore') as f:
r = requests.post(send_img_url, data={'chat_id': '-351543550', 'photo': f})
最后一个选项给予下一个错误:
>>> r
<Response [400]>
>>> r.reason
'Bad Request'
3条答案
按热度按时间wixjitnu1#
你可能做错了。
正如Bot API文档所述:
使用multipart/form-data以通常通过浏览器上传文件的方式发布文件。照片最大大小为10 MB,其他文件最大大小为50 MB。
在requests lib中,通过使用
data=
关键字参数,您将使用form-encoded
类型而不是multipart/form-data
发送有效负载。试着这样提出你的要求:
P.S.:您也可以使用以下命令将
chat_id
作为form-encoded
参数发送mrfwxfqh2#
在我的例子中,Ivan Vinogradov提出的解决方案由于西里尔文文件名而不起作用,将路径改为拉丁文就解决了这个问题。
eqoofvh93#
源代码:
https://github.com/tdlib/telegram-bot-api
正式文件
https://core.telegram.org/bots/api#using-a-local-bot-api-server
您可以按照此链接https://tdlib.github.io/telegram-bot-api/build.html上的说明将其
build and install
到您的服务器基本设置:
1.从https://my.telegram.org/apps生成电报应用程序ID
1.启动服务器
./telegram-bot-api --api-id=<your-app-id> --api-hash=<your-app-hash> --verbosity=20
1.默认地址为http://127.0.0.1:8081/,端口为8081。
1.所有的官方API都可以使用这个设置,只需将地址更改为
http://127.0.0.1:8081/bot<token>/METHOD_NAME
reference:https://core.telegram.org/bots/api示例代码: