Bati yon bot Telegram nan Yandex.Cloud

Bati yon bot Telegram nan Yandex.Cloud

Jodi a, soti nan materyèl bouyon, nou pral rasanble Yandex.Cloud Telegram bot lè l sèvi avèk Fonksyon Cloud Yandex (Oswa Fonksyon Yandex - pou kout) ak Depo objè Yandex (Oswa Depo objè - pou klè). Kòd la pral limen Node.js. Sepandan, gen yon sikonstans pikan - yon sèten òganizasyon ki rele, ann di, RossKomTsenzur (sansi se entèdi pa Atik 29 nan Konstitisyon an nan Federasyon Larisi la), pa pèmèt founisè entènèt Ris yo transmèt demann bay Telegram API pa adrès la: https://api.telegram.org/. Oke, nou pa pral - non, non. Apre yo tout, nan sak nou an gen sa yo rele. webhooks — avèk èd yo, nou pa fè demann nan yon adrès espesifik, men tou senpleman voye demann nou an kòm yon repons a nenpòt demann ba nou. Sa se, tankou nan Odessa, nou reponn yon kesyon ak yon kesyon. Se poutèt sa Telegram API p ap parèt nan kòd nou an.

Limit responsabilite nouNon nenpòt òganizasyon gouvènman ki mansyone nan atik sa a se fiktif, e alimèt posib ak non òganizasyon lavi reyèl yo se koensidans.

Se konsa, nou pral fè yon bot ki pral ba nou panse entelijan. Egzakteman tankou nan foto a:

Bati yon bot Telegram nan Yandex.Cloud

Ou ka eseye li an aksyon - isit la se non an: @SmartThoughtsBot. Remake bouton an "Konpetans Alice a"? Sa a se paske bot la se yon kalite "konpayon" pou bot la ki gen menm non yo. konpetans Alice, i.e. li fè menm fonksyon ak konpetans Alice epi li posib ke yo pral kapab coexist pasifikman nan piblisite youn ak lòt. Konsènan ki jan yo kreye konpetans Panse entelijan ki dekri nan atik la Alice genyen konpetans. Koulye a, (apre fè kèk chanjman apre piblikasyon an nan atik ki anwo a) sou smartphone la sa a konpetans pral gade yon bagay tankou sa a:

Bati yon bot Telegram nan Yandex.Cloud

Kreye yon bot

Mwen ta renmen leson patikilye sa a itil tout moun, enkli. ak inisyasyon bòs mason bot. Se poutèt sa, nan seksyon sa a mwen pral dekri nan kèk detay ki jan yo kreye an jeneral Telegram'e bots. Pou moun ki pa bezwen enfòmasyon sa yo, ale nan seksyon sa yo.

Louvri aplikasyon an Telegaram, ann rele papa tout bots (yo gen tout bagay tankou moun) - @BotPather - epi anvan nou pral ba l kòmandman /help pou rafrechi memwa li sou sa nou ka fè. Kounye a nou pral enterese nan ekip la / newbot.

Bati yon bot Telegram nan Yandex.Cloud

Piske bot ki dekri isit la te deja kreye, pou rezon demonstrasyon mwen pral kreye yon lòt bot pou yon ti tan (ak Lè sa a, efase li). Mwen pral rele l ' DemoHabrBot. Non (non itilizatè) nan tout telegram bots dwe fini ak mo a botpa egzanp: MyCoolBot oswa my_cool_bot - sa a se pou bots. Men, anvan nou bay bot la yon non (File) - ak sa a se pou moun. Non an ka nan nenpòt lang, genyen espas, epi li pa oblije fini ak yon mo bot, epi li pa menm dwe inik. Nan egzanp sa a, mwen rele bot sa a Demo Habr.

Bati yon bot Telegram nan Yandex.Cloud

Koulye a, chwazi yon non pou bot la (non itilizatè, youn nan pou robo). Ann rele l DemoHabrBot. Tout bagay ki gen rapò ak non bot la (File) pa gen rapò ak non li ditou - non itilizatè (oswa aplike, men egzakteman opoze a). Apre yo fin kreye yon non bot inik, nou bezwen kopye epi sove (nan konfyans ki pi strik!) siy ki montre nan D a ak yon flèch wouj. Avèk èd li nou pral pita etabli soti nan Telegram'yon webhook pou nou Fonksyon Yandex.

Bati yon bot Telegram nan Yandex.Cloud

Koulye a, ann bay lòd la bay papa tout bots yo: /mybots, epi li pral montre nou yon lis tout bot nou te kreye yo. Ann kite bot la ki fèk kwit pou kont li pou kounye a Demo Habr (li te kreye pou montre kijan pou kreye bots, men nou pral sèvi ak li tou jodi a pou lòt rezon demonstrasyon), epi ann gade bot la. Panse entelijan (@SmartThoughtsBot). Klike sou bouton ki gen non li nan lis bots yo.

Bati yon bot Telegram nan Yandex.Cloud

Isit la nou ka konfigirasyon bot nou an. Peze bouton an Edit ... Nou pral kontinye nan koreksyon youn oswa yon lòt opsyon. Pou egzanp, klike sou bouton an Modifye Non nou ka chanje non bot la, di pito Panse entelijan, ekri Lide fou. Botpic - sa a se avatar bot la, dwe omwen 150 x 150 px. Deskripsyon — sa a se yon deskripsyon kout ke itilizatè a wè lè li kòmanse bot la pou premye fwa, kòm yon repons a kesyon an: Kisa bot sa a ka fè? A Pwopo - yon deskripsyon menm pi kout, ki transmèt ak yon lyen nan bot la (https://t.me/SmartThoughtsBot) oswa lè w ap gade enfòmasyon sou li.

Bati yon bot Telegram nan Yandex.Cloud

Tout sa nou dwe fè se mete kòmandman yo. Pou fè sa, peze bouton an Edit kòmandman yo. Pou estandadize pratik itilizatè Telegram rekòmande pou toujou itilize de kòmandman: / kòmanse и / ede, epi si bot la bezwen anviwònman, sèvi ak lòd adisyonèl /settings la. Bot nou an se senp tankou yon boul, kidonk li pa bezwen okenn anviwònman ankò. Nou ekri de premye kòmandman yo, ke nou pral trete nan kòd. Koulye a, si itilizatè a antre yon koupe (siy koupe: /) nan jaden an opinyon, yon lis kòmandman ap parèt pou seleksyon rapid. Tout bagay se tankou nan foto a: sou bò gòch la - nou enstale kòmandman atravè bot papa a; sou bò dwat la, kòmandman sa yo deja disponib pou itilizatè yo nan bot nou an.

Bati yon bot Telegram nan Yandex.Cloud

Fonksyon Yandex

Kounye a ke bot nou an te kreye, ann ale nan Yandex.Cloudpou kreye yon fonksyon ki pral egzekite kòd bot nou an. Si ou pa te travay ak Yandex.Cloud li materyèl la Sou entènèt jwèt Alice nan Bitrix Tè, ak Lè sa a, - Fonksyon Yandex voye lapòs. Mwen trè asire w ke de atik relativman kout sa yo pral ase pou ou gen yon konpreyansyon debaz sou sijè a.

Se konsa, nan konsole a Yandex.Cloud nan meni navigasyon gòch la chwazi atik la Fonksyon Cloud, epi peze bouton an Kreye yon fonksyon. Nou bay li yon non ak yon deskripsyon kout pou tèt nou.

Bati yon bot Telegram nan Yandex.Cloud

Apre peze bouton an kreye epi apre yon koup de segonn, nouvo fonksyon an ap parèt nan lis tout fonksyon yo. Klike sou non li - sa ap mennen nou sou paj la Revize fonksyon nou. Isit la ou bezwen aktive (On) chanje Fonksyon piblikpou li vin aksesib soti nan ekstèn (pou Yandex.Cloud) nan mond lan, ak siyifikasyon an nan jaden yo Rele lyen и Idantifikatè — kenbe li pwofondman sekrè nan men tout moun eksepte tèt ou ak Telegram, pou ke fonksyon ou pa ka rele pa divès magouyè.

Bati yon bot Telegram nan Yandex.Cloud

Koulye a, lè l sèvi avèk meni gòch la, ale nan Editè a fonksyon. Ann mete sou kote pou yon ti moman nou Panse entelijan, epi kreye yon fonksyon modèl minim pou tcheke fonksyonalite bot nou an... Sepandan, nan kontèks sa a, fonksyon sa a se bot nou an... Nan ti bout tan, kounye a ak isit la nou pral fè yon bot senp ki pral "glase" ( sa vle di voye tounen) demann itilizatè yo. Modèl sa a ka toujou itilize lè w ap kreye nouvo telegram bots pou asire w ke kominikasyon ak Telegram'ohm travay byen. Klike sou Kreye fichye, ann rele li index.js, ak sou entènèt Editè kòd kole kòd sa a nan dosye sa a:

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

Nan konsole Yandex.Cloud li ta dwe gade yon bagay tankou sa a:

Bati yon bot Telegram nan Yandex.Cloud

Pli lwen anba a nou endike Pwen antre - endèks.botkote endèks sa a se non fichye a (index.js), yon bot - non fonksyon (module.exports.bot). Kite tout lòt jaden yo jan yo ye, epi klike sou bouton ki nan kwen anwo dwat la Kreye vèsyon an. Nan kèk segond, vèsyon sa a nan fonksyon an pral kreye. Byento apre tès la webhook, nou pral kreye yon nouvo vèsyon - Panse entelijan.

Bati yon bot Telegram nan Yandex.Cloud

Depo objè

Kounye a ke nou te kreye Fonksyon Yandex, Vini non, pandan nou nan konsole a Yandex.Cloud, ann kreye sa yo rele bokit (bokit, i.e. bokit nan Ris, pa yon bouquet ditou) pou estoke dosye imaj ki pral itilize nan bot nou an Panse entelijan. Nan meni navigasyon gòch la, chwazi atik la Depo objè, peze bouton an Kreye yon bokit, vini ak yon non pou li, pou egzanp, img-bokit, epi, sa ki pi enpòtan, Li aksè nan objè yo Nou fè li piblik - otreman Telegram pa pral wè foto nou yo. Nou kite tout lòt jaden yo pa chanje. Peze bouton an Kreye yon bokit.

Bati yon bot Telegram nan Yandex.Cloud

Apre sa, lis tout bokit yo ta ka sanble yon bagay tankou sa a (si sa a se sèl bokit ou a):

Bati yon bot Telegram nan Yandex.Cloud

Koulye a, mwen sijere klike sou non an nan bokit la ak kreye yon katab andedan li yo òganize depo a nan imaj pou aplikasyon diferan ou yo. Pou egzanp, pou yon bot telegram Panse entelijan Mwen te kreye yon katab ki rele tg-bot-panse-entelijan (pa gen anyen, mwen pral konprann kòd sa a). Kreye youn tou.

Bati yon bot Telegram nan Yandex.Cloud

Koulye a, ou ka klike sou non katab la, ale nan li epi telechaje fichye yo:

Bati yon bot Telegram nan Yandex.Cloud

Epi klike sou non fichye a - jwenn li URL pou itilize nan bot nou an, ak an jeneral - nenpòt kote (men pa pibliye sa a URL nesesè, depi trafik soti nan Depo objè chaje).

Bati yon bot Telegram nan Yandex.Cloud

Sa a se fondamantalman tout sa ki gen nan li Depo objè. Koulye a, ou pral konnen ki sa yo dwe fè lè ou wè yon èd memwa yo Upload dosye la.

Webhook

Koulye a, nou pral enstale webhook - i.e. lè bot la resevwa yon aktyalizasyon (pa egzanp, yon mesaj soti nan yon itilizatè) soti nan sèvè a Telegram pou nou Fonksyon Yandex y ap voye yon demann (mande) ak done. Men yon liy ou ka senpleman kole nan jaden adrès navigatè w la epi answit rafrechi paj la (ou dwe fè sa sèlman yon fwa): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Nou pral jis ranplase li {bot_token} token nou te resevwa nan men papa bot la lè nou kreye bot nou an, epi {webhook_url} - sou URL nou Fonksyon Yandex. Tann yon minit! Men RossKomTsenzur entèdi founisè nan Federasyon Larisi la fè sèvis adrès la https://api.telegram.org. Wi, se vre. Men, vini ak yon bagay. Apre yo tout, ou ka, pou egzanp, mande grann ou sou sa a nan Ikrèn, Izrayèl oswa Kanada - pa gen okenn "Rosskomcensorship" la, ak Bondye sèlman konnen ki jan moun ap viv san li. Kòm yon rezilta, demann-repons lè w ap enstale yon webhook ta dwe sanble sa a:

Bati yon bot Telegram nan Yandex.Cloud

Nap teste. Li ta dwe "glas".

Bati yon bot Telegram nan Yandex.Cloud

Sa a se vre. Felisitasyon nou - kounye a Fonksyon Yandex te vin Telegram-bot!

Panse entelijan

Koulye a, ann fè Smart Thoughts. Kòd la louvri epi li kouche sou li GitHub. Li se jistis byen kòmante epi li se sèlman yon santèn liy long. Li li tankou yon libretto opera diva!

Bati yon bot Telegram nan Yandex.Cloud

Klone pwojè a epi enstale depandans:

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

Fè chanjman ou bezwen nan dosye a index.js (opsyonèl; ou pa oblije chanje anyen). Kreye postal-achiv, ak dosye index.js ak katab node_modules andedan, pou egzanp, anba non an smart.zip.

Bati yon bot Telegram nan Yandex.Cloud

Koulye a, ale nan konsole a nou an Fonksyon Yandex, chwazi tab la ZIP achiv, peze bouton an Chwazi yon fichye, epi telechaje achiv nou an smart.zip. Finalman, nan kwen an tèt dwat, klike sou bouton an Kreye vèsyon an.

Bati yon bot Telegram nan Yandex.Cloud

Nan kèk segond, lè fonksyon an mete ajou, nou pral teste bot nou an ankò. Koulye a, li pa "miwa", men li delivre panse entelijan!

Bati yon bot Telegram nan Yandex.Cloud

Se tout pou jodia. Plis atik swiv. Si w enterese nan li sa a, abònman nan notifikasyon sou nouvo atik. Ou ka abònman isit la, oswa nan Telegram-chanèl IT Tutorial ZakharOswa Twitter @mikezaharov.

Referans

Kòd sou GitHub
Fonksyon Cloud Yandex
Depo objè Yandex
Bots: Yon entwodiksyon pou devlopè yo
Telegram Bot API

Donasyon

Bati yon bot Telegram nan Yandex.Cloud

Sous: www.habr.com

Add nouvo kòmantè