Pagbuo ng Telegram bot sa Yandex.Cloud

Pagbuo ng Telegram bot sa Yandex.Cloud

Ngayon, mula sa mga scrap materials, kami ay mag-iipon Yandex.Cloud Telegram bot gamit Yandex Cloud Functions (O Mga function ng Yandex - para sa maikli) at Imbakan ng Bagay ng Yandex (O Imbakan ng bagay - para sa kaliwanagan). Naka-on ang code node.js. Gayunpaman, mayroong isang nakakatuwang pangyayari - isang partikular na organisasyon na tinatawag, sabihin nating, RossKomTsenzur (Ang censorship ay ipinagbabawal ng Artikulo 29 ng Konstitusyon ng Russian Federation), hindi pinapayagan ang mga Russian Internet provider na magpadala ng mga kahilingan sa Telegram API sa address: https://api.telegram.org/. Well, hindi kami - hindi, hindi. Tapos sa bag namin may mga tinatawag. mga webhook β€” sa tulong nila, hindi kami humihiling sa isang partikular na address, ngunit ipinapadala lang ang aming kahilingan bilang tugon sa anumang kahilingan sa amin. Iyon ay, tulad ng sa Odessa, sinasagot namin ang isang tanong na may isang tanong. kaya lang Telegram API ay hindi lilitaw sa aming code.

DisclaimerAng mga pangalan ng alinmang organisasyon ng pamahalaan na binanggit sa artikulong ito ay kathang-isip lamang, at ang mga posibleng tugma sa mga pangalan ng mga tunay na organisasyon sa buhay ay nagkataon lamang.

Kaya, gagawa kami ng bot na magbibigay sa amin ng matalinong pag-iisip. Katulad ng nasa larawan:

Pagbuo ng Telegram bot sa Yandex.Cloud

Maaari mong subukan ito sa aksyon - narito ang pangalan: @SmartThoughtsBot. Napansin ang pindutan "Ang galing ni Alice"? Ito ay dahil ang bot ay isang uri ng "kasama" para sa bot na may parehong pangalan. Ang galing ni Alice, ibig sabihin. ito ay gumaganap ng parehong mga function bilang Ang galing ni Alice at ito ay posible na sila ay maaaring mabuhay nang mapayapa sa pamamagitan ng pag-advertise sa isa't isa. Tungkol sa kung paano lumikha kasanayan Matalinong Kaisipan inilarawan sa artikulo Si Alice ay nakakakuha ng kasanayan. Ngayon (pagkatapos gumawa ng ilang mga pagbabago pagkatapos ng paglalathala ng artikulo sa itaas) sa smartphone na ito kasanayan magiging ganito ang hitsura:

Pagbuo ng Telegram bot sa Yandex.Cloud

Paggawa ng bot

Nais kong maging kapaki-pakinabang ang tutorial na ito sa lahat, kasama na. at mga baguhang tagabuo ng bot. Samakatuwid, sa seksyong ito ay ilalarawan ko sa ilang detalye kung paano lumikha sa pangkalahatan Telegramamga bot. Para sa mga hindi nangangailangan ng impormasyong ito, magpatuloy sa mga sumusunod na seksyon.

Buksan ang application Telegaram, tawagan natin ang ama ng lahat ng mga bot (mayroon silang lahat tulad ng mga tao) - @BotFather - at una, ibibigay natin sa kanya ang /help command para i-refresh ang kanyang memorya sa kung ano ang magagawa natin. Ngayon kami ay magiging interesado sa koponan / newbot.

Pagbuo ng Telegram bot sa Yandex.Cloud

Dahil ang bot na inilarawan dito ay nagawa na, para sa mga layunin ng pagpapakita ay gagawa ako ng isa pang bot sa maikling panahon (at pagkatapos ay tanggalin ito). Tatawagan ko siya DemoHabrBot. Mga pangalan (username) ng lahat ng telegram bots ay dapat magtapos sa salita bot, halimbawa: MyCoolBot o my_cool_bot - ito ay para sa mga bot. Ngunit bigyan muna namin ang bot ng pangalan (pangalan) - at ito ay para sa mga tao. Ang pangalan ay maaaring nasa anumang wika, naglalaman ng mga puwang, at hindi kailangang magtapos sa isang salita bot, at hindi na kailangang maging natatangi. Sa halimbawang ito, tinawag ko ang bot na ito Demo Habr.

