Эта статья навеяна популярностью ресурса среди студентов-программистов, но я постараюсь рассказать всё максимально просто для совсем начинающих программистов. В итоге создадим простого Эхо-бота, как заготовку для различных модификаций.
P.S. Также статья навеяна отсутствием туториала на языке Python, на Nodejs есть хороший туториал.
Ссылка на документацию Yandex Cloud Functions
Ссылка на документацию Telegram API.
Шаг 1: Регистрация и вход в платформу Яндекс облако
Шаг 2: Вход в Functions. Здесь нужно в левой панели «Консоли управления» выбрать «Cloud Functions»

Шаг 3: Жмем кнопку
. После чего задаем осмысленное имя функции и описание.
Например telegram-study-bot, weather-get-api и т.д.
В описании же можно указать технологии. Например language=python3.7, lib=telebot
Шаг 4: Выбираем вкладку «Редактор»

После чего у нас откроется окно управления кодом нашей функции. Здесь мы можем выбрать:
1) «Среду выполнения», в нашем случае это python3.7
2) «Способы» отвечают за то, как будет передан код в функцию. В данной статье мы будет использовать прямой «Редактор код» в качестве наипростейшего примера.
3) «Точка входа» отвечает на то, какая функция будет принимать запрос и будет является стартом действия нашей функции, укажем её чуть позже.
4) Далее идут «Параметры», предлагаю их оставить как есть.
Шаг 5: Убеждаемся, что у нас выставлены нужные «Среда выполнения» и «Способ»

Затем кликаем на «Создать файл», назовем его 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 }
Функция handler у нас принимает два аргумента, первое это данные запроса, второе данные функции. Про них можно прочитать тут.
Далее в переменную body мы заносим Python словарь преобразовывая его функцией json.loads из body запроса.
Далее, по документации webhook telegram мы возвращаем нужного формата ответ, упаковывая в body, с помощью json.dumps, словарь с нужными нам данными.
ВНИМАНИЕ!!!
В «Точке входа» нужно указать данную функцию как начало работы скрипта. Пишем main.handler. Должно быть так:

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

Шаг 8: Создаем телеграм бота и копируем его токен. Вам нужно создать запрос типа:
https://api.telegram.org/bot<bot_token>/setWebHook?url=<webhook_url>
Где bot_token — ваш токен бота из телеграма, а webhook_url это «Ссылка для вызова» из функций (шаг 7). Данный запрос следует собранным вставить в строку браузера.
https://api.telegram.org/bot1234567:AAAAAAAAAAAAAAA/setWebHook?url=https://functions.yandexcloud.net/asdjaskjdasdjasd
Шаг 9: Отправим боту «привет» и посмотрим, что в итоге получили.

Спасибо за внимание! Если вы дочитали данную статью, то я буду рад различным предложением по улучшению/дополнению/замечаниям данной статьи.
ссылка на оригинал статьи https://habr.com/ru/post/522126/
Добавить комментарий