Ndërtimi i një roboti Telegram në Yandex.Cloud

Ndërtimi i një roboti Telegram në Yandex.Cloud

Sot, nga materialet e improvizuara, ne do të mbledhim në Yandex.Cloud Telegram bot me Funksionet e resë Yandex (Ose Funksionet Yandex për shkurtësi) dhe Ruajtja e objekteve Yandex (Ose Ruajtja e objekteve - për qartësi). Kodi do të jetë aktiv Node.js. Sidoqoftë, ekziston një rrethanë pikante - një organizatë e caktuar e quajtur, le të themi, RossKomCensorship (censura është e ndaluar nga neni 29 i Kushtetutës së Federatës Ruse), nuk i lejon ofruesit e internetit në Rusi të transferojnë kërkesat në Telegram API në adresën: https://api.telegram.org/. Epo, nuk do ta bëjmë - jo, jo. Në të vërtetë, në çantën tonë ka të ashtuquajturat. webhooks - Me ndihmën e tyre, ne nuk bëjmë kërkesa në një adresë të caktuar, por vetëm dërgojmë kërkesën tonë si përgjigje për çdo kërkesë tek ne. Kjo është, si në Odessa - ne i përgjigjemi një pyetjeje me një pyetje. Kjo është arsyeja pse Telegram API nuk do të shfaqet në kodin tonë.

PërgjegjësiaEmrat e çdo organizate shtetërore të përmendur në këtë artikull janë fiktive dhe rastësitë e mundshme me emrat e organizatave reale janë të rastësishme.

Pra, ne do të bëjmë një bot që do të na furnizojë me mendime të zgjuara. Pikërisht si në foto:

Ndërtimi i një roboti Telegram në Yandex.Cloud

Mund ta provoni në veprim - këtu është emri: @SmartThoughtsBot. Vini re butonin "Shkathtësia e Alices"? Kjo sepse boti është një lloj "shoku" për të njëjtin emër Shkathtësia e Alice, d.m.th. kryen të njëjtat funksione si Shkathtësia e Alices dhe, ndoshta, se ata mund të bashkëjetojnë në mënyrë paqësore duke reklamuar njëri-tjetrin. Rreth mënyrës së krijimit Shkathtësi e të menduarit të zgjuar përshkruar në artikull Alice merr aftësinë. Tani (pasi bëri disa ndryshime pas publikimit të artikullit të mësipërm) në një smartphone kjo aftësi do të duket diçka si kjo:

Ndërtimi i një roboti Telegram në Yandex.Cloud

Krijimi i botit

Do të doja që ky tutorial të ishte i dobishëm për të gjithë, përfshirë. dhe fillestar "bot builders". Prandaj, në këtë seksion do të përshkruaj në detaje se si të krijojmë në përgjithësi Telegram'e bots. Për ata që nuk kanë nevojë për këtë informacion, vazhdoni në seksionet vijuese.

Hapni aplikacionin Telegaram, ne e quajmë babain e të gjithë robotëve (ata kanë gjithçka si njerëzit) - @BotFather - dhe për të filluar, ne do t'i japim atij komandën / ndihmë për të rifreskuar kujtesën tonë për atë që mund të bëjmë. Tani jemi të interesuar për ekipin / newbot.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Meqenëse roboti i përshkruar këtu është krijuar tashmë, për qëllime demonstrimi do të krijoj një bot tjetër për një kohë të shkurtër (pastaj do ta fshij). Unë do ta thërras atë DemoHabrBot. Emrat (Emri i përdoruesit) të gjithë bot-et e telegramit duhet të përfundojnë me një fjalë bot, për shembull: MyCoolBot ose my_cool_bot Kjo është për robotët. Por së pari, jepini një emër robotit (emër) është për njerëzit. Emri mund të jetë në çdo gjuhë, të përmbajë hapësira, nuk duhet të përfundojë me një fjalë bot, dhe as nuk duhet të jetë unik. Në këtë shembull, unë e quajta këtë bot Demo Habr.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Tani zgjidhni një emër për robotin (Emri i përdoruesit, ai për robotët). Le ta quajmë DemoHabrBot. Gjithçka që lidhet me emrin e robotit (emër) nuk ka lidhje fare me emrin e tij - Emri i përdoruesit (ose vlen, por pikërisht e kundërta). Pasi të kemi krijuar me sukses një emër unik boti, duhet të kopjojmë dhe ruajmë (në konfidencën më të rreptë!) shenjën e treguar në pamjen e ekranit me një shigjetë të kuqe. Me ndihmën e tij, ne më vonë do të instalojmë daljen Telegram'një uebhook për tonën Funksioni Yandex.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Dhe tani ne do t'i japim urdhrin babait të të gjithë robotëve: /mybotsdhe do të na tregojë një listë të të gjithë robotëve që kemi krijuar. Le ta lëmë të qetë botin e sapopjekur tani për tani Demo Habr (u krijua për të treguar se si të krijohen bot, por ne do ta përdorim sot për qëllime të tjera demonstrimi), dhe merrni parasysh robotin Mendime të zgjuara (@SmartThoughtsBot). Klikoni butonin me emrin e tij në listën e robotëve.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Këtu mund të konfigurojmë botin tonë. Duke shtypur një buton Edit ... ne do të kalojmë në modifikimin e një ose një tjetër opsioni. Për shembull, duke klikuar në butonin Redakto emrin ne mund të ndryshojmë emrin e botit, të themi në vend të Mendime të zgjuara, shkruaj ide të çmendura. Botpic - ky është avatari i robotit, duhet të jetë të paktën 150 x 150 px. Përshkrim është një përshkrim i shkurtër që përdoruesi e sheh kur bot lëshohet për herë të parë, si përgjigje për pyetjen: Çfarë mund të bëjë ky bot? Rreth Nesh - një përshkrim edhe më i shkurtër, i cili transmetohet me një lidhje në bot (https://t.me/SmartThoughtsBot) ose kur shikoni informacion në lidhje me të.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Thjesht duhet të vendosim komandat. Për ta bërë këtë, shtypni butonin Redakto komandat. Për të standardizuar praktikat e përdoruesve Telegram rekomandon gjithmonë përdorimin e dy komandave: /fillo и / ndihmë, dhe nëse roboti ka nevojë për cilësime, një komandë shtesë /settings. Boti ynë është aq i thjeshtë sa një top, kështu që nuk ka nevojë për ndonjë cilësim ende. Shkruajmë dy komandat e para, të cilat më pas do t'i përpunojmë në kod. Tani, nëse përdoruesi fut një vijë të pjerrët (karakteri i pjerrët: /) në fushën e hyrjes, do të shfaqet një listë komandash për zgjedhjen e tyre të shpejtë. Gjithçka është si në foto: në të majtë - vendosim komanda përmes bot-babait; në të djathtë, këto komanda janë tashmë të disponueshme për përdoruesit në robotin tonë.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Funksioni Yandex

