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

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

Денеска од импровизирани материјали ќе собереме во Yandex.Cloud Телеграма бот користење Функции на облакот Yandex (Или Функции на Yandex за краткост) и Yandex за складирање на објекти (Или Складирање на објекти - за јасност). Кодот ќе биде вклучен Node.js. Сепак, постои една пикантна околност - одредена организација наречена, да речеме, RossKomCensorship (цензурата е забранета со член 29 од Уставот на Руската Федерација), не дозволува интернет провајдерите во Русија да префрлаат барања до Telegram API на адресата: https://api.telegram.org/. Па, нема - не, не. Навистина, во нашата торба има т.н. веб-куки - Со нивна помош, ние не поднесуваме барања на одредена адреса, туку само го испраќаме нашето барање како одговор на секое барање до нас. Тоа е, како во Одеса - на прашање одговараме со прашање. Затоа Telegram API нема да се појави во нашиот код.

Одрекување од одговорностИмињата на сите државни организации споменати во овој напис се фиктивни, а можните совпаѓања со имињата на реалните организации се случајни.

Така, ќе направиме бот кој ќе не снабдува со паметни мисли. Токму како на сликата:

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

Можете да го пробате на дело - еве го името: @SmartThoughtsBot. Забележете го копчето „Вештината на Алис“? Тоа е затоа што ботот е еден вид „придружник“ за истоимените Вештината на Алис, т.е. ги извршува истите функции како Вештината на Алис и, можеби, дека тие можат да коегзистираат мирно, рекламирајќи се едни со други. За тоа како да се создаде Вештина за паметна мисла опишано во статијата Алис ја добива вештината. Сега (откако направивме некои промени по објавувањето на горната статија) на паметен телефон ова вештина ќе изгледа нешто вака:

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

Создавање бот

Би сакал овој туторијал да биде корисен за сите, вкл. и почетнички „бот-билдери“. Затоа, во овој дел ќе опишам детално како да креирате воопшто во Телеграмаботови. За оние на кои не им требаат овие информации, продолжете со следните делови.

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

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

Бидејќи ботот опишан овде веќе е создаден, за демонстративни цели ќе создадам друг бот за кратко време (потоа ќе го избришам). Ќе му се јавам DemoHabrBot. Имиња (корисничко име) сите телеграмски ботови мора да завршуваат со збор бот, на пример: MyCoolBot или my_cool_bot Ова е за ботови. Но, прво, дајте му име на ботот (името) е за луѓе. Името може да биде на кој било јазик, да содржи празни места, не мора да завршува со збор бот, па дури и не мора да биде единствен. Во овој пример, го нареков овој бот Демо Хабр.

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

Сега изберете име за ботот (корисничко име, оној за ботови). Ајде да го наречеме DemoHabrBot. Се што е поврзано со името на ботот (името) воопшто не е поврзано со неговото име - корисничко име (или важи, но токму спротивното). По успешното креирање на уникатно име на бот, треба да го копираме и зачуваме (најстрого доверливо!) токенот прикажан на екранот со црвена стрелка. Со негова помош, подоцна ќе го инсталираме појдовниот Телеграма„Веб-кука за нашите Функција Yandex.

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

И сега ќе му ја дадеме командата на таткото на сите ботови: /mybotsи ќе ни покаже листа на сите ботови што сме ги создале. Да го оставиме тазе печениот бот засега на мира Демо Хабр (создаден е за да покаже како се креираат ботови, но ние ќе го користиме денес за други цели за демонстрација), и размислете за ботот Паметни мисли (@SmartThoughtsBot). Кликнете на копчето со неговото име во листата на ботови.

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

Ова е местото каде што можеме да го поставиме нашиот бот. Притискање на копче Уредување… ќе преминеме на уредување на една или друга опција. На пример, со кликнување на копчето Уреди име можеме да го смениме името на ботот, да речеме наместо Паметни мисли, пишувај луди идеи. Ботпик - ова е аватарот на ботот, мора да биде барем 150 x 150 px. Опис е краток опис што корисникот го гледа кога ботот е лансиран за прв пат, како одговор на прашањето: Што може да направи овој бот? За нас - уште пократок опис, кој се пренесува со линк до ботот (https://t.me/SmartThoughtsBot) или кога гледате информации за тоа.

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

Треба само да ги поставиме командите. За да го направите ова, притиснете го копчето Наредби за уредување. Да се ​​стандардизираат практиките на корисниците Телеграма препорачува секогаш да користите две команди: /почеток и / помош, и ако на ботот му требаат поставки - дополнителна команда /settings. Нашиот бот е едноставен како топка, така што сè уште не му требаат никакви поставки. Ги пишуваме првите две команди, кои потоа ќе ги обработиме во кодот. Сега, ако корисникот внесе коса црта (коса : /) во полето за внесување, ќе се појави листа на команди за нивно брзо избирање. Сè е како на сликата: лево - поставуваме команди преку бот-таткото; од десната страна, овие команди се веќе достапни за корисниците во нашиот бот.

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

Функција Yandex

Сега кога нашиот бот е создаден, ајде да одиме на Yandex.Cloudда креираме функција која ќе го изврши нашиот бот код. Ако не сте работеле со Yandex.Cloud прочитајте го материјалот Алиса во земјата на Битрикс, и потоа - Функциите на Yandex испраќаат пошта. Речиси сум сигурен дека овие две релативно мали статии ќе ви бидат доволни за основно разбирање на темата.

Значи во конзолата Yandex.Облаци во левото мени за навигација, изберете ја ставката Функции на облак, а потоа притиснете го копчето Направете функција. Ние му даваме име, а за себе - краток опис.

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

По притискање на копчето создаде и по неколку секунди, новата функција ќе се појави во списокот со сите функции. Кликнете на нејзиното име - ова ќе не однесе до страницата Преглед нашата функција. Тука треба да овозможитеOn) прекинувач јавна функцијада го направиме достапен од надворешното (за Yandex.Облаци) на светот и вредноста на полињата Линк до повик и Идентификатор - чувај го во длабока тајна од сите освен од себе и Телеграма, за да не можат разни измамници да ти ја повикаат функцијата.

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

Сега користејќи го левото мени одете на Уредувачот функции. Да ги оставиме настрана за момент нашите Паметни мисли, и креирајте минимална шаблонска функција за да ги проверите перформансите на нашиот бот... Меѓутоа, во овој контекст, оваа функција е нашиот бот... Накратко, сега и токму тука ќе направиме едноставен бот кој ќе „огледа“ ( т.е. испрати назад ) барања на корисниците. Овој шаблон секогаш може да се користи при креирање на нови ботови за телеграма за да се осигура дека комуникацијата со Телеграмаom работи добро. Кликнете Креирај датотека, јавете се индекс.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

Подолу укажуваме влезна точка - индекс.боткаде индекс ова е името на датотеката (индекс.js), и бот - име на функцијата (модул.извози.бот). Оставете ги сите други полиња „како што се“, а во горниот десен агол кликнете на копчето Креирај верзија. По неколку секунди, оваа верзија на функцијата ќе се креира. Набргу по тестирањето веб-кука, ќе создадеме нова верзија − Паметни мисли.

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

Складирање на објекти

Сега кога поставивме Функција Yandexајде да одиме додека сме во конзолата Yandex.Облаци, создаде т.н. кофа (кофа, т.е. кофа на руски, во никој случај букет) за складирање датотеки со слики што ќе се користат во нашиот бот Паметни мисли. Изберете од левото мени за навигација Складирање на објекти, притисни го копчето Создадете кофа, дајте му име, на пример, img-кофа, и што е најважно, Читање пристап до објекти објави го јавно - инаку Телеграм нема да ги гледа нашите слики. Сите други полиња се оставени непроменети. Го притискаме копчето Создадете кофа.

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

После тоа, списокот со сите корпи може да изгледа вака (ако ова е вашата единствена кофа):

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

Сега предлагам да кликнам на името на корпата и да креирам папка внатре во неа за да организирам складирање на слики за различни апликации. На пример, за бот за телеграма Паметни мисли Направив папка наречена tg-bot-паметни мисли (Ништо, ќе ја разберам оваа шифра). Направете исто така.

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

Сега можете да кликнете на името на папката, да влезете во неа и да испратите датотеки:

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

И кликнување на името на датотеката - добијте го URL за употреба во нашиот бот, и воопшто - насекаде (но, не објавувајте го ова URL непотребно, бидејќи сообраќајот од складирање на предмети наплаќаат).

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

Еве, всушност, тоа е сè складирање на предмети. Сега ќе знаете што да правите кога ќе го видите барањето за поставување датотеки таму.

Webhook

Сега ќе инсталираме веб-кука — т.е. кога ботот добива ажурирање (на пример, порака од корисникот), од серверот Телеграма во нашата Функција Yandex барање ќе биде испратенода побара) со податоци. Еве низа што можете едноставно да ја залепите во полето за адреса на прелистувачот, а потоа да ја освежите страницата (ова треба да се направи само еднаш): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Само заменете {bot_token} до токенот што го добивме од таткото бот при креирањето на нашиот бот, и {webhook_url} - на URL нашите Функции на Yandex. Почекај минута! Но RossKomCensorship им забранува на давателите на услуги во Руската Федерација да ја служат адресата https://api.telegram.org. Да тоа е точно. Но, можете да смислите нешто. На крајот на краиштата, можете, на пример, да ја прашате баба ви за тоа во Украина, Израел или Канада - таму нема „руска цензура“ и само Господ знае како луѓето живеат без неа. Како резултат на тоа, одговорот на барањето при инсталирање на веб-куката треба да изгледа вака:

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

Тестирање. Треба да се пресликува.

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

Ова е вистина. Нашите честитки - сега Функција Yandex стана Телеграма- бот!

Паметни мисли

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

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

Клонирајте го проектот и инсталирајте ги зависностите:

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

Направете ги потребните промени во датотеката индекс.js (незадолжително; не можете да промените ништо). Креирај zip-архива, со датотека индекс.js и папка модули на јазол внатре, на пример, наречен паметни.zip.

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

Сега одете во конзолата на нашата Функции на Yandex, изберете ја картичката ZIP архива, притисни го копчето Изберете датотекаи преземете ја нашата архива паметни.zip. Конечно, во горниот десен агол, кликнете на копчето Креирај верзија.

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

За неколку секунди, кога функцијата ќе се ажурира, повторно ќе го тестираме нашиот бот. Сега веќе не „огледа“, туку испорачува паметни мисли!

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

Тоа е се за денес. Следуваат и други статии. Ако сте заинтересирани да го прочитате ова, претплатете се на известувања за нови статии. Можете да се претплатите овде или Телеграма- канал Упатство за ИТ ЗахарИли Twitter @mikezaharov.

референци

Код на GitHub
Функции на облакот Yandex
Yandex за складирање на објекти
Ботови: Вовед за програмери
Telegram Bot API

Донати

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

Извор: www.habr.com

Додадете коментар