В этой статье мы рассмотрим, как развернуть телеграм бота на python в облаке. В качестве облака будем использовать облачный провайдер Amvera. Для хостинга вашего проекта вы можете выбрать любого другого провайдера с возможностью деплоя через push в GIT. Данная статья написана скорее как инструкция для пользователей Amvera.
Пишем телеграм бота
На хабре и других ресурсах можно найти много туториалов, как писать телеграм ботов, начиная от простых и заканчивая сложными, поэтому не будем сильно углубляться в этот вопрос. Возьмем готовый пример эхо бота от создателя библиотеки для работы с телеграмом python-telegram-bot.
Перед запуском необходимо
-
В телеграме через поиск найти бот «BotFather» и запросить у него создание нового телеграм бота. Он попросит ввести название и username для бота, после чего выдаст токен.
-
Скопировать выданный токен и вставить его в файл примера эхо бота на место слова TOKEN в функции main()
-
Создать файл requirements.txt в котором прописать строчку:
python-telegram-bot
-
Вызвать
pip install -r requirements.txtчтобы установить этот пакет. Сейчас многие подумали, почему бы просто не установить пакет черезpip install python-telegram-bot? Так тоже можно, но файл requirements.txt все равно понадобится для разворачивания в облаке, поэтому лучше сразу его создать. -
Проверить, что все работает, можно запустив бот локально через
python3 echobot.pyи потыкав созданный бот в телеграм (ссылочку на бот можно найти у BotFather).
Запускаем в облака. Как развернуть бота на хостинге
Перейдем теперь к самой интересной части данной статьи, а именно — как захостить бота.
Регистрация в сервисе
-
На сайте Amvera нажимаем на кнопку «Регистрация» или пользуемся прямой ссылкой cloud.amvera.ru
-
Нажимаем на кнопку «Регистрация» в нижней части окна и заполняем последовательно все поля. После заполнения поля «Номер телефона» нажимаем на кнопку «Отправить код» и вводим код из СМС.
-
Подтверждаем, что мы не робот, и тыкаем на большую синюю кнопку «Регистрация»
-
Остается только подтвердить указанную почту, перейдя по ссылке в письме.
Создание проекта и размещение бота
-
На появившейся после входа странице нажимаем на кнопку «Создать» или «Создать первый!».
Страница проектов
-
На данном шаге нам предлагают присвоить нашему проекту название и выбрать для него тариф. Лучше указывать название на английском языке, но русский также поддерживается. Может показаться, что тарифные планы предоставляют слишком мало ресурса по сравнению с VPS. Однако в VPS часть ресурсов используется операционной системой, а тут весь выделенный ресурс уходит только на развертываемое приложение. Для развертывания бота нам хватит самого простого тарифа. Стартового баланса в 1000 руб. вам хватит примерно на 3 месяца беспрерывной, бесплатной работы вашего бота 24/7.
Окно создания нового проекта -
Сервис Amvera реализует удобный способ доставки кода в свое облако с помощью системы контроля версий git. Чтобы облако знало, что именно и как нужно запускать, требуется создать yml файл. Подробно о том, как самому составить этот файл описано в документации, однако я рекомендую воспользоваться автоматическим графическим инструментом генерации.
Графический инструмент генерации .yaml файлов -
Выбираем окружение Python и версию.
-
Указываем версию и путь до файла requirements.txt. Очень важно указать все используемые в проекте пакеты в этом файле, чтобы облако смогло их скачать через pip.
-
Указываем путь до файла, содержащего точку входа в программу (тот файл, который вы указываете интерпретатору питона, когда запускаете приложение). В нашем случае это файл echobot.py (если ваш файл находится не в корневой папке проекта, то нужно указывать путь относительно корня проекта. Если бы мой файл был в папке src, я бы указал в этом поле src/echobot.py)
-
Если в процессе работы ваш бот собирает какие-то данные от пользователя, которые следует сохранять на диск, то их следует класть в папку data. В противном случае при перезапуске проекта все данные будут потеряны!
-
Порт можно указать любой, так как в нашем случае он не играет никакой роли.
-
Нажимаем на кнопку Generate YAML, после чего начинается загрузка файла amvera.yml.
-
-
Скачанный файл кладем в корень нашего проекта
-
Осталось инициализировать гит репозиторий и запушить наш проект. Как установить гит, если он ещё не установлен, описано тут.
-
В корне нашего проекта даем команду:
git init(если гит уже инициализирован в вашем проекте, то этого делать не нужно) -
Привязываем наш локальный гит репозиторий к удаленному репозиторию через команду, которая указана на странице проекта в amvera
(имеет форматgit remote add amvera https://git.amvera.ru/ваш_юзернейм/ваш_проект) -
Делаем
git add .иgit commit -m "Initial commit" -
И наконец-то пушим наш проект, выполняя команду
git push amvera master вводя учетные данные, которые использовались при регистрации в сервисе.
-
-
После того, как проект запушится в систему, на странице проекта статус поменяется на «Выполняется сборка».
Проект в статусе сборки -
Как только проект соберется, он перейдет в стадию: «Выполняется развертывание», а после в статус «Успешно развернуто».
Успешно развернутый проект -
Если по какой-то причине проект не развернулся, можно обратиться к логам сборки и логам приложения для отладки. Если Проект завис в статусе «Сборка» на долгое время, а логи сборки не отображаются, то стоит ещё раз проверить корректность amvera.yml файла.
Вывод
Вот таким нехитрым способом, буквально за пять минут можно развернуть уже написанного бота в облаке. Стартовый баланс позволит работать боту, которого вы захостили, 27/7 примерно 3 месяца, а доставка обновлений через push в GIT — обновлять проект одной командой без даунтайма.
ссылка на оригинал статьи https://habr.com/ru/companies/amvera/articles/742164/
Добавить комментарий