Изграждане на Telegram бот в Yandex.Cloud

Изграждане на Telegram бот в Yandex.Cloud

Днес от импровизирани материали ще съберем Yandex.Cloud Телеграм бот с Облачни функции на Yandex (Or Функции на Yandex за краткост) и Обектно хранилище на Yandex (Or Обектно съхранение - за яснота). Кодът ще бъде включен Node.js. Има обаче едно пикантно обстоятелство - една организация, наречена, да речем, РосКомцензура (цензурата е забранена от член 29 от Конституцията на Руската федерация), не позволява на интернет доставчиците в Русия да прехвърлят заявки към API на Telegram по адрес: https://api.telegram.org/. Ами няма - не, не. Наистина в нашата чанта има т.нар. уеб кукички - с тяхна помощ не правим заявки до конкретен адрес, а само изпращаме нашата заявка като отговор на всяко запитване към нас. Тоест, както в Одеса - отговаряме на въпрос с въпрос. Ето защо API на Telegram няма да се появи в нашия код.

ОпровержениеИмената на всички държавни организации, споменати в тази статия, са измислени и възможните съвпадения с имената на реални организации са случайни.

И така, ще направим бот, който ще ни доставя умни мисли. Точно като на снимката:

Изграждане на Telegram бот в Yandex.Cloud

Можете да го опитате в действие - ето името: @SmartThoughtsBot. Обърнете внимание на бутона "Умението на Алис"? Това е така, защото ботът е един вид "спътник" на едноименния Умението на Алис, т.е. изпълнява същите функции като Умението на Алис и може би, че могат да съжителстват мирно, рекламирайки се взаимно. За това как да създавате Умение за умна мисъл описани в статията Алис придобива умението. Сега (след като направих някои промени след публикуването на горната статия) на смартфон това умение ще изглежда нещо подобно:

Изграждане на Telegram бот в Yandex.Cloud

Създаване на бот

Бих искал този урок да бъде полезен за всички, вкл. и начинаещи "строители на ботове". Затова в този раздел ще опиша подробно как да създавам като цяло в Telegramса ботове. За тези, които не се нуждаят от тази информация, преминете към следващите раздели.

Отворете приложението Телегарам, ние наричаме бащата на всички ботове (те имат всичко като хората) - @BotFather - и като начало ще му дадем командата / help, за да опресним паметта си какво можем да направим. Сега се интересуваме от отбора / newbot.

Изграждане на Telegram бот в Yandex.Cloud

Тъй като описаният тук бот вече е създаден, за демонстрационни цели ще създам друг бот за кратко (след това ще го изтрия). ще му се обадя ДемоХабрБот. имена (потребителско име) всички телеграм ботове трябва да завършват с дума бот, например: MyCoolBot или my_cool_bot Това е за ботове. Но първо дайте име на бота (име) е за хората. Името може да бъде на всеки език, да съдържа интервали, не е задължително да завършва с дума боти дори не е нужно да е уникален. В този пример извиках този бот Демо Habr.

Изграждане на Telegram бот в Yandex.Cloud

Сега изберете име за бота (потребителско име, този за ботове). Нека го наречем ДемоХабрБот. Всичко свързано с името на бота (име) изобщо не е свързано с името му - потребителско име (или се прилага, но точно обратното). След като успешно създадем уникално име на бот, трябва да копираме и запазим (при най-строга конфиденциалност!) токена, показан на екранната снимка с червена стрелка. С негова помощ по-късно ще инсталираме изходящия Telegram„уеб кукичка към нашия Yandex функция.

Изграждане на Telegram бот в Yandex.Cloud

И сега ще дадем командата на бащата на всички ботове: /mybotsи ще ни покаже списък с всички ботове, които сме създали. Да оставим засега прясно изпечения бот Демо Habr (създадено е, за да покаже как се създават ботове, но днес ще го използваме за други демонстрационни цели) и помислете за бота Умни мисли (@SmartThoughtsBot). Кликнете върху бутона с името му в списъка с ботове.

Изграждане на Telegram бот в Yandex.Cloud

Това е мястото, където можем да настроим нашия бот. Натискане на бутон Редактиране… ще преминем към редактиране на една или друга опция. Например, като щракнете върху бутона Редактиране на име можем да променим името на бота, да кажем вместо Умни мисли, пишете луди идеи. Botpic - това е аватара на бота, трябва да е поне 150 х 150 пиксела. Описание е кратко описание, което потребителят вижда при първото стартиране на бота, като отговор на въпроса: Какво може да направи този бот? За нас - още по-кратко описание, което се предава с линк към бота (https://t.me/SmartThoughtsBot) или когато преглеждате информация за него.

Изграждане на Telegram бот в Yandex.Cloud

Просто трябва да настроим командите. За да направите това, натиснете бутона Редактиране на команди. За стандартизиране на потребителските практики Telegram препоръчва винаги да използвате две команди: /започнете и /помогне, а ако ботът се нуждае от настройки, допълнителна команда /settings. Нашият бот е прост като топка, така че все още не се нуждае от настройки. Пишем първите две команди, които след това ще обработим в кода. Сега, ако потребителят въведе наклонена черта (наклонена черта: /) в полето за въвеждане, ще се появи списък с команди за техния бърз избор. Всичко е както на снимката: отляво - задаваме команди чрез бот-бащата; вдясно тези команди вече са достъпни за потребителите в нашия бот.

Изграждане на Telegram бот в Yandex.Cloud

Yandex функция

Сега, след като нашият бот е създаден, нека преминем към Yandex.Cloudза да създадем функция, която ще изпълни кода на нашия бот. Ако не сте работили с Yandex.Cloud прочетете материала Алиса в страната на Битрикс, и тогава - Функциите на Yandex изпращат поща. Почти съм сигурен, че тези две сравнително малки статии ще ви бъдат достатъчни, за да имате основни познания по темата.

Така че в конзолата Yandex.Clouds в лявото меню за навигация изберете елемента Облачни функции, след което натиснете бутона Създайте функция. Даваме му име, а за себе си - кратко описание.

Изграждане на Telegram бот в Yandex.Cloud

След натискане на бутона създавам и след няколко секунди новата функция ще се появи в списъка с всички функции. Кликнете върху нейното име - това ще ни отведе до страницата Преглед нашата функция. Тук трябва да активиратеOn) превключвател обществена функцияза да го направи достъпен отвън (за Yandex.Clouds) на света и стойността на полетата Линк за обаждане и Идентификатор - пазете го в дълбока тайна от всички, освен от себе си и Telegram, така че различни измамници да не могат да се обадят на вашата функция.

Изграждане на Telegram бот в Yandex.Cloud

Сега с помощта на лявото меню отидете на Редактор функции. Нека оставим настрана за момент нашите Умни мисли, и създайте минимална шаблонна функция за проверка на производителността на нашия бот ... Въпреки това, в този контекст тази функция е нашият бот ... Накратко, сега и точно тук ще направим най-простия бот, който ще „огледа“ ( т.е. изпрати обратно ) потребителски заявки. Този шаблон винаги може да се използва при създаване на нови ботове за телеграми, за да се гарантира, че комуникацията с телеграма'om работи добре. Кликнете Създаване на файл, обади се index.js, и онлайн Редактор на код поставете следния код в този файл:

module.exports.bot = async (event) => {
  
  const body = JSON.parse(event.body);

  const msg = {
    'method': 'sendMessage',
    'chat_id': body.message.chat.id,
    'text': body.message.text
  };

  return {
    'statusCode': 200,
    'headers': {
      'Content-Type': 'application/json'
    },
    'body': JSON.stringify(msg),
    'isBase64Encoded': false
  };
};

В конзолата Yandex.Cloud трябва да изглежда така:

Изграждане на Telegram бот в Yandex.Cloud

По-долу посочваме входна точка - index.botКъдето индекс това е името на файла (index.js), и бот - име на функция (module.exports.bot). Оставете всички останали полета „както са“ и щракнете върху бутона в горния десен ъгъл Създаване на версия. След няколко секунди тази версия на функцията ще бъде създадена. Скоро след тестването уеб кукичка, ще създадем нова версия − Умни мисли.

Изграждане на Telegram бот в Yandex.Cloud

Обектно съхранение

Сега, когато сме настроили Yandex функцияда тръгваме, докато сме в конзолата Yandex.Clouds, създават т.нар. кофа (кофа, т.е. кофа на руски, в никакъв случай не букет) за съхраняване на файлове с изображения, които ще се използват в нашия бот Умни мисли. Изберете от лявото навигационно меню Съхранение на обекти, Натисни бутона Създаване на кофа, дайте му име, например, img-кофа, и най-важното, Достъп за четене до обекти направете го публичен - в противен случай Telegram няма да вижда нашите снимки. Всички останали полета остават непроменени. Натискаме бутона Създаване на кофа.

Изграждане на Telegram бот в Yandex.Cloud

След това списък с всички кофи може да изглежда по следния начин (ако това е единствената ви кофа):

Изграждане на Telegram бот в Yandex.Cloud

Сега предлагам да щракнете върху името на кофата и да създадете папка вътре в нея, за да организирате съхранението на снимки за различни приложения. Например за телеграм бот Умни мисли създадох папка, наречена tg-bot-умни-мисли (Нищо, ще разбера този шифър). Създайте и вие.

Изграждане на Telegram бот в Yandex.Cloud

Сега можете да щракнете върху името на папката, да влезете в нея и да качите файлове:

Изграждане на Telegram бот в Yandex.Cloud

И като щракнете върху името на файла - вземете го URL за използване в нашия бот и като цяло - навсякъде (но не публикувайте това URL ненужно, тъй като трафикът от съхранение на обекти зареден).

Изграждане на Telegram бот в Yandex.Cloud

Ето, всъщност това е всичко съхранение на обекти. Сега ще знаете какво да правите, когато видите подкана за качване на файлове там.

Уеб кукичка

Сега ще инсталираме уеб кукичка — т.е. когато ботът получи актуализация (например съобщение от потребителя) от сървъра Telegram в нашия Yandex функция заявката ще бъде изпратенапоиска) с данни. Ето един низ, който можете просто да поставите в адресното поле на браузъра и след това да опресните страницата (това трябва да се направи само веднъж): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Просто сменете {bot_token} към токена, който получихме от бащата бот при създаването на нашия бот, и {webhook_url} - На URL наш Функции на Yandex. Чакай малко! Но РосКомцензура забранява на доставчиците в Руската федерация да обслужват адреса https://api.telegram.org. Да, така е. Но можете да измислите нещо. В крайна сметка можете например да попитате баба си за това в Украйна, Израел или Канада - там няма „руска цензура“ и само Бог знае как хората живеят без нея. В резултат на това заявката-отговор при инсталиране на webhook трябва да изглежда така:

Изграждане на Telegram бот в Yandex.Cloud

Тестване. Трябва да бъде огледално.

Изграждане на Telegram бот в Yandex.Cloud

Това е вярно. Нашите поздравления - сега Yandex функция стана Telegram-бот!

Умни мисли

И сега правим Умни мисли. Кодът е отворен и лежи GitHub. Коментирано е доста добре, а е само сто реда. Прочетете го като либрето на оперна дива!

Изграждане на Telegram бот в Yandex.Cloud

Клонирайте проекта и инсталирайте зависимостите:

git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i

Направете необходимите промени във файла index.js (по избор; не можете да промените нищо). Създавайте цип-архив, с файл index.js и папка модули_възел вътре, например, наречен smart.zip.

Изграждане на Telegram бот в Yandex.Cloud

Сега отидете в конзолата до нашия Функции на Yandex, изберете раздела ZIP архив, Натисни бутона Изберете файли изтеглете нашия архив smart.zip. Накрая в горния десен ъгъл щракнете върху бутона Създаване на версия.

Изграждане на Telegram бот в Yandex.Cloud

След няколко секунди, когато функцията се актуализира, ще тестваме нашия бот отново. Сега той вече не „огледа“, а дава умни мисли!

Изграждане на Telegram бот в Yandex.Cloud

Това е всичко за днес. Следват други статии. Ако ви е интересно да прочетете това, абонирайте се за известия за нови статии. Можете да се абонирате тук или Telegram-канал IT урок ЗахарИли Twitter @mikezaharov.

Позоваването

Код в GitHub
Облачни функции на Yandex
Обектно хранилище на Yandex
Ботове: въведение за разработчици
API на Telegram Bot

Донати

Изграждане на Telegram бот в Yandex.Cloud

Източник: www.habr.com

Добавяне на нов коментар