我正在使用 python-telegram-bot 包装器,并且我一直在尝试在 Heroku 上托管一个简单的 echo telegram bot,以适应用于 Google App Engine 的预先存在的示例以及wiki 上的 webhook 指南,但无济于事。
我似乎无法让 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'))