如何获得Telegram InlineQuery对象?

时间:2017-04-13 08:04:29

标签: python telegram-bot

我想教我的机器人响应内联查询。问题是要发送对内联查询的响应,您需要具有某些请求参数(至少是id和查询文本)。但是如何获得这些参数呢?在将answerInlineQuery发送到Telegram服务器之前,我从哪里获得它们?

文档中未涉及此问题。我正在尝试从getUpdate-request的结果中提取这些参数:

def getUpdates (self):
        getup = URL + 'getUpdates'
        ...
        #some valid code to get update-JSON
        return url

def answerInlineQuery(self, inline_query_id, results):
        send = url + 'answerInlineQuery?inline_query_id=' + str(inline_query_id) + '&&' + 'results=' + results
        requests.get(send)
        ....

if (url != None) and ('inline_query' in url):
            inid = url['result'][0]['inline_query']['id']
            bot.set_inline_upd_id = int(inid) 
            fromid = url['result'][0]['inline_query']['fromid']
            query = url['result'][0]['inline_query']['query']
            if textMessage == '/modemscount':   
                r = requests.get('http://' + serverAddress + ':' + serverPort + '/api/v0/modem/')
                modemsDict = r.json() 
                message_text = str(len(modemsDict['modems']))
                inline_query_id = bot.inline_upd_id 
                results = json.dumps({'type':article, 'input_message_content':{'message_text':message_text}, 'id':1, 'title':count})
                bot.answerInlineQuery(inline_query_id, results)

但是这段代码不起作用。没有错误消息。就在用户编写内联查询时,机器人根本没有反应。

2 个答案:

答案 0 :(得分:0)

您可以通过与get updates相同的方式获取这些queryid。因此,请确保您的getUpdates确实有效。也许您设置了一个webhook并且getUpdates不再返回更新?在这种情况下,请删除webhook。

答案 1 :(得分:0)

解决方案:创建一个新的类似机器人,只替换令牌。 InlineQuery-mod将正常工作。 (这是我的第一个机器人。也许,这解释了它的异常行为。)