Pagbuo ng Telegram bot sa Yandex.Cloud

Pumili ngayon ng pangalan para sa bot (username, ang isa para sa mga bot). Tawagan natin siya DemoHabrBot. Lahat ng nauugnay sa pangalan ng bot (pangalan) ay hindi nauugnay sa kanyang pangalan - username (o naaangkop, ngunit eksaktong kabaligtaran). Pagkatapos ng matagumpay na paglikha ng isang natatanging pangalan ng bot, kailangan naming kopyahin at i-save (sa pinakamahigpit na kumpiyansa!) ang token na ipinapakita sa screenshot na may pulang arrow. Sa tulong nito ay itatatag natin sa ibang pagkakataon ang pinanggalingan mula sa Telegrama'isang webhook sa aming Pag-andar ng Yandex.

Pagbuo ng Telegram bot sa Yandex.Cloud

Ngayon ay ibigay natin ang utos sa ama ng lahat ng mga bot: /mybots, at magpapakita ito sa amin ng isang listahan ng lahat ng mga bot na aming ginawa. Iwanan muna natin ang bagong lutong bot sa ngayon Demo Habr (ito ay nilikha upang ipakita kung paano lumikha ng mga bot, ngunit gagamitin din namin ito ngayon para sa iba pang mga layunin ng pagpapakita), at tingnan natin ang bot Matalinong Kaisipan (@SmartThoughtsBot). I-click ang button na may pangalan nito sa listahan ng mga bot.

Pagbuo ng Telegram bot sa Yandex.Cloud

Dito natin mai-configure ang ating bot. Sa pamamagitan ng pagpindot sa pindutan I-edit ... Magpapatuloy kami sa pag-edit ng isa o ibang opsyon. Halimbawa, sa pamamagitan ng pag-click sa pindutan I-edit ang Pangalan maaari naming baguhin ang pangalan ng bot, sabihin sa halip Matalinong Kaisipan, magsulat Mga Nakakabaliw na Ideya. Botpic - ito ang avatar ng bot, dapat ay hindi bababa sa 150 x 150 px. paglalarawan β€” ito ay isang maikling paglalarawan na nakikita ng user kapag sinimulan ang bot sa unang pagkakataon, bilang sagot sa tanong: Ano ang magagawa ng bot na ito? tungkol sa β€” isang mas maikling paglalarawan, na ipinadala kasama ng isang link sa bot (https://t.me/SmartThoughtsBot) o kapag tinitingnan ang impormasyon tungkol dito.

Pagbuo ng Telegram bot sa Yandex.Cloud

Ang kailangan lang nating gawin ay i-set up ang mga utos. Upang gawin ito, pindutin ang pindutan I-edit ang Mga Utos. Upang gawing pamantayan ang kasanayan ng gumagamit Telegrama Inirerekomenda na laging gumamit ng dalawang utos: /simula ΠΈ / tulong, at kung kailangan ng bot ng mga setting, gamitin ang karagdagang utos na /settings. Ang aming bot ay kasing simple ng isang bola, kaya hindi pa nito kailangan ng anumang mga setting. Isinulat namin ang unang dalawang utos, na pagkatapos ay ipoproseso namin sa code. Ngayon, kung magpasok ang user ng slash (slash sign: /) sa input field, lalabas ang isang listahan ng mga command para sa mabilisang pagpili. Ang lahat ay tulad ng sa larawan: sa kaliwa - nag-i-install kami ng mga utos sa pamamagitan ng ama bot; sa kanan, ang mga command na ito ay available na sa mga user sa aming bot.

Pagbuo ng Telegram bot sa Yandex.Cloud

Pag-andar ng Yandex

Ngayong nagawa na ang ating bot, pumunta tayo sa Yandex.Cloudupang lumikha ng isang function na magpapatupad ng code ng aming bot. Kung hindi ka nakatrabaho Yandex.Cloud basahin ang materyal Alice sa Land of Bitrix, at pagkatapos - Ang mga function ng Yandex ay nagpapadala ng mail. Sigurado ako na ang dalawang medyo maikling artikulong ito ay magiging sapat para magkaroon ka ng pangunahing pag-unawa sa paksa.

Kaya sa console Yandex.Cloud sa kaliwang menu ng nabigasyon piliin ang item Mga Pag-andar ng Ulap, at pagkatapos ay pindutin ang pindutan Lumikha ng isang function. Binibigyan namin ito ng isang pangalan at isang maikling paglalarawan para sa ating sarili.

Pagbuo ng Telegram bot sa Yandex.Cloud

Pagkatapos pindutin ang pindutan lumikha at pagkatapos ng ilang segundo, lalabas ang bagong function sa listahan ng lahat ng function. Mag-click sa kanyang pangalan - dadalhin tayo nito sa pahina Repasuhin ating tungkulin. Dito kailangan mong paganahin (On) lumipat Pampublikong tungkulinupang ito ay maging accessible mula sa panlabas (para sa Yandex.Cloud) ng mundo, at ang kahulugan ng mga bukid Link ng tawag ΠΈ Identifier β€” panatilihin itong malalim na lihim mula sa lahat maliban sa iyong sarili at Telegram, upang ang iyong function ay hindi matawagan ng iba't ibang mga scammer.

Pagbuo ng Telegram bot sa Yandex.Cloud

Ngayon, gamit ang kaliwang menu, pumunta sa Ang editor mga function. Isantabi muna natin sandali ang ating Matalinong Kaisipan, at lumikha ng isang minimal na function ng template upang suriin ang functionality ng aming bot... Gayunpaman, sa kontekstong ito, ang function na ito ay ang aming bot... Sa madaling salita, ngayon at dito mismo ay gagawa kami ng isang simpleng bot na "magsasalamin" ( ibig sabihin, ipadala pabalik ) ang mga kahilingan ng user. Ang template na ito ay palaging magagamit kapag lumilikha ng mga bagong telegram bot upang matiyak na ang pakikipag-ugnayan sa Telegram'ohm gumagana nang maayos. I-click Lumikha ng file, tawagan natin siya index.js, at online Editor ng code i-paste ang sumusunod na code sa file na ito:

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
  };
};

