Задать вопрос
@SwitcherN
Начинаю изучать python

Как разместить телеграм-бота на Hiroku?

Добрый день!

Пытаюсь уже 2-ой день залить свою поделку на Hiroku. То ли лыжи не едут...

По порядку:
1. Это небольшой телеграмм-бот. Пока без webhook. Приложение-упражнение для закрепления изученного материала.
2. Использую PyCharm и каталог имеет следующую структуру
Структура

Procfile
requirements.txt
runtime.txt
venv/
--bin/
--include/ #Здесь основные файлы, в том числе Bot.py
--lib/
--pip-selfcheck.json
--pyvenv.cfg

3. В Procfile - web: Bot.py
В requirements.txt - pyTelegramBotAPI==3.6.6
В runtime.txt - python-3.7.0

Теперь порядок моих действий.
0. Регистрация на heroku, добавление app. Скачал Heroku CLI.
1. Открываю терминал (Mac OS).
- heroku login #Все ок
- cd ... - корневой каталог, в котором лежат Procfile, requirements.txt, runtime.txt и venv со всем содержимым.
- git init
>> Initialized empty Git repository in ...
- heroku git:remote -a botname #везде реальное название app заменяю на botname
>> set git remote heroku to https://git.heroku.com/botname.git
- git add .
- git commit -am "make it better"
- git push heroku master
>>remote: Verifying deploy... done.
>>To https://git.heroku.com/botname.git
>> * [new branch] master -> master

Все же ОК. Открываем телеграм и пишем нашему боту /start и ... ничего не происходит.
Хорошо, тогда:
heroku logs --tail
и получаем в ответ:
...
2019-03-22T14:50:24.000000+00:00 app[api]: Build succeeded
2019-03-22T14:50:27.279361+00:00 heroku[web.1]: State changed from starting to crashed
2019-03-22T14:50:27.262170+00:00 heroku[web.1]: Process exited with status 127
2019-03-22T14:50:27.214589+00:00 app[web.1]: bash: Bot.py: command not found

Думал может это из-за структуры каталога, клал Procfile, requirements.txt, runtime.txt в папку include. Все равно не запускает.
Делал корневым каталогом папку include - бот запускается, но, как я понял, не видит папку lib/

Подскажите пожалуйста в каком месте я дурак и куда копать. За простой русский язык с детальным разжевыванием буду безмерно благодарен.
  • Вопрос задан
  • 1108 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@rvs_ie
Site Reliability Manager, Google Ireland
По умолчанию Linux / bash не выполняет команды из текущей директории. Можно попробовать указать команду как ./Bot.py либо python Bot.py либо вообще указать полный путь.

Подробнее можно прочитать например тут: https://linuxconfig.org/linux-path-environment-variable
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Belov
Не совсем по теме
Вместо
3. В Procfile - web: Bot.py
Надо
worker: Bot.py

Т.к. бот на web отваливается по таймауту через некоторое время
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы