虽然设置了Telegram Bot API的webhook,但服务器没有响应

时间:2018-03-23 08:35:27

标签: python flask telegram-bot pythonanywhere

我在Pythonanywhere上运行此脚本。 Webhook得到了设置,但是当我尝试使用webhook_handler时,它给了我"错误请求浏览器(或代理)发送了一个请求,该服务器无法理解"。我错过了什么?

import sys
import os
import time

sys.path.append(os.path.join(os.path.abspath('.'), 'path/to/virtualenv/'))

from flask import Flask, request
import telegram

# CONFIG
TOKEN    = '<token>'
HOST     = 'username.pythonanywhere.com' # Same FQDN used when generating SSL Cert
PORT     = 8443
CERT     = "ssl_certs/cert.pem"
CERT_KEY = "ssl_certs/key.pem"

bot = telegram.Bot(TOKEN)
app = Flask(__name__)

@app.route('/')
def hello():
    return '<h1> BITCONNECT!!! </h1>'


@app.route('/' + TOKEN, methods=['POST'])
def webhook_handler():
    update = telegram.Update.de_json(request.get_json(force=True), bot) 
    bot.sendMessage(chat_id=update.message.chat.id, text='Hello, there')

    return '<h1> OK </h1>'


def setwebhook():
    bot.setWebhook(url = "https://%s/%s" % (HOST, TOKEN), certificate = open(CERT, 'rb'))


if __name__ == '__main__':
    context = (CERT, CERT_KEY)
    setwebhook()
    time.sleep(5)
    app.run(host = '0.0.0.0', port = PORT, debug = True)

这是WSGI配置文件:

import sys

# add your project directory to the sys.path
project_home = u'/home/username/project'
if project_home not in sys.path:
    sys.path = [project_home] + sys.path

# import flask app but need to call it "application" for WSGI to work
from main import app as application

0 个答案:

没有答案