Публикация бота для Telegram на Heroku
Наша цель
Залить свеженаписанного бота на сервер. При этом сервер должен быть надежным и бесплатным, все как мы любим. Всем этим требованиям отвечает Heroku.
Что такое Heroku
Heroku - это облачная PaaS (платформа как услуга), поддерживающая языки Java, Node.js, Scala, Clojure, Python, Go, C# и PHP. Это отличная площадка для микро проектов, что нам и надо, потому углубляться дальше сейчас не будем, перейдем к цели.
Регистрация на сайте Heroku
Переходим по адресу https://signup.heroku.com/login Заполняем стандартную регистрационную форму.
Залогинившись, создаем новое приложение (нажав на одну из кнопок):
Придумываем уникальное имя (только строчные буквы, цифры и дефисы), выбираем регион (он не принципиален) и жмем Create App:
Вариантов деплоя имеется 2:
- Heroku Git — с помощью CLI (интерфейса командной строки) от Heroku, вариант прямой и простой, о нем мы поговорим сегодня.
- GitHub — вы можете подключить свой аккаунт GitHub и склонировать ваш репозиторий на сервер Heroku. Вариант подразумевает наличие аккаунта на GitHub, его мы рассмотрим (возможно), в следующей статье.
Нужно установить версию Heroku CLI для вашей операционной системы со страницы https://devcenter.heroku.com/articles/heroku-cli
После установки наберите в консоли
heroku login
В зависимости от операционной системы возможно потребуется ввести логин и пароль в консоли. В моем случае открылась вкладка в браузере, где мне оставлось только подтвердить логин в Heroku.
Дальше следуем инструкциям на странице нашего приложения, под заголовком "Deploy using Heroku Git"
Нужно инициализировать репозиторий Git в папке нашего бота. Выполняем следующие команды:
- заходим в папку с ботом
- инициализируем git
- привязываем удаленный репозиторий (в замыленом участке - имя вашего приложения на Heroku)
Сейчас самое время убедиться, что в папке с ботом есть следующие, обяззательные файлы:
- Procfile [именно так, без расширения]
- requirements.txt
1й - определяет так называемый воркер, процесс, который будет выполняться на сервере. Его содержимое:
worker: python3 bot.py
bot.py - название моего файла, у вас может отличаться
2й - описывает зависимости файла, импортируемые библиотеки. Я писал бота с использованием библиотеки pyTelegramBotApi, соответственно в requirements.txt я именно так и написал. Каждая зависимость, если их несколько, пишется на отдельной строке
pyTelegramBotApi
Штош, файлы подготовили, пора коммитить.
Добавляем все файлы из папки в проект
git add .
Коммитим (вот не буду объяснять термин, загуглите), в кавычках - комментарий для коммита, чтобы отличить его от последующих, обычно принято в двух словах писать, что сделано
git commit -am "make it better"
Заливаем все в ветку master (это все гитовская терминология, углубляться не будем)
git push heroku master
Если все сделали правильно - осталось запустить бота. Либо из консоли -
heroku ps:scale worker=1
либо на сайте, запустив так называемого dyno (обработчика), которого мы прописали в Procfile
Зайти в Ресурсы, нажать на карандаш, установить переключатель в положение ON и нажать рядом кнопку Confirm.
Все, можно проверять функционирование бота!
P.S.
Если вы отредактировали код своего бота - нужно сделать деплой ваших изменений на сервер. Делается это следующей последовательностью команд:
Добавляем все локальные файлы в проект
$ git add .
Коммитим с комментарием
$ git commit -am "make it better"
Заливаем все в ветку master
$ git push heroku master