Igor Kashirskiy
Igor Kashirskiy
Фронтенд-разработчик и переводчик
Читать 1 минуту

Публикация бота для Telegram на Heroku

Наша цель

Залить свеженаписанного бота на сервер. При этом сервер должен быть надежным и бесплатным, все как мы любим. Всем этим требованиям отвечает Heroku.

Что такое Heroku

Heroku - это облачная PaaS (платформа как услуга), поддерживающая языки Java, Node.js, Scala, Clojure, Python, Go, C# и PHP. Это отличная площадка для микро проектов, что нам и надо, потому углубляться дальше сейчас не будем, перейдем к цели.

Регистрация на сайте Heroku

Переходим по адресу https://signup.heroku.com/login Заполняем стандартную регистрационную форму.

Image for post

Залогинившись, создаем новое приложение (нажав на одну из кнопок):

Image for post

Придумываем уникальное имя (только строчные буквы, цифры и дефисы), выбираем регион (он не принципиален) и жмем Create App:

Image for post

Вариантов деплоя имеется 2:

  • Heroku Git — с помощью CLI (интерфейса командной строки) от Heroku, вариант прямой и простой, о нем мы поговорим сегодня.
  • GitHub — вы можете подключить свой аккаунт GitHub и склонировать ваш репозиторий на сервер Heroku. Вариант подразумевает наличие аккаунта на GitHub, его мы рассмотрим (возможно), в следующей статье.
Image for post

Нужно установить версию Heroku CLI для вашей операционной системы со страницы https://devcenter.heroku.com/articles/heroku-cli

После установки наберите в консоли

heroku login

В зависимости от операционной системы возможно потребуется ввести логин и пароль в консоли. В моем случае открылась вкладка в браузере, где мне оставлось только подтвердить логин в Heroku.

Дальше следуем инструкциям на странице нашего приложения, под заголовком "Deploy using Heroku Git"

Image for post

Нужно инициализировать репозиторий Git в папке нашего бота. Выполняем следующие команды:

Image for post
  1. заходим в папку с ботом
  2. инициализируем git
  3. привязываем удаленный репозиторий (в замыленом участке - имя вашего приложения на Heroku)

Сейчас самое время убедиться, что в папке с ботом есть следующие, обяззательные файлы:

  1. Procfile [именно так, без расширения]
  2. 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

Image for post

Зайти в Ресурсы, нажать на карандаш, установить переключатель в положение ON и нажать рядом кнопку Confirm.

Все, можно проверять функционирование бота!

P.S.

Если вы отредактировали код своего бота - нужно сделать деплой ваших изменений на сервер. Делается это следующей последовательностью команд:

Добавляем все локальные файлы в проект

$ git add .

Коммитим с комментарием

$ git commit -am "make it better"

Заливаем все в ветку master

$ git push heroku master
1 267 просмотров
Добавить
Еще
Igor Kashirskiy
Фронтенд-разработчик и переводчик
Подписаться