Yandex cloud бот python

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Simple Telegram bot example on aiogram framework using Yandex Cloud with Webhook (full detailed guide)

License

LF3551/yandex-serverless-aiogram-bot

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Yandex.Cloud

Simple Telegram bot example on aiogram framework using Yandex Cloud with Webhook

  1. First create a bot with telegram «BotFather» and copy TOKEN to your notes
  2. Go to Yandex Cloud Console
  3. Create Yandex Service account in Yandex Cloud with roles editor and serverless.functions.invoker
  4. Create Yandex Cloud Function in Yandex Cloud:
    • choose programming language, in our case it will be Python
    • copy and paste the code from index.py to file index.py in Yandex Cloud Function Editor
    • create file requirements.txt in Yandex Cloud Function Editor
    • copy and paste data from requirements.txt to file requirements.txt in Yandex Cloud Function Editor
    • select below Yandex Service account you created earlier
    • add variable TOKEN and put your token data there
    • click Create function
  5. You are back to your Yandex Cloud Function view:
    • check the box Public function ✅
    • copy the link PUBLIC_FUNCTION_URL to your public function in notes
  6. You need to create Webhook:
    • put your TOKEN and PUBLIC_FUNCTION_URL in template below 👇
    • template: https://api.telegram.org/botTOKEN/setWebhook?url=PUBLIC_FUNCTION_URL
    • put this link to your browser and press enter
    • you will get this message:
  7. Send /start message to your bot. Everything should work 🙂

About

Simple Telegram bot example on aiogram framework using Yandex Cloud with Webhook (full detailed guide)

Источник

Serverless телеграм бот с использованием Яндекс облака

Всем привет! Меня зовут Павлов Виктор, я являюсь практикантом-преподавателем информатики в одном из колледжей России. Так вот, для студентов мы стараемся внедрить в учебный процесс новейшие технологии и «Serverless» боты являются одним из таких направлений.

Эта статья навеяна популярностью ресурса среди студентов-программистов, но я постараюсь рассказать всё максимально просто для совсем начинающих программистов. В итоге создадим простого Эхо-бота, как заготовку для различных модификаций.

P.S. Также статья навеяна отсутствием туториала на языке Python, на Nodejs есть хороший туториал.

Шаг 1: Регистрация и вход в платформу Яндекс облако

Вы можете активировать пробный период на небольшое время. Его скорее всего хватит на несколько проектов, но Serverless боты для обучения выйдут вам определенно дешевле VPS. На месяц использования хватит закинутой «сотки» на счет после истечения пробного периода.

Шаг 2: Вход в Functions. Здесь нужно в левой панели «Консоли управления» выбрать «Cloud Functions»

image

image

Шаг 3: Жмем кнопку . После чего задаем осмысленное имя функции и описание.

Например telegram-study-bot, weather-get-api и т.д.

В описании же можно указать технологии. Например language=python3.7, lib=telebot

Шаг 4: Выбираем вкладку «Редактор»

image

После чего у нас откроется окно управления кодом нашей функции. Здесь мы можем выбрать:

1) «Среду выполнения», в нашем случае это python3.7

я выбираю preview версию, так как в только ней можно устанавливать различные зависимости (На состояние 02.10.2020 года)

2) «Способы» отвечают за то, как будет передан код в функцию. В данной статье мы будет использовать прямой «Редактор код» в качестве наипростейшего примера.

3) «Точка входа» отвечает на то, какая функция будет принимать запрос и будет является стартом действия нашей функции, укажем её чуть позже.

4) Далее идут «Параметры», предлагаю их оставить как есть.

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

Шаг 5: Убеждаемся, что у нас выставлены нужные «Среда выполнения» и «Способ»

image

Затем кликаем на «Создать файл», назовем его main.py.

Шаг 6: У вас откроется редактор кода, где мы можем создать функцию-обработчик запроса. Назовем её handler и вставим данный код:

import json def handler(event, context): body = json.loads(event['body']) return < 'statusCode': 200, 'headers': < 'Content-Type': 'application/json' >, 'body': json.dumps(< 'method': 'sendMessage', 'chat_id': body['message']['chat']['id'], 'text': body['message']['text'] >), 'isBase64Encoded': False > 

Первой строкой мы импортируем модуль «json», он нам нужен чтобы перевести body запроса из json-строки в python dict.

Функция handler у нас принимает два аргумента, первое это данные запроса, второе данные функции. Про них можно прочитать тут.

Далее в переменную body мы заносим Python словарь преобразовывая его функцией json.loads из body запроса.

Далее, по документации webhook telegram мы возвращаем нужного формата ответ, упаковывая в body, с помощью json.dumps, словарь с нужными нам данными.

ВНИМАНИЕ.

В «Точке входа» нужно указать данную функцию как начало работы скрипта. Пишем main.handler. Должно быть так:

image

После чего кликаем «Создать версию» и ждем, пока нас перекинет на вкладку «Обзор».

Шаг 7: Тут нас интересует «Ссылка для вызова» и переключатель «Публичная функция». Жмем переключатель и запоминаем где лежит ссылка для вызова.

image

Шаг 8: Создаем телеграм бота и копируем его токен. Вам нужно создать запрос типа:

https://api.telegram.org/bot/setWebHook?url=

Где bot_token — ваш токен бота из телеграма, а webhook_url это «Ссылка для вызова» из функций (шаг 7). Данный запрос следует собранным вставить в строку браузера.

https://api.telegram.org/bot1234567:AAAAAAAAAAAAAAA/setWebHook?url=https://functions.yandexcloud.net/asdjaskjdasdjasd

Шаг 9: Отправим боту «привет» и посмотрим, что в итоге получили.

image

Спасибо за внимание! Если вы дочитали данную статью, то я буду рад различным предложением по улучшению/дополнению/замечаниям данной статьи.

Источник

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

Одним из современных архитектурных подходов в области облачных вычислений является так называемый 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

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

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 года на сервисы экосистемы бессерверных вычислений будут действовать специальные тарифы. В рамках этих тарифов определенный объем услуг не будет тарифицироваться. Объем рассчитан так, чтобы у вас была возможность разработать и запустить небольшой сервис, сайт или приложение.

Оцените статью