我有一个电报机器人(用python开发),我想从我计算机上的图像中发送/上传照片。
所以我应该通过多部分表单数据来完成。
但我不知道怎么做。我也没有在互联网和电报文件上找到有用的资料。
我试图通过以下代码来做到这一点。但这是错误的
data = {'chat_id', chat_id}
files = {'photo': open("./saved/{}.jpg".format(user_id), 'rb')}
status = requests.post("https://api.telegram.org/bot<TOKEN>/sendPhoto",data=data, files=files)
任何人都可以帮助我吗?
答案 0 :(得分:3)
试试这行代码
status = requests.post("https://api.telegram.org/bot<TOKEN>/sendPhoto?chat_id=" + data['chat_id'], files=files)
答案 1 :(得分:2)
您需要在网址中传递chat_id
参数:
files = {'photo': open('./saved/{}.jpg'.format(user_id), 'rb')}
status = requests.post('https://api.telegram.org/bot<TOKEN>/sendPhoto?chat_id={}'.format(chat_id), files=files)
答案 2 :(得分:2)
从 Delimitry 和 Pyae Hlian Moe 来看,这两个答案都是正确的,但都不能解决您提供的代码的实际问题。
问题在于data
被定义为:
data = {'chat_id', chat_id}
这是具有两个值的集合(不是字典):字符串'chat_id'和chat_id
的内容,而不是
data = {'chat_id' : chat_id}
这是一个词典,带有关键字:字符串'chat_id'和存储在chat_id
中的相应值。
chat_id
定义为url的一部分,但是类似地,您的原始代码也可以正常工作-将数据和文件定义为requests.post()
的参数-只要data
和files
变量是字典。