【问题标题】:How to deploy and run a telegram bot on heroku?如何在 heroku 上部署和运行电报机器人?
【发布时间】:2020-05-01 19:08:39
【问题描述】:

我正在尝试在 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

并且代码没有运行。所以机器人不起作用。

我应该怎么做才能使它正确?

谢谢。

【问题讨论】:

  • 请对机器人令牌保密!它们应该保密(因为任何拥有令牌的人都可以随时完全控制您的机器人).. 确保尽快在 @BotFather 上更改它,下次小心

标签: python heroku telegram-bot


【解决方案1】:

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

提供的构建阶段之后

build:
  docker:
    web: Dockerfile

你必须添加类似的东西

run:
  web: python /app/test.py

【讨论】:

    【解决方案2】:

    如果有人更喜欢易于设置的 webhook,而不是在 Heroku 上托管机器人的容器,请在此处查看:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-26
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      相关资源
      最近更新 更多