6

我正在使用 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'))
4

1 回答 1

5

在 wiki 中,您会找到最简单的示例。

https://github.com/python-telegram-bot/python-telegram-bot/wiki/Webhooks#heroku

总之,不要尝试使用flask。使用内置的网络服务器。

于 2017-01-16T23:28:11.280 回答