
Sot në materialet e përditshme ne do të mbledhim në Telegram-bot duke përdorur (ose Yandex Functions — për shkak të shkurtimit) dhe (ose Kishte objekt — për qartësi). Kodi do të jetë në Node.js. Megjithatë, ka një rrethanë të veçantë — një organizatë që quhet, le t'i themi kështu, Roskomnadzor (censura është e ndaluar nga neni 29 i Kushtetutës së Federatës Ruse), nuk lejon ofruesit e internetit në Rusi të dërgojnë kërkesa në Telegram API në adresën: https://api.telegram.org/. Por ne nuk do ta bëjmë — nuk ka, nuk ka. Sepse në valixhen tonë kemi ashtuquajturat webhooks — me ndihmën e tyre ne nuk dërgojmë kërkesa në një adresë të caktuar, por thjesht dërgojmë kërkesat tona si përgjigje në çdo kërkesë ndaj nesh. Do thotë, si në Odesa — përgjigjemi me një pyetje për një pyetje. Prandaj Telegram API në kodin tonë nuk do të figurojë.
KërcënimiEmrat e përmendur në këtë artikull për ndonjë agjenci shtetërore janë imagjinarë, dhe çdo ngjashmëri me emrat e organizatave reale është rastësore.
Pra, ne do të krijojmë një bot që do të na furnizojë me mendime të zgjuara. Saktësisht si në imazhin:
Mund ta provoni atë në veprim — ja emri: @SmartThoughtsBot. A keni vënë re butonin «Aftësia e Alisës»? Это потому, что бот является своеобразным «компаньоном» для одноименного aftësia e Alisës, dmth, ajo kryen të njëjtat funksione si aftësia e Alisës dhe, ndoshta, ato do të mund të ekzistojnë paqësisht duke e promovuar njëra-tjetrën. Për se si të krijoni aftësinë Mendime të Zgjuara është treguar në artikullin . Tani (pas disa ndryshimeve të bëra pas publikimit të artikullit të lartpërmendur) në smartphone ky aftësi do të duket përafërsisht kështu:
Krijimi i botos
Do doja që ky tutorial të ishte i dobishëm për të gjithë, përfshirë edhe fillestarët "ndërtues të botos". Prandaj, në këtë pjesë, do ta përshkruaj siç duhet se si të krijoni në TelegramPër ata që nuk kanë nevojë për këtë informacion — kaloni në seksionet e ardhshme.
Hap aplikacionin Telegaram, thërrasim babanë e të gjitha botos (ata kanë gjithçka si njerëzit) — @BotFather — dhe për fillim i japim atij komandën /help, për të freskuar kujtesën tonë për atë që mund të bëjmë. Tani do të na interesojë komanda /newbot.

Duke pasur parasysh se boti që po përshkruhet këtu është tashmë krijuar, për qëllime demonstrative do të krijoj për një kohë të shkurtër një botos tjetër (pastaj do ta fshij). Do ta quaj DemoHabrBot. Emrat (username) e të gjithë botos të Telegram duhet të përfundojnë me fjalën bot, për shembull: MyCoolBot или my_cool_bot — kjo është për robotët. Por fillimisht i japim robotit një emër (emri) — dhe kjo është për njerëzit. Emri mund të jetë në çdo gjuhë, të përmbajë hapësira, nuk është e nevojshme të përfundojë me fjalën bot, dhe as nuk është e nevojshme të jetë unik. Në këtë shembull e kam quajtur këtë robot Demo Habr.

Tani zgjedhim një emër për robotin (username, ai që është për robotët). Le t'i japim emrin DemoHabrBot. Çfarëdo që ka të bëjë me emrin e robotit (emri) nuk ka të bëjë fare me emrin e tij — username (ose lidhet, por me precizitetin në të kundërt). Pas krijimit të suksesshëm të një emri unik për robotin, na nevojitet të kopjojmë dhe ruajmë (me shumë sekret!) token, e cila është treguar në ekran me shigjetën e kuqe. Me ndihmën e saj do të vendosim në një moment Telegrampër webhooks në funksionin Yandex.

Tani do t'i japim komandën atij që është babai i të gjithë robotëve: /mybots, dhe ai do të na tregojë listën e të gjithë robotëve që kemi krijuar. Le ta lëmë për momentin robotin e ri të sapo krijuar Demo Habr (ai u krijua për të treguar se si krijohen robotët, por ne do ta përdorim sot edhe për qëllime të tjera demonstruese), dhe të shqyrtojmë robotin Mendime të Mençura (@SmartThoughtsBot). Klikoni në listën e robotëve butonin me emrin e tij.

