2017-01-07 12 views
1

のために動作しません、ここでエラーとコード:sendPhotoは()私は写真を送信することはできません私のボット

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 + '.')) 

Error: 2016-12-30T17:17:50.803142+00:00 app[worker.1]: TelegramError: (u'Bad Request: Photo has unsupported extension. Use one of .jpg, .jpeg, # .gif, .png, .tif or .bmp', 400, {u'ok': False, u'description': u'Bad Request: Photo has unsupported extension. Use one of .jpg, .jpeg, # .gif, .png, .tif or .bmp', u'error_code': 400})

私のファイルには、私は間違っ.png、ありますか? sendPhoto()sendDocument()に置き換えても、すべて正常に動作しますが、プロジェクトで写真が必要です。 urllib2を使わずに直接graphUrlをsendPhotoに置くと、動作しません(エラー400 - 不正リクエスト)。

答えて

1

テレグラムサーバが画像として認識するためには、ファイル拡張子を指定する必要があると思います。例:

url = urllib2.urlopen('http://i.imgur.com/35HSRQ6.png') 
bot.sendPhoto(chat_id, ('abc.png', url)) 

拡張子が画像の種類と一致する限り、ファイル名は関係ありません。

ファイル拡張子がファイルシステムから推測できるため、ローカルディスクから画像をアップロードするときに、これを行う必要はありません。ただし、ファイル拡張子を取得できないため、URLに対してこの操作を行う必要があります。

+0

正常に機能します。ありがとう、Telepotは素晴らしいです! :) – haveswing

関連する問題