Tani që boti ynë është krijuar, le të shkojmë te Yandex.Cloudpër të krijuar një funksion që do të ekzekutojë kodin tonë bot. Nëse nuk keni punuar me Yandex.Cloud lexoni materialin Alisa në tokën e Bitrix-it, dhe pastaj - Funksionet Yandex dërgojnë postë. Jam pothuajse i sigurt se këta dy artikuj relativisht të vegjël do të jenë të mjaftueshëm që ju të keni një kuptim bazë të temës.

Pra, në tastierë Yandex.Retë në menynë e majtë të navigimit, zgjidhni artikullin Funksionet e reve, dhe më pas shtypni butonin Krijo një funksion. Ne i japim një emër, dhe për veten tonë - një përshkrim të shkurtër.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Pasi të keni shtypur butonin krijoj dhe pas disa sekondash, funksioni i ri do të shfaqet në listën e të gjitha funksioneve. Klikoni mbi emrin e saj - kjo do të na çojë në faqe Rishikimi funksionin tonë. Këtu ju duhet të aktivizoniOn) kaloni funksion publikpër ta vënë atë në dispozicion nga jashtë (për Yandex.Retë) të botës dhe vlerën e fushave Lidhja për të thirrur и Identifikuesi - Mbajeni në fshehtësi të thellë nga të gjithë përveç vetes dhe Telegramit, në mënyrë që mashtruesit e ndryshëm të mos e thërrasin funksionin tuaj.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Tani duke përdorur menunë e majtë shkoni te Redaktori funksione. Le të lëmë mënjanë për një moment tonën Mendime të zgjuara, dhe krijoni një funksion minimal shabllon për të kontrolluar performancën e botit tonë... Megjithatë, në këtë kontekst, ky funksion është boti ynë... Shkurtimisht, tani dhe pikërisht këtu do të bëjmë botin më të thjeshtë që do të “pasqyrojë” ( dmth dërgoni ) kërkesat e përdoruesve. Ky shabllon mund të përdoret gjithmonë kur krijohen bote të reja telegrami për t'u siguruar që komunikimi me Telegram'om punon mirë. Klikoni Krijo skedar, thirreni indeks.js, dhe në internet Redaktori i kodit ngjisni kodin e mëposhtëm në këtë skedar:

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

Në tastierën Yandex.Cloud, duhet të duket diçka si kjo:

Ndërtimi i një roboti Telegram në Yandex.Cloud

Më poshtë, ne tregojmë pikë hyrëse - indeks.botKu indeks ky është emri i skedarit (indeks.js), dhe bot - emri i funksionit (module.eksportet.bot). Lërini të gjitha fushat e tjera "siç janë" dhe në këndin e sipërm të djathtë klikoni butonin Krijo Version. Pas disa sekondash, ky version i funksionit do të krijohet. Menjëherë pas testimit uebgrep, do të krijojmë një version të ri − Mendime të zgjuara.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Ruajtja e objekteve

Tani që kemi ngritur Funksioni Yandexle të shkojmë ndërsa jemi në tastierë Yandex.Retë, krijojnë një të ashtuquajtur. kovë (kovë, d.m.th. kovë në rusisht, në asnjë mënyrë një buqetë) për ruajtjen e skedarëve të imazheve që do të përdoren në robotin tonë Mendime të zgjuara. Zgjidhni nga menyja e majtë e navigimit Ruajtja e objekteve, Shtyp butonin Krijo kovë, jepini një emër, për shembull, img-kovëdhe, më e rëndësishmja, Lexoni qasjen në objekte bëje publike - përndryshe Telegram nuk do t'i shohë fotot tona. Të gjitha fushat e tjera janë lënë të pandryshuara. Ne shtypim butonin Krijo kovë.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Pas kësaj, një listë e të gjitha kovave mund të duket diçka si kjo (nëse kjo është kova juaj e vetme):

Ndërtimi i një roboti Telegram në Yandex.Cloud

Tani unë propozoj të klikoni në emrin e kovës dhe të krijoni një dosje brenda saj për të organizuar ruajtjen e fotografive për aplikacione të ndryshme. Për shembull, për një bot telegram Mendime të zgjuara kam krijuar një dosje të quajtur tg-bot-mendime të zgjuara (Asgjë, unë do ta kuptoj këtë shifër). Krijo edhe një.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Tani mund të klikoni në emrin e dosjes, të futeni në të dhe të ngarkoni skedarë:

Ndërtimi i një roboti Telegram në Yandex.Cloud

Dhe duke klikuar mbi emrin e skedarit - merrni atë URL për përdorim në botin tonë, dhe në përgjithësi - kudo (por, mos e publikoni këtë URL në mënyrë të panevojshme, pasi trafiku nga ruajtjen e objekteve i ngarkuar).

Ndërtimi i një roboti Telegram në Yandex.Cloud

Këtu, në fakt, kjo është e gjitha ruajtjen e objekteve. Tani do të dini se çfarë të bëni kur të shihni kërkesën për të ngarkuar skedarë atje.

Uebhook

Tani do të instalojmë uebgrep - d.m.th. kur roboti merr një përditësim (për shembull, një mesazh nga përdoruesi), nga serveri Telegram në tonën Funksioni Yandex kërkesa do të dërgohetkërkojë) me të dhëna. Këtu është një varg që thjesht mund ta ngjitni në fushën e adresës së shfletuesit dhe më pas të rifreskoni faqen (kjo duhet të bëhet vetëm një herë): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Thjesht zëvendësoni {bot_token} në shenjën që morëm nga babai bot gjatë krijimit të botit tonë, dhe {webhook_url} - në URL tonë Funksionet Yandex. Prit një minutë! Por RossKomCensorship ndalon ofruesit në Federatën Ruse që të ofrojnë adresën https://api.telegram.org. Po ashtu eshte. Por ju mund të mendoni për diçka. Në fund të fundit, ju mund, për shembull, të pyesni gjyshen tuaj për këtë në Ukrainë, Izrael ose Kanada - nuk ka "censurë ruse" atje, dhe vetëm Zoti e di se si njerëzit jetojnë pa të. Si rezultat, përgjigja e kërkesës gjatë instalimit të uebhook duhet të duket si kjo:

Ndërtimi i një roboti Telegram në Yandex.Cloud

Duke testuar. Duhet të pasqyrohet.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Kjo eshte e vertetë. Urimet tona - tani Funksioni Yandex është bërë Telegram-bot!

Mendime të zgjuara

Dhe tani ne bëjmë Mendime të zgjuara. Kodi është i hapur dhe shtrihet GitHub. Është komentuar mjaft mirë dhe është vetëm njëqind rreshta. Lexojeni si një libret të divës së operës!

Ndërtimi i një roboti Telegram në Yandex.Cloud

Klononi projektin dhe instaloni varësitë:

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

Bëni ndryshimet që ju nevojiten në skedar indeks.js (opsionale; nuk mund të ndryshoni asgjë). Krijo zip-arkiv, me dosje indeks.js dhe dosje nyjet_module brenda, për shembull, i quajtur i zgjuar.zip.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Tani shkoni në tastierë në tonë Funksionet Yandex, zgjidhni skedën Arkivi ZIP, Shtyp butonin Zgjidhni një skedardhe shkarkoni arkivin tonë i zgjuar.zip. Së fundi, në këndin e sipërm të djathtë, klikoni butonin Krijo Version.

Ndërtimi i një roboti Telegram në Yandex.Cloud

Në pak sekonda, kur funksioni të përditësohet, ne do të testojmë përsëri botin tonë. Tani ai nuk "pasqyron", por jep mendime të zgjuara!

Ndërtimi i një roboti Telegram në Yandex.Cloud

Kaq për sot. Artikuj të tjerë vijojnë. Nëse jeni të interesuar ta lexoni këtë, regjistrohuni në njoftimet e artikujve të rinj. Mund të abonoheni këtu ose Telegram-kanali Tutorial IT ZakharOse Twitter @mikezaharov.

Referencat

Kodi në GitHub
Funksionet e resë Yandex
Ruajtja e objekteve Yandex
Bots: Një hyrje për zhvilluesit
Telegram Bot API

Donacionet

Ndërtimi i një roboti Telegram në Yandex.Cloud

Burimi: www.habr.com

Shto një koment