- Этот проект представляет собой эхо бота, который отправляет уведомления через Telegram. Он использует Yandex Cloud API Gateway, serverless функции и триггер для установки вебхука. Все ресурсы управляются с помощью Terraform.
-
Пользователь отправляет сообщение боту в Telegram.
-
Telegram пересылает сообщение на вебхук через Yandex API Gateway.
-
API Gateway перенаправляет запрос на Serverless Function (бота).
-
Serverless Function (index.py) обрабатывает сообщение и отправляет ответ через Telegram API.
-
Serverless Function (webhook.py) настраивает вебхук для связи Telegram и API Gateway.
-
Trigger может автоматически обновлять вебхук или выполнять задачи по расписанию.
- Yandex Cloud
- API Gateway
- Serverless Functions
- Terraform
- Python
- Убедитесь, что у вас установлен Terraform и Yandex CLI. Инструкции по установке можно найти в документации Terraform и документации Yandex Cloud.
-
Клонируйте репозиторий:
git clone https://github.com/Zen-Crow/yandex-cloud-bot-with-terraform.git
cd yandex-cloud-bot-with-terraform/dev
-
Установите переменные окружения из фала .env для своей операционной системы.
команды выполняются из директории "dev"
Инициализируйте Terraform: terraform init
Проверьте план развертывания: terraform plan
Примените конфигурацию Terraform: terraform apply
удалить ресурсы: terraform destroy
- 1 способ. Удаление Webhook в консоли Yandex Cloud.
Перейдите в консоль Yandex Cloud. Найдите serverless function, отвечающую за установку Webhook. Запустите функцию, которая удаляет Webhook.
Для этого: Откройте файл webhook.py. Установите значение переменной method = "deleteWebhook". Сохраните изменения и выполните функцию, чтобы удалить Webhook.
- 2 способ. Удаление Webhook через API Telegram.
Если вы предпочитаете использовать terminal, выполните следующую команду (не забудьте заменить $TELEGRAM_BOT_TOKEN на ваш токен):
curl -X POST https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/deleteWebhook
- Срабатывание триггера:
Триггер запускается каждую минуту, инициируя процесс установки вебхука для Telegram бота. Это позволяет боту получать входящие сообщения от пользователей.
- Работа триггера:
После срабатывания триггер выполняет необходимые действия для установки вебхука. В этот момент он должен корректно обрабатывать входящие сообщения и выполнять требуемые действия.
- Удаление триггера:
Триггер автоматически удаляется через 2 минуты после его срабатывания. Это достигается с помощью ресурса null_resource, который создает задержку в 2 минуты перед удалением триггера. Это позволяет избежать возможных конфликтов и повторных срабатываний.
- Задержка времени:
Задержка времени на работу триггера составляет 2 минуты, что позволяет убедиться в том, что все процессы, связанные с установкой вебхука, успешно завершены. После истечения этого времени триггер удаляется, освобождая ресурсы.
- Вы можете дополнительно адаптировать этот проект под свои нужды или добавлять дополнительные детали, изменив файлы index.py и webhook.py необходимо создать zip архив для каждого файла в отдельности со своими зависимостями если это требуется для вашего проекта.
P.S. Желаю вам успехов в ваших проектах! Верьте в себя и продолжайте двигаться вперед!