Пример развертывания телеграм бота на 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 с указанием вашего имени пользователя и названия проекта, мы постараемся вам помочь.