我无法发送照片,这里的代码有错误:
if command.startswith('/rank '):
rank(msg)
def rank(msg):
chat_id = msg['chat']['id']
command = msg['text']
user = msg['text'][6:]
graphUrl = 'https://www.website.com/servlet/graph/' + user + '-in_US.png'
print graphUrl
theGraph = urllib2.urlopen(graphUrl)
bot.sendPhoto(chat_id, theGraph, caption=('rank graph for ' + user + '.'))
错误:2016-12-30T17:17:50.803142 + 00:00 app [worker.1]:TelegramError: (u'Bad请求:照片的扩展名不受支持。使用.jpg中的一个, .jpeg,#.gif,.png,.tif或.bmp',400,{u'ok':False, u'description':u'Bad请求:照片的扩展名不受支持。使用 .jpg,.jpeg,#.gif,.png,.tif或.bmp'之一,u'error_code':400})
我的档案是.png
,我哪里错了?
如果我用sendPhoto()
替换sendDocument()
,一切都很完美,但我的项目需要照片。
如果我直接将graphUrl
放在sendPhoto中,而不使用urllib2,则它不起作用(错误400 - 错误请求)。
答案 0 :(得分:1)
我认为您必须为Telegram服务器指定文件扩展名才能将其识别为图像。例如:
url = urllib2.urlopen('http://i.imgur.com/35HSRQ6.png')
bot.sendPhoto(chat_id, ('abc.png', url))
只要扩展名与图像类型匹配,文件名无关紧要。
从本地磁盘上传图像时不必这样做,因为可以从文件系统中猜出文件扩展名。但是,您必须为URL执行此操作,因为无法以其他方式获取文件扩展名。