Këtu mund të konfigurojmë robotin tonë. Duke klikuar butonin Redakto… ne do të kalojmë në redaktimin e njërit ose tjetrit opsion. Për shembull, duke klikuar butonin Edit Name mund të ndryshojmë emrin e robotit, le të themi në vend të Mendime të Mençura, të shkruajmë Ide Absurde. Botpic — ky është avatari i robotit, duhet të jetë të paktën 150 x 150 px. Përshkrimi — ky është një përshkrim i shkurtër, që përdoruesi e sheh gjatë fillimit të parë të robotit, si përgjigje ndaj pyetjes: Çfarë mund të bëjë ky robot? Rreth — një përshkrim edhe më të shkurtër, i cili dërgohet me një lidhje në robot (https://t.me/SmartThoughtsBot) ose kur shikohet informacioni mbi të.

Ne vetëm sa mbetemi të konfigurojmë komandat. Për këtë klikoni butonin Edit Commands. Për standardizimin e praktikës përdoruese Telegram këshillon gjithmonë përdorimin e dy komandave: /start dhe /help, dhe nëse robotit i nevojiten cilësime — një komandë shtesë /settings. Robotin tonë është i thjeshtë si një top, prandaj për momentin nuk i nevojiten cilësime. Ne shkruajmë dy komandat e para, të cilat më pas do t'i përpunojmë në kod. Tani, nëse përdoruesi shkruan në fushën e inputit një slash (shenjë e thyer: /), do të shfaqet lista e komandave për seleksion të shpejtë. E gjithë kjo si në imazhin: majtas — vendosim komandat përmes robotit-babë; djathtas këto komanda tashmë janë të disponueshme për përdoruesit në robotin tonë.

funksionin Yandex
Tani, kur robotin tonë është krijuar, kalojmë te Yandex.Cloud, për të krijuar një funksion që do të ekzekutojë kodin e botit tonë. Nëse nuk keni punuar më parë me Yandex.Cloud , lexoni materialin , dhe pastaj — . Jam pothuajse i sigurt se këto dy artikuj relativisht të shkurtër do t'ju mjaftojnë për një kuptim bazë të temës.
Pra, në konsolën Yandex.Cloud në menunë e navigimit të majtë, zgjidhni pikën Cloud Functions, dhe pastaj klikoni butonin Krijo funksion. I japim emër, dhe për vete — një përshkrim të shkurtër.

Pas klikimit të butonit Krijo dhe pas disa sekondash, funksioni i ri do të shfaqet në listën e të gjitha funksioneve. Klikoni mbi emrin e tij — kjo do të na çojë në faqen Përmbledhje e funksionit tonë. Këtu duhet të aktivizojmë (On) kalimin Funksion publik, në mënyrë që të bëhet e disponueshme nga bota e jashtme (për Yandex.Cloud) , dhe vlera e fushave Linku për thirrje dhe Identifikuesi — mbani të fshehtë nga të gjithë përveç vetes dhe Telegram’it, që funksioni juaj të mos mund të thirret nga mashtrues të ndryshëm.

Tani me ndihmën e menusë së majtë kalojmë në Redaktorin e funksionit. Le të shtyjmë për pak kohë anëtarët tanë dhe të krijojmë një funksion minimal-shembull për të provuar funksionalitetin e botit tonë… Në fakt, në këtë kontekst ky funksion është bot-i ynë… Në shkurt, tani dhe këtu do të krijojmë një bot të thjeshtë, i cili do të "reflektojë" (dmth. dërgojë prapa) kërkesat e përdoruesve. Ky shembull mund të përdoret gjithmonë kur krijoni bota të reja telegrami, për të siguruar që lidhja me Mendime të MençuraTelegramin Telegram’itKrijo skedarin , e quajmë atë, dhe në redaktorin online index.jse kodit ngjeni këtë kod në skedarin: 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ë konsolën Yandex.Cloud kjo do të duket pak a shumë kështu:
Pastaj pak më poshtë jepni

Pika e hyrjes index.bot — , kuindex është emri i skedarit ( ), dheindex.js— emri i funksionit ( bot module.exports.bot). Të gjitha fushat e tjera lëna "siç janë", dhe në këndin e djathtë të sipërm klikoni butoninKrijo versionin . Pas disa sekondash ky version funksioni do të krijohet. Së shpejti, pas testimittë webhooks , ne do të krijojmë një version të ri —, ne do të krijojmë një version të ri — Mendime të Mençura.

Kishte objekt
Tani tani që kemi krijuar funksionin Yandex, le të vazhdojmë, ndërsa jemi në konsolë Yandex.Cloud, të krijojmë një "bucket" (bucket, dmth. një kovë në rusisht, jo një buketë) për ruajtjen e skedarëve të imazheve që do të përdoren në botin tonë Mendime të Mençura. Në menunë e navigimit të majtë, zgjidhni opsionin Object Storage, klikoni butonin Krijo një bucket, imagjinoni një emër për të, për shembull, img-bucket, dhe, së fundi, Të drejtën për të lexuar objektet duke e bërë publik — përndryshe Telegram’it nuk do t'i shohë imazhet tona. Të gjitha fushat e tjera i lëmë pa ndryshime. Klikoni butonin Krijo një bucket.

Pas kësaj, lista e të gjithë bucketeve mund të duken kështu (nëse ky është bucket juaj i vetëm):

Tani propozoj të klikoni mbi emrin e bucket-it, dhe brenda tij të krijoni një dosje, për të organizuar ruajtjen e imazheve për aplikacione të ndryshme. Për shembull, për botën e Telegram-it Mendime të Mençura kam krijuar një dosje me emrin tg-bot-smart-thoughts (nuk ka problem, do e kuptoj këtë kod). Krijoni dhe ju ndonjë dosje.

Tani mund të klikoni mbi emrin e dosjes, të hyni brenda saj dhe të ngarkoni skedarë:

Dhe duke klikuar mbi emrin e skedarit — ta merrni atë URL për përdorim në botin tonë, dhe në tërësi — kudo (por, mos e publikoni këtë URL pa nevojë, pasi trafiku nga Object Storage taksiohet).

Kjo është, pra, gjithçka në lidhje me Object Storage. Tani do ta dini se çfarë duhet të bëni kur të shihni thirrjen për të ngarkuar skedarë atje.
Webhook
Tani do të vendosim webhook — dmth. kur boti merr një përditësim (p.sh. një mesazh nga një përdorues), nga serveri Telegram do të dërgohet një kërkesë ( funksionin Yandex request) me të dhëna. Ja linja që mund ta kopjoni thjesht në fushën e adresës së shfletuesit, dhe pastaj të rifreskoni faqen (kjo duhet bërë vetëm një herë):Thjesht zëvendësojme https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
{bot_token} me token-in që kemi marrë nga boti-në-ati gjatë krijimit të botit tonë, ndërsa {webhook_url} — me tonin URL . Një minutë! Por, a nuk Yandex Functionsndalon ofruesit në RF të shërbejnë adresën Roskomnadzor . Po, e saktë. Por, duhet të mendoni diçka. Në të vërtetë, mund të kërkoni nga gjyshja juaj në Ukrainë, Izrael ose Kanada — atje nuk ka "censurë ruse", dhe vetëm Perëndia e di se si jetojnë njerëzit pa të. Në fund, kërkesa-përgjigje gjatë vendosjes së webhook-ut duhet të duket kështu: https://api.telegram.orgPo testojmë. Duhet të "reflektojë".

Ashtu është. Urime — tani

u bë funksionin Yandex -bot! TelegramTani le të bëjmë Mendime të Mençura. Kodi është hapur dhe ndodhet në
Mendime të Mençura
. Ai është mjaft i komentuar, dhe ka gjithsej njëqind rreshta. Lexojeni si një diva operiste libretin! . Ai është komentuar mjaft mirë dhe ka vetëm njëqind rreshta. Lexojeni si një libretto operistik!

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 e nevojshme në skedarin index.js (opcionale; mund të mos ndryshoni asgjë). Krijoni zip-arkivin, me skedarin index.js dhe dosjen node_modules brenda, për shembull, me emrin smart.zip.

Tani kaloni në konsolën tonë, Yandex Functions, zgjidhni skedarin ZIP-arkiv, klikoni butonin Zgjidh skedarin, dhe ngarkoni arkivin tonë smart.zip. Në fund, në qoshen e sipërme të djathtë klikoni butonin . Pas disa sekondash ky version funksioni do të krijohet. Së shpejti, pas testimit.

Pas disa sekondash, kur funksioni të rinovohet, ta testojmë sërish botin tonë. Tani ai nuk "reflekton", por sjell mendime të mençura!

Kjo është e gjitha për sot. Artikuj të tjerë do t'i ndjekin. Kush do që është i interesuar të lexojë diçka të tillë - abonohuni për njoftimet mbi artikujt e rinj. Mund të abonoheni këtu, ose në Telegram-kanalin , ose Twitter .
Linket
Donatat
Burimi: habr.com
