Первый раз делаю деплой бота на Heroku.
Есть самый простой бот, который умеет отвечать на команды /start /info.
В корневой папке сам файл с ботом называется - bot.py
- пустой файл __init__.py
- Procfile с текстом:
web: python3 bot.py
- requirements.txt с текстом (создался при помощи pip freeze >> requirements.txt ):
certifi==2018.4.16
chardet==3.0.4
Click==7.0
Flask==1.0.2
idna==2.6
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
pyTelegramBotAPI==3.6.4
six==1.11.0
telebot==0.0.3
urllib3==1.22
virtualenv==16.4.0
Werkzeug==0.14.1
xlrd==1.1.0
xlutils==2.0.0
xlwt==1.3.0
bot.py#!/usr/bin/python
# -*- coding: utf-8 -*-
import telebot
import os
from flask import Flask, request
import logging
bot = telebot.TeleBot("593642481:AAEuoLHI.....")
@bot.message_handler(commands=['start'])
def handle_text(message):
user_markup = telebot.types.ReplyKeyboardMarkup(True,False)
user_markup.row('/start','/info')
start_text = str('Привет, '+message.from_user.first_name+'!\nЯ бот на Heroku.')
bot.send_message(chat_id=1154965888, text=start_text, parse_mode='Markdown')
if "HEROKU" in list(os.environ.keys()):
logger = telebot.logger
telebot.logger.setLevel(logging.INFO)
server = Flask(__name__)
@server.route("/bot", methods=['POST'])
def getMessage():
bot.process_new_updates([telebot.types.Update.de_json(request.stream.read().decode("utf-8"))])
return "!", 200
@server.route("/")
def webhook():
bot.remove_webhook()
bot.set_webhook(url="https://test-new-new.herokuapp.com")
return "?", 200
server.run(host="0.0.0.0", port=os.environ.get('PORT', 60))
else:
bot.remove_webhook()
bot.polling(none_stop=True)
По инструкции загружаю все и делаю деплой. В итоге бот запускается. В течение 1 минуты прекрасно работает. И затем тишина...
В логах пишет это:
2019-02-19T21:31:24.974014+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=good-bot-vera-ira.herokuapp.com request_id=45113a39-a143-422f-b392-811d30e1c4f7 fwd="188.242.4.23" dyno= connect= service= status=503 bytes= protocol=https
2019-02-19T21:31:25.346789+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=good-bot-vera-ira.herokuapp.com request_id=1c12d8be-4492-432d-9b10-57bb0deb1fb3 fwd="188.242.4.23" dyno= connect= service= status=503 bytes= protocol=https
2019-02-19T21:35:27.579713+00:00 heroku[web.1]: State changed from crashed to starting
2019-02-19T21:35:30.621337+00:00 heroku[web.1]: Starting process with command `python3 bot.py`
2019-02-19T21:36:31.313147+00:00 heroku[web.1]: State changed from starting to crashed
2019-02-19T21:36:31.089802+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2019-02-19T21:36:31.089987+00:00 heroku[web.1]: Stopping process with SIGKILL
2019-02-19T21:36:31.157413+00:00 heroku[web.1]: Process exited with status 137
Подскажите, куда копать? Что я делаю не верно?