2017-04-17 61 views
1

我的電報機器人無法獲得內嵌查詢的答案。如何回答電報內嵌查詢?

下面是一些處理嵌入式查詢代碼:

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:我添加了"input _message_content"results字典,但它沒有解決我的問題。

回答

0

results沒有什麼問題,它的格式應該是:

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

你可以看到官方reference瞭解更多詳情。

+0

你說得對,我修正了它,但它無法正常工作。 – ErvingGoffman

+0

@ErvingGoffman你可以試試這個方法沒有requests.get? – Sean

+0

我無法確認此問題是關於請求正文還是您的查詢。我想你應該看到電報錯誤輸出的細節。 – Sean