我正在尝试在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
并且代码无法运行。因此该机器人无法正常工作。
我该怎么做才能使其正确?
谢谢。
答案 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
更高效,也很轻松。