如何在Heroku上部署和运行电报机器人?

时间:2019-06-01 15:01:51

标签: python heroku telegram-bot

我正在尝试在heroku上部署并运行电报机器人。 我正在使用python 3和库python-telegram-bot。

我的.py类称为test.py,而git项目称为telegram_bot。 我还创建了一个heroku管道(包括一个名为telegram-bot-1的项目),并将其连接到我的git。 (因此,每次我提交新的提交时,heroku都会开始构建该项目)

这些都是我在git项目中的所有代码(包括test.py,Dockerfile和herouku.yml):

import os
import sys

from telegram.ext import Updater, CommandHandler

TOKEN = "515148657:dvGVfrSVU78SfvdEtvfZf25EvefvEftnU-8"

def run(updater):
    PORT = int(os.environ.get("PORT", "8443"))
    HEROKU_APP_NAME = "telegram_bot" 
    updater.start_webhook(listen="0.0.0.0",
                          port=PORT,
                          url_path=TOKEN)
   updater.bot.set_webhook("https://{}.herokuapp.com/{}".format(HEROKU_APP_NAME, TOKEN))


def start_handler(bot, update):
    user = update.message.from_user
    update.message.reply_text("Hello dear {} :).format(user['first_name']))


def get_handler(bot, update):
    stock_name = update.effective_message["text"]
    update.message.reply_text("you said: {}".format(stock_name))


if __name__ == '__main__':
    updater = Updater(TOKEN)
    updater.dispatcher.add_handler(CommandHandler("start", start_handler))
    updater.dispatcher.add_handler(CommandHandler("get", get_handler))

    run(updater)
FROM python:3.7

RUN pip install python-telegram-bot

RUN mkdir /app
ADD . /app
WORKDIR /app

CMD python /app/test.py
build:
  docker:
    web: Dockerfile

我所有的文件都放在一个文件夹中。

但是在heroku上自动构建后的日志是:

2019-06-01T14:32:57.000000+00:00 app[api]: Build started by user esrvef@gmail.com
2019-06-01T14:33:55.792474+00:00 app[api]: Deploy 50b099c1 by user esrvef@gmail.com
2019-06-01T14:33:55.792474+00:00 app[api]: Release v40 created by user esrvef@gmail.com
2019-06-01T14:33:55.000000+00:00 app[api]: Build succeeded

并且代码无法运行。因此该机器人无法正常工作。

我该怎么做才能使其正确?

谢谢。

2 个答案:

答案 0 :(得分:0)

您错过了run文件中的heroku.yml配置。

在提供了构建阶段之后

build:
  docker:
    web: Dockerfile

您必须添加

run:
  web: python /app/test.py

答案 1 :(得分:0)

如果有人更喜欢设置非常简单的webhook,而不是使用容器在Heroku上托管其机器人,请在此处查看:

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

它们也比polling更高效,也很轻松。