【发布时间】:2020-04-10 12:29:07
【问题描述】:
上下文
我目前正在关注this tutorial。 - Telegram Bot 与 Python 教程 #3:创建 Bot 和 Webhook |项目
第一步
我已经使用以下 python 代码设置了一个 Flask 服务器:
from flask import Flask
from flask import request
from flask import Response
import json
app = Flask(__name__)
@app.route('/', methods=['POST', 'GET'])
def index():
if request.method == 'POST':
print(request)
message = request.json()
with open('telegram_request.json', 'w', encoding='utf-8') as filename:
json.dump(message, filename, ensure_ascii=False, indent=4)
# prevents telegram from spamming
return Response('Ok', status=200)
else:
return """
<h1> Flask Server </h1>
<h2> Up and running </h2>
"""
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8443)
第二步
我在路由器中端口转发端口 8443 以使服务器对外界可见(教程中的隧道步骤)。
域名“myprivatedomain.com:8443”现在重定向/引用已设置的烧瓶服务器。
第三步
我正确设置了Telegram-API webhook,从 Telegram 获得以下响应代码:
{"ok":true,"result":true,"description":"Webhook 已设置"}
现在
之前在 Telegram 聊天中发送消息:没有错误。
在聊天中发送消息后,弹出如下错误:
代码 400,消息错误 HTTP/0.9 请求类型 ('RANDOM BYTE VALUES like \x00\x03')
代码 400,消息错误请求语法 ('RANDOM BYTE VALUES like \x00\x03')
代码 400,消息错误请求版本 ('RANDOM BYTE VALUES like \x00\x03')
我想要什么
根据教程,您可以在 Telegram 发出 POST 请求时编写一个 .json 文件(参见示例:here)。我想保存 Telegram webhook 提供的消息对象(如教程视频中所示)。使用 webhook 获取更新比不断查询 getUpdates() 方法要好;该方法也返回旧消息。
我尝试了什么
我已经尝试添加:
ssl_context='adhoc'
到
app.run(debug=True, host='0.0.0.0', port=8443)
建立 HTTPS 连接。
使用此 ssl_context 时,也无法加载主页..
首选输出
当用户在 Telegram 聊天中发送消息时 --> Python 保存消息对象的 .json 文件。
【问题讨论】:
标签: python flask bad-request