如何在Heroku上设置python-telegram-bot webhook?

时间:2017-01-16 17:15:24

标签: telegram-bot python-telegram-bot

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

1 个答案:

答案 0 :(得分:4)

在维基中,你会找到最简单的例子。

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

简而言之,不要试图使用烧瓶。使用内置的网络服务器。