【问题标题】:How to answer on Telegram inline query?如何回答 Telegram 内联查询?
【发布时间】:2017-04-17 09:59:06
【问题描述】:

我的 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')。当我输入内联查询时,我会在控制台中看到此消息。但是对请求的响应并没有到达 Telegram。这意味着请求处理程序工作正常,但在响应函数中出现问题。你能告诉我我的错误是什么吗?

UPD:我在 results 字典中添加了 "input _message_content" 键,但它没有解决我的问题。

【问题讨论】:

    标签: telegram telegram-bot python-telegram-bot


    【解决方案1】:

    你的results没什么问题,应该是这个格式:

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

    更多详情可以看官方reference

    【讨论】:

    • 你说得对,我修好了,但还是不行。
    • 我无法确认此问题与请求正文或您的查询有关。我认为您应该查看 Telegram 错误输出以了解详细信息。
    • 好的,我从服务器得到这个答案:响应 [400]。
    • 没有。我从控制台得到它,我在 answer func 中使用了这个代码:r = requests.post(sendurl, data) r.json() print(r)。对吗?
    猜你喜欢
    • 1970-01-01
    • 2019-04-27
    • 2023-01-30
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多