- tocdepth
2
Lab 5: Развертывание Telegram-бота на Python
В этой лабораторной работе вы будете использовать репозиторий GitVerse с готовым образом Telegram-бота на языке Python. На примере развертывания Telegram-бота вы познакомитесь с созданием контейнера через интерфейс сервиса Container Apps и дополнительными настройками контейнера.
1. Подготовьте среду
Подготовьте среду, если не сделали этого ранее.
2. Клонируйте или скачайте репозиторий кода c GitVerse
Опциональный шаг.
Вы можете зарегистрироваться в GitVerse, если у вас еще нет аккаунта, и познакомиться с новой системой контроля версий. Этот шаг необязательный и не влияет на дальнейшее прохождение лабораторной работы.
В этом репозитории находится готовый образ Telegram-бота на языке Python.
git clone https://gitverse.ru/cloudru/evo-containerapp-telegrambot-webhook-python-sample
3. Зарегистрируйте Telegram-бота
В Telegram найдите BotFather.
Выполните команду
/newbot
.Задайте имя (name) и имя пользователя (username) для бота.
Имя пользователя должно оканчиваться на
...Bot
или..._bot
.В нашем случае:
name: new-bot
username: botforlabbot
В результате вы получите токен. Сохраните его — он потребуется на следующих этапах.
С помощью команды
/setuserpic
установите иконку для вашего бота.
4. Соберите образ и присвойте тег
В первой лабораторной работе для загрузки образа вы создавали реестр в сервисе Artifact Registry, а также получали ключи доступа. Вы можете использовать текущий реестр и ключи доступа или создать новые. Если хотите создать новые, пройдите шаги 3-5 из первой лабораторной работы.
Соберите образ и присвойте ему тег, выполнив следующую команду:
docker build --tag <registry_name>.cr.cloud.ru/telegram-bot-example https://gitverse.ru/cloudru/evo-containerapp-telegrambot-webhook-python-sample.git#master --platform linux/amd64
5. Загрузите Docker-образ в реестр
Загрузите образ в реестр Artifact Registry, выполнив команду:
docker push <registry_name>.cr.cloud.ru/telegram-bot-example
Где:
<registry_name>
— название реестра, которое вы указывали при его создании в Artifact Registry;telegram-bot-example
— название будущего репозитория в Artifact Registry. Название репозитория соответствует имени Docker-образа.
В личном кабинете перейдите в раздел с
сервиса Artifact Registry и убедитесь, что образ загружен.
6. Создайте и запустите контейнер
Перейдите в сервис Container Apps через меню в левом верхнем углу экрана.
Нажмите Создать.
Укажите название контейнера и активируйте опцию Публичный адрес.
Нажмите Продолжить.
Выберите реестр, репозиторий и тег Docker-образа, который вы загрузили в Artifact Registry.
Укажите порт контейнера — 5000.
Перейдите на вкладку Переменные и добавьте переменную окружения
BOT_TOKEN
.В значение переменной укажите токен, полученный при регистрации бота в BotFather.
Нажмите Продолжить.
Задайте количество ресурсов:
vCPU и RAM: 0.5 vCPU – 1024 MB
Минимальное количество экземпляров: 0
Максимальное количество экземпляров: 1
Нажмите Создать.
Дождитесь, когда контейнер и ревизия перейдут в статус «Выполняется».
7. Добавьте вебхук в Telegram
Чтобы бот получал сообщения из Telegram, добавьте вебхук:
Откройте любой браузер.
В адресной строке введите по очереди запросы.
Проверьте, существуют ли вебхуки:
https://api.telegram.org/bot{BOT_TOKEN}/getWebhookInfo
{BOT_TOKEN}
здесь и далее — токен, который был сгенерирован при регистрации бота в BotFather.Удалите существующие вебхуки:
https://api.telegram.org/bot{BOT_TOKEN}/deleteWebhook
Добавьте новый вебхук:
https://api.telegram.org/bot{BOT_TOKEN}/setWebhook?url={PUBLIC_URL}/{BOT_TOKEN}
{PUBLIC_URL}
— публичный URL-адрес, который был сгенерирован при создании контейнера в Container Apps.
8. Проверьте работу Telegram-бота
Вызовите бота в Telegram по имени пользователя (username) и проверьте его работу, выполнив команду /start
.
Что дальше
Вы научились разворачивать Telegram-бота в контейнере.
Узнавайте больше о работе с сервисами:
для Dev & Test