2017-04-17 7 views
1

My Telegramボットは、インラインクエリに対する回答を得られません。テレグラムのインラインクエリに答えるには?

urlid = url['result'][0]['inline_query']['id'] 
      str(urlid) 
      fromid = url['result'][0]['inline_query']['from']['id'] 
      str(fromid) 
      query = url['result'][0]['inline_query']['query'] 
      if query == '/getinfo': 
       r = requests.get('http://' + address + ':' + port + '/') 
       D = r.json() 
       message_text = str(len(D['info'])) 
       results = [{'type': 'article', 'message_text': message_text, 'id': '1', 'title': 'count'}] 
       json.dumps(results) 
       data = {'inline_query_id': urlid, 'results': results} 
       bot.answerInlineQuery(data) 

そして、これは、応答機能である:ここで

はインラインクエリを処理するコードの一部である

def answerInlineQuery(self, data): 
     global url 
     print('ok, we in answer func') 
     sendurl = url + 'answerInlineQuery' 
     requests.post(sendurl, data) 

あなたが見ることができるように、ここでマーカーを機能させる遷移がある:print('ok, we in answer func') 。また、インラインクエリを入力すると、コンソールにこのメッセージが表示されます。しかし、その要求に対する応答は電報には出ません。つまり、リクエストハンドラは正常に動作していますが、応答関数では間違っています。私の間違いを教えてください。

UPD:results dictに"input _message_content"というキーを追加しましたが、私の問題は解決しませんでした。

{"id": "1", "input _message_content": {"message_text": "Hello"}} 

あなたはより多くの詳細については、公式referenceを見ることができます:あなたのresults

答えて

0

は少し問題がある、この形式でなければなりません。

+0

あなたは正しいですが、私はそれを修正しましたが、とにかく動作しません。 – ErvingGoffman

+0

@ErvingGoffmanあなたはrequests.getなしでこのメソッドを試すことができますか? – Sean

+0

この問題はリクエストの本文やクエリに関するものではありません。私はあなたが詳細についてはテレグラムのエラー出力を参照する必要がありますと思う。 – Sean

関連する問題