Skip to main content

Пример развертывания телеграм бота на Python

В этой статье мы рассмотрим, как развернуть телеграм бота на python.

Возьмем готовый пример эхо бота от создателя библиотеки для работы с телеграмом python-telegram-bot.

Если вы не знакомы с принципом работы с Git, рекомендуем ознакомится со статьей. Она позволит вам понять, как создавать Git-репозиторий и вносить в него изменения, что упростит работу с нашим сервисом.

Для развертывания данного проекта вам потребуется

  • В телеграме через поиск найти бот "BotFather" и запросить у него создание нового телеграм бота. Он попросит ввести название и username для бота, после чего выдаст токен.

  • Скопировать выданный токен и вставить его в файл примера эхо бота на место слова TOKEN в функции main()

  • Написать YAML файл или Dockerfile. Для yaml у нас есть генератор, поддерживающий ограниченный набор окружений, в остальных случаях рекомендуется использовать Dockerfile. Но в данном примере вам подойдет генератор yaml.

  • Создать файл с зависимостями requirements.txt

  • Привязать репозиторий к Amvera

  • Сделать push в master

Создание YAML файла

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

  • Выбираем окружение Python и версию.

  • Указываем версию и путь до файла requirements.txt. Очень важно указать все используемые в проекте пакеты в этом файле, чтобы облако смогло их скачать через pip.

  • Указываем путь до файла, содержащего точку входа в программу (тот файл, который вы указываете интерпретатору питона, когда запускаете приложение). В нашем случае это файл echobot.py (если ваш файл находится не в корневой папке проекта, то нужно указывать путь относительно корня проекта. Если бы мой файл был в папке src, мы бы указали в этом поле src/echobot.py)

  • Если в процессе работы ваш бот собирает какие-то данные от пользователя, которые следует сохранять на диск, то их следует класть в папку data. В противном случае при перезапуске проекта все данные будут потеряны!

  • Порт можно указать любой, так как в нашем случае он не играет никакой роли (но в большинстве случаев мы рекомендуем использовать порт 80, именно он открыт в Amvera).

  • Нажимаем на кнопку Generate YAML, после чего начинается загрузка файла amvera.yml.

  • Скачанный файл кладем в корень нашего проекта.

Создание файла с зависимостями

  • Вам нужно создать файл requirements.txt , в котором прописать строчку: python-telegram-bot

ВАЖНО: в вашем проекте могут быть другие зависимости, отличающиеся от зависимостей в этом примере - их все нужно корректно прописать.

  • При развертывании телеграм-ботов частой ошибкой является неверное название "телебота" в requirements.txt. Телебот в requirements.txt должен называться pyTelegramBotAPI , а не telebot.

Вызвать pip install -r requirements.txt чтобы установить этот пакет. Вы могли подумать, почему бы просто не установить пакет через pip install python-telegram-bot? Так тоже можно, но файл requirements.txt все равно понадобится для разворачивания в облаке, поэтому лучше сразу его создать.

Проверить, что все работает, можно запустив бот локально через python3 echobot.py и протестировав созданный бот в телеграм (ссылку на бот можно найти у BotFather).

Поместить ваш requirements.txt в корень репозитория.

Привязка GIT-репозитория и push в master

Осталось инициализировать GIT репозиторий и запушить наш проект. Как установить гит, если он ещё не установлен, описано тут.

В корне нашего проекта даем команду: git init (если гит уже инициализирован в вашем проекте, то этого делать не нужно)

Привязываем наш локальный гит репозиторий к удаленному репозиторию через команду, которая указана на странице проекта в amvera (имеет формат git remote add amvera https://git.amvera.ru/ваш_юзернейм/ваш_проект)

Откройте командную строку и перейдите в корневую папку проекта вашего приложения. Выполните указанные команды:

git remote add amvera https://git.amvera.ru/<имя-пользователя>/<транслитерированное-имя-проекта>
git push amvera master

На запрос пользователя и пароля укажите имя пользователя и пароль вашей учетной записи Amvera.

Делаем

git add .
git commit -m "Initial commit"

И наконец-то пушим наш проект, выполняя команду

git push amvera master 

вводя учетные данные, которые использовались при регистрации в сервисе.

Вариант №2

Если вы хотите использовать выделенный репозиторий Amvera (а не привязывать свой), вы можете склонировать пустой репозиторий:

git clone https://git.amvera.ru/<имя-пользователя>/<транслитерированное-имя-проекта>

Или можно подключить репозиторий к локальному репозиторию:

git remote add origin https://git.amvera.ru/<имя-пользователя>/<транслитерированное-имя-проекта>

Более подробная информация о том, как работать с GIT есть в разделе Git

После того, как проект запушится в систему, на странице проекта статус поменяется на "Выполняется сборка".

Как только проект соберется, он перейдет в стадию: "Выполняется развертывание", а после в статус "Успешно развернуто".

Если по какой-то причине проект не развернулся, можно обратиться к логам сборки и логам приложения для отладки (они могут идти с задержкой в 5-10 минут). Если Проект завис в статусе "Сборка" на долгое время, а логи сборки не отображаются, то стоит ещё раз проверить корректность amvera.yml файла и requirements.txt файла.

Если у вас не получается развернуть проект

Напишите наблюдаемую вами симптоматику на support@amvera.ru с указанием вашего имени пользователя и названия проекта, мы постараемся вам помочь.