Sa Yandex.Cloud console dapat itong magmukhang ganito:

Pagbuo ng Telegram bot sa Yandex.Cloud

Sa ibaba ay ipinapahiwatig namin Pasukan - index.botSaan index ito ang pangalan ng file (index.js), at bot - pangalan ng function (module.exports.bot). Iwanan ang lahat ng iba pang mga patlang bilang ay, at i-click ang pindutan sa kanang sulok sa itaas Lumikha ng bersyon. Sa ilang segundo, malilikha ang bersyong ito ng function. Pagkatapos ng pagsubok webhook, gagawa kami ng bagong bersyon βˆ’ Matalinong Kaisipan.

Pagbuo ng Telegram bot sa Yandex.Cloud

Imbakan ng bagay

Ngayong nakagawa na tayo Pag-andar ng Yandex, tara, habang nasa console tayo Yandex.Cloud, gawin natin ang tinatawag na balde (balde, ibig sabihin. bucket sa Russian, hindi isang bouquet sa lahat) para sa pag-iimbak ng mga file ng imahe na gagamitin sa aming bot Matalinong Kaisipan. Sa kaliwang menu ng nabigasyon piliin ang item Imbakan ng Bagay, pindutin ang pindutan Gumawa ng balde, makabuo ng isang pangalan para dito, halimbawa, img-bucket, at, higit sa lahat, Basahin ang access sa mga bagay Ginagawa namin itong pampubliko - kung hindi, hindi makikita ng Telegram ang aming mga larawan. Iniiwan namin ang lahat ng iba pang mga patlang na hindi nagbabago. Pindutin ang pindutan Gumawa ng balde.

Pagbuo ng Telegram bot sa Yandex.Cloud

Pagkatapos nito, maaaring ganito ang hitsura ng listahan ng lahat ng bucket (kung ito lang ang bucket mo):

Pagbuo ng Telegram bot sa Yandex.Cloud

Ngayon iminumungkahi ko ang pag-click sa pangalan ng bucket at lumikha ng isang folder sa loob nito upang ayusin ang pag-iimbak ng mga imahe para sa iyong iba't ibang mga application. Halimbawa, para sa isang telegram bot Matalinong Kaisipan Gumawa ako ng folder na tinatawag tg-bot-smart-thoughts (wala, mauunawaan ko ang code na ito). Gumawa din ng isa.

Pagbuo ng Telegram bot sa Yandex.Cloud

Ngayon ay maaari kang mag-click sa pangalan ng folder, pumunta dito at mag-upload ng mga file:

Pagbuo ng Telegram bot sa Yandex.Cloud

At sa pamamagitan ng pag-click sa pangalan ng file - kunin ito URL para gamitin sa aming bot, at sa pangkalahatan - kahit saan (ngunit huwag i-publish ito URL hindi kailangan, dahil ang trapiko mula sa Imbakan ng bagay sinisingil).

Pagbuo ng Telegram bot sa Yandex.Cloud

Iyon lang talaga Imbakan ng bagay. Ngayon ay malalaman mo na kung ano ang gagawin kapag nakakita ka ng prompt na mag-upload ng mga file doon.

Webhook

Ngayon ay i-install namin webhook - ibig sabihin. kapag nakatanggap ang bot ng update (halimbawa, isang mensahe mula sa isang user) mula sa server Telegrama sa aming Pag-andar ng Yandex isang kahilingan ay ipapadala (humiling) na may data. Narito ang isang linya na maaari mong i-paste lamang sa field ng address ng iyong browser at pagkatapos ay i-refresh ang pahina (kailangan mo lang gawin ito nang isang beses): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Papalitan na lang natin {bot_token} sa token na natanggap namin mula sa ama bot noong nilikha ang aming bot, at {webhook_url} - sa URL ating Mga function ng Yandex. Sandali lang! Pero RossKomTsenzur ipinagbabawal ang mga tagapagkaloob sa Russian Federation na ibigay ang address https://api.telegram.org. Oo, tama iyan. Ngunit magkaroon ng isang bagay. Pagkatapos ng lahat, maaari mong, halimbawa, tanungin ang iyong lola tungkol dito sa Ukraine, Israel o Canada - walang "Rosskomcensorship" doon, at alam lamang ng Diyos kung paano nabubuhay ang mga tao nang wala ito. Bilang resulta, ang kahilingan-tugon kapag nag-i-install ng webhook ay dapat magmukhang ganito:

Pagbuo ng Telegram bot sa Yandex.Cloud

Sinusubukan namin. Dapat itong "salamin".

Pagbuo ng Telegram bot sa Yandex.Cloud

Ito ay totoo. Ang aming pagbati - ngayon Pag-andar ng Yandex ay naging Telegrama-bot!

Matalinong Kaisipan

Ngayon gawin natin ang Smart Thoughts. Ang code ay bukas at nakalagay GitHub. Ito ay medyo mahusay na nagkomento at isang daang linya lamang ang haba. Basahin ito na parang opera diva libretto!

Pagbuo ng Telegram bot sa Yandex.Cloud

I-clone ang proyekto at i-install ang mga dependency:

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

Gawin ang mga pagbabagong kailangan mo sa file index.js (opsyonal; wala kang kailangang baguhin). Lumikha sigla-archive, na may file index.js at folder node_modules sa loob, halimbawa, sa ilalim ng pangalan matalino.zip.

Pagbuo ng Telegram bot sa Yandex.Cloud

Ngayon pumunta sa console sa aming Mga function ng Yandex, piliin ang tab ZIP archive, pindutin ang pindutan Pumili ng file, at i-download ang aming archive matalino.zip. Panghuli, sa kanang sulok sa itaas, i-click ang button Lumikha ng bersyon.

Pagbuo ng Telegram bot sa Yandex.Cloud

Sa ilang segundo, kapag na-update ang function, muli naming susubukan ang aming bot. Ngayon hindi na siya "salamin", ngunit naghahatid ng matalinong mga kaisipan!

Pagbuo ng Telegram bot sa Yandex.Cloud

Yan lamang para sa araw na ito. Higit pang mga artikulo ang sumusunod. Kung interesado kang basahin ito, mag-subscribe sa mga notification tungkol sa mga bagong artikulo. Maaari kang mag-subscribe dito, o sa Telegrama-channel IT Tutorial ZakharO kaba @mikezaharov.

sanggunian

Code sa GitHub
Yandex Cloud Functions
Imbakan ng Bagay ng Yandex
Bots: Isang panimula para sa mga developer
Telegram Bot API

Mga donasyon

Pagbuo ng Telegram bot sa Yandex.Cloud

Pinagmulan: www.habr.com

Magdagdag ng komento