Прыжок до небес: запускаем телеграм бота на Python в serverless облаке

15 ИЮНЯ 2022

------------------------------------------------------------------------

Наш телеграм-канал: t.me/@mailsgun_online

Youtube: youtube.com/@mailsgun_online

------------------------------------------------------------------------

  • Tutorial

Одним из современных архитектурных подходов в области облачных вычислений является так называемый Serverless. Этот способ запуска приложений в облаке освобождает разработчиков от нужды администрировать сервер и заботиться о чем-то, кроме кода.

Очевидно, что для такой задачи, как телеграм бот, этот подход очень удобен. 

В этой статье описаны все шаги для запуска бота в Yandex.Cloud Functions. Опоры на код я не делаю. Наша основная задача сейчас — настроить запуск в облаке.

Создадим бота

Чтобы создать телеграмм бота, нужно воспользоваться @BotFather. Для этого используйте команду /new_bot. Скопируйте токен (он будет там, где оранжевая полоса)

Настройка Yandex.Cloud

Для работы с Яндекс.Облаком перейдите на сайт https://cloud.yandex.ru/ и войдите в свой аккаунт. Если вы все сделали правильно, вы увидите рабочий дашборд.

Cloud Functions

  • Перейдите в раздел Cloud Functions

  • Создайте новую функцию c названием, например, python-tg-bot.

  • Укажите язык python и выберите самую последнюю версию (python3.8 на момент написания этой статьи).

  • В настройках функции загрузите код бота. Скачать архив можно по ссылке. Параметры укажите как на картинке. В переменные окружения добавьте поле BOT_TOKEN и вставьте токен, полученный в самом начале. После обязательно нажмите Создать версию, чтобы запустить функцию.

  • Запомним идентификатор функции (первая строка)

API-Gateway

Чтобы мы смогли получить доступ к нашей функции, нужно настроить API-Gateway.

  • Перейдите в раздел API-Gateway

  • Создайте новый шлюз и настройте его. Скопируйте конфигурацию и замените YOUR_FUNCTION_ID на идентификатор функции, полученный ранее.

openapi: 3.0.0
info:
 title: for-python-tg-bot
 version: 1.0.0
paths:
 /:
   post:
     x-yc-apigateway-integration:
       type: cloud-functions
       function_id: YOUR_FUNCTION_ID
     operationId: tg-webhook-function
  • Запомним ссылку, по которой можно вызвать нашу функцию

Устанавливаем webhook

Теперь нужно сообщить телеграму, куда отправлять информацию о новых сообщениях.

Для этого:

  • Установите библиотеку pip install pyTelegramBotAPI

  • Запустите питоновский скрипт:

import telebot
bot = telebot.TeleBot("YOUR_TOKEN")
bot.remove_webhook()
bot.set_webhook("YOUR_URL")

Тестируем

Сделали «эхо-бота». Что дальше?

Как говорилось в начале, такой способ запустить бота очень легок для разработчика, но что же делать, если нам нужна база данных или сложные api-запросы к другим ресурсам. Все это можно реализовать в Yandex.Cloud. Например, с помощью сервисов Yandex Database (тоже serverless) или Object Storage. Отдельные сервисы можно запустить, как отдельные функции. В следующей статье, я расскажу о том, как подключить базу данных Yandex Database к боту.

Именно возможность создавать все по кусочкам и уверенность в том, что однажды настроенный модуль будет работать всегда, отличает serverless подход от простого «давайте свалим все в одну виртуальную машину».

Тарифы Yandex.Cloud

До октября 2021 года на сервисы экосистемы бессерверных вычислений будут действовать специальные тарифы. В рамках этих тарифов определенный объем услуг не будет тарифицироваться. Объем рассчитан так, чтобы у вас была возможность разработать и запустить небольшой сервис, сайт или приложение.

  • Yandex API Gateway

    Каждый месяц не тарифицируются первые 100 000 запросов к API-шлюзам.

  • Yandex Cloud Functions

    Каждый месяц не тарифицируются:

    • первые 1 000 000 вызовов функций;

      nu =  frac{10^6}{30 * 24 * 60} approx 23 text{ } frac{text{запроса}}{text{мин}}

    • первые 10 ГБ×час выполнения функций.

  • Бессерверный режим Yandex Database

    Каждый месяц не тарифицируются:

    • первые 1 000 000 операций (в единицах RU);

    • первый 1 ГБ/месяц хранения данных.

Полезные ссылки

  1. Репозиторий с кодом бота

  2. Yandex.Cloud

  3. Описание тарифа free tier

Теги:
Хабы:


Source: habr1

Ну и напоследок напоминаю вам о нашем новом проекте vkserfing bot.