我正在使用python-telegram-bot包装器,而且我一直在尝试在Heroku adapting a pre-existing example上托管一个简单的回声电报机器人,该机器人适用于Google App Engine以及webhook guide on the wiki,但无济于事。
我似乎无法使webhook工作,并且机器人能够正确回显消息。
我似乎无法弄清楚什么是错的,所以任何有助于指出我正确方向的帮助都会非常感激!
我的尝试详述如下。
import telegram
from os import environ
from telegram.ext import Updater
from flask import Flask, request
from credentials import TOKEN, APP_URL
app = Flask(__name__)
global bot
bot = telegram.Bot(token=TOKEN)
@app.route('/' + TOKEN, methods=['POST'])
def webhook_handler():
if request.method == "POST":
# retrieve the message in JSON and then transform it to Telegram object
update = telegram.Update.de_json(request.get_json(force=True))
chat_id = update.message.chat.id
# Telegram understands UTF-8, so encode text for unicode compatibility
text = update.message.text.encode('utf-8')
# repeat the same message back (echo)
bot.sendMessage(chat_id=chat_id, text=text)
return 'ok'
if __name__ == "__main__":
PORT = int(environ.get('PORT', '5000'))
updater = Updater(TOKEN)
# add handlers
updater.start_webhook(listen="0.0.0.0", port=PORT, url_path=TOKEN)
updater.bot.setWebhook(APP_URL + TOKEN)
updater.idle()
app.run(environ.get('PORT'))
答案 0 :(得分:4)
https://github.com/python-telegram-bot/python-telegram-bot/wiki/Webhooks#heroku
简而言之,不要试图使用烧瓶。使用内置的网络服务器。