我正在尝试使用 Python 在 Telegram 上制作一个简单的回声机器人,作为 hook.io 上的微服务托管。
问题:无法解析来自 Hook 对象的 POST 数据。
我在另一个机器人中尝试了这里的 JavaScript 方法,效果很好。试图在 Python 中做同样的事情,如下所示:
import requests
bottoken = 'TOKEN_GOES_HERE'
baseURL = 'https://api.telegram.org/bot'
if __name__ == '__main__':
data = {
"chat_id" : Hook['params']['message']['chat']['id'],
"text" : Hook['params']['message']['text']
}
sendURL = baseURL + bottoken + "/sendMessage"
requests.post(sendURL, json=data)
但没有得到任何回应。
更新:
我通过在 Hook['params'] 上执行 json.dumps 和 json.loads 解决了这个问题。
这是完整的代码:
import requests
import json
bottoken = 'TOKEN_GOES_HERE'
baseURL = 'http://api.telegram.org/bot'
if __name__ == '__main__':
data = json.loads(json.dumps(Hook['params']))
chat_id = data['message']['chat']['id']
sendmsg = data['message']['text']
data = { "chat_id" : chat_id, "text" : sendmsg }
sendURL = baseURL + bottoken + "/sendMessage"
payload = json.dumps(data)
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
requests.post(sendURL, data=payload, headers=headers, verify=False)