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-бота

  1. В Telegram найдите BotFather.

    ../_images/search-botfather.png
  2. Выполните команду /newbot.

  3. Задайте имя (name) и имя пользователя (username) для бота.

    Имя пользователя должно оканчиваться на ...Bot или ..._bot.

    В нашем случае:

    • name: new-bot

    • username: botforlabbot

    В результате вы получите токен. Сохраните его — он потребуется на следующих этапах.

    ../_images/create-bot.png
  4. С помощью команды /setuserpic установите иконку для вашего бота.

    ../_images/set-userpick.png

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-образ в реестр

  1. Загрузите образ в реестр Artifact Registry, выполнив команду:

    docker push <registry_name>.cr.cloud.ru/telegram-bot-example
    

    Где:

    • <registry_name> — название реестра, которое вы указывали при его создании в Artifact Registry;

    • telegram-bot-example — название будущего репозитория в Artifact Registry. Название репозитория соответствует имени Docker-образа.

  2. В личном кабинете перейдите в раздел с Реестры → Репозитории → Артефакты сервиса Artifact Registry и убедитесь, что образ загружен.

    ../_images/ar-image-done1.png

6. Создайте и запустите контейнер

  1. Перейдите в сервис Container Apps через меню в левом верхнем углу экрана.

    ../_images/go-ca1.png
  2. Нажмите Создать.

    ../_images/start-create1.png
  3. Укажите название контейнера и активируйте опцию Публичный адрес.

  4. Нажмите Продолжить.

    ../_images/ca-container-name.png
  5. Выберите реестр, репозиторий и тег Docker-образа, который вы загрузили в Artifact Registry.

  6. Укажите порт контейнера — 5000.

    ../_images/ca-general-settings1.png
  7. Перейдите на вкладку Переменные и добавьте переменную окружения BOT_TOKEN.

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

  8. Нажмите Продолжить.

    ../_images/ca-variables1.png
  9. Задайте количество ресурсов:

    • vCPU и RAM: 0.5 vCPU – 1024 MB

    • Минимальное количество экземпляров: 0

    • Максимальное количество экземпляров: 1

  10. Нажмите Создать.

    ../_images/ca-config1.png
  11. Дождитесь, когда контейнер и ревизия перейдут в статус «Выполняется».

../_images/ca-run.png

7. Добавьте вебхук в Telegram

Чтобы бот получал сообщения из Telegram, добавьте вебхук:

  1. Откройте любой браузер.

  2. В адресной строке введите по очереди запросы.

    1. Проверьте, существуют ли вебхуки:

      https://api.telegram.org/bot{BOT_TOKEN}/getWebhookInfo
      
      ../_images/get-webhook.png

      {BOT_TOKEN} здесь и далее — токен, который был сгенерирован при регистрации бота в BotFather.

    2. Удалите существующие вебхуки:

      https://api.telegram.org/bot{BOT_TOKEN}/deleteWebhook
      
      ../_images/delete-webhook.png
    3. Добавьте новый вебхук:

      https://api.telegram.org/bot{BOT_TOKEN}/setWebhook?url={PUBLIC_URL}/{BOT_TOKEN}
      
      ../_images/set-webhook-url.png

      {PUBLIC_URL} — публичный URL-адрес, который был сгенерирован при создании контейнера в Container Apps.

8. Проверьте работу Telegram-бота

Вызовите бота в Telegram по имени пользователя (username) и проверьте его работу, выполнив команду /start.

../_images/bot-run.png

Что дальше

Вы научились разворачивать Telegram-бота в контейнере.

Узнавайте больше о работе с сервисами:

Запустили Evolution free tier
для Dev & Test
Получить