Krijojmë një Telegram-bot në Yandex.Cloud

Krijojmë një Telegram-bot në Yandex.Cloud

Sot nga materiale të zakonshme ne do të mblidhen në Yandex.Cloud Telegram-bot duke përdorur Yandex Cloud Functions (ose Funksionet e Yandex — për shkurtim) dhe Yandex Object Storage (ose Depoja e Objektit — për qartësi). Kodi do të jetë në Node.js. Megjithatë, ka një rrethanë delikate — një organizatë me emrin, le ta quajmë 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/. E pra, nuk do ta bëjmë — nëse nuk është, nuk është. Sepse në valixhen tonë kemi të ashtuquajturat webhooks — me ndihmën e tyre ne nuk dërgojmë kërkesa në një adresë specifike, por thjesht dërgojmë kërkesën tonë si përgjigje ndaj çdo kërkese që na vjen. Pra, si në Odessa — përgjigjemi me një pyetje për një pyetje. Prandaj Telegram API në kodin tonë nuk do të përfshihet.

KufizimiEmrat e përmendur në këtë artikull të ndonjë organizate shtetërore janë të sajuar, dhe ngjashmëritë e mundshme me emrat e organizatave reale janë rastësore.

Pra, do të krijojmë një bot që do të na furnizojë me mendime të zgjuara. Pikërisht si në imazh:

Krijojmë një Telegram-bot në Yandex.Cloud

Mund ta provoni atë në veprim — ja emri: @SmartThoughtsBot. Vërejtëm butonin «Aftësia e Alisë»? Это потому, что бот является своеобразным «компаньоном» для одноименного aftësia e Alisë, dmth. ai kryen të njëjtat funksione si aftësia e Alisë dhe, ndoshta, ata do të mund të bashkëjetojnë pa probleme duke reklamuar njëri-tjetrin. Rreth mënyrës se si të krijoni aftësinë E Mendjeve të Smart është treguar në artikullin Ali tha merr aftësinë. Tani (pas disa ndryshimeve që u bënë pas publikimit të artikullit të përmendur më sipër) në smartphone ky aftësi do të duket më pak kështu:

Krijojmë një Telegram-bot në Yandex.Cloud

Krijimi i botëve

Do të doja që ky udhëzues të ishte i dobishëm për të gjithë, përfshirë ata që sapo fillojnë «ndërtimin e botëve». Prandaj, në këtë pjesë do të përshkruaj në detaje se si krijohen në Telegrambota e botëve. Për ata që nuk kanë nevojë për këtë informacion — kaloni në seksionet e ardhshme.

Hapni aplikacionin Telegaram, thërrasëm babain e të gjithë botëve (ata janë si njerëzit) — @BotFather — dhe për fillim i japim atij komandën /help, për të freskuar kujtesën se çfarë mund të bëjmë. Tani, ne do të interesoheni për komandën /newbot.

Krijojmë një Telegram-bot në Yandex.Cloud

Duke qenë se boti i përshkruar këtu tashmë është krijuar, për qëllime demonstruese do të krijoj një boti tjetër për një kohë të shkurtër (pastaj do ta fshij). Do ta quaj DemoHabrBot. Emrat (username) të gjithë bota të Telegram duhet të përfundojnë me fjalën bot, për shembull: MyCoolBot ose my_cool_bot — ky është për botët. Por së pari, i japim botit një emër (emri) — dhe ky ë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, unë e quajta këtë bot Demo Habra.

Krijojmë një Telegram-bot në Yandex.Cloud

Tani po zgjedhim emrin për botin (username, ai që është për botët). Le ta quajmë DemoHabrBot. Çdo gjë që i përket emrit të botit (emri) nuk i përket fare emrit të tij — username (ose i përket, por me precizitet të kundërt). Pas krijimit të suksesshëm të emrit unik të botit, duhet ta kopjojmë dhe ta ruajmë (në një fshehtësi të rreptë!) token, e cila shfaqet në screenshot me arrow të kuqe. Me të do të vendosim më vonë një webhook nga Telegrampër funksionin tonë Yandex.

Krijojmë një Telegram-bot në Yandex.Cloud

Tani do t’i japim komandën atij që është bashkëpunimi i të gjithë botëve: /mybots, dhe ai do të na tregojë listën e të gjithë botëve që kemi krijuar. Tani, le ta lëmë pak botin e sapokrijuar Demo Habra (ai u krijua për të treguar se si të krijoni bota, por ne do ta përdorim përsëri më vonë për qëllime të tjera demostrative), dhe le të shqyrtojmë botin Mendime të Mençura (@SmartThoughtsBot). Klikoni në listën e botëve mbi butonin me emrin e tij.

Krijojmë një Telegram-bot në Yandex.Cloud

Këtu mund të konfigurojmë robotin tonë. Duke klikuar butonin Ndrysho… do të kalojmë në modifikimin e një opcioni të caktuar. Për shembull, duke klikuar në butonin Ndrysho Emrin mund të ndryshojmë emrin e robotit, për shembull nga Mendime të Mençuratë shkruajmë Ide të Çmendura. Botpic — është avatari i robotit, duhet të jetë jo më pak se 150 x 150 px. Përshkrimi — është një përshkrim i shkurtër, që përdoruesi e sheh në fillim të funksionimit të robotit, si përgjigje në pyetjen: Çfarë mund të bëjë ky robot? Rreth — një përshkrim edhe më të shkurtër, i cili dërgohet me lidhje në robot (https://t.me/SmartThoughtsBot) ose gjatë shikimit të informacionit për të.

Krijojmë një Telegram-bot në Yandex.Cloud

Na ka mbetur vetëm të konfigurojmë komandat. Për këtë, klikoni butonin Ndrysho Komandat. Për standardizimin e praktikës së përdoruesve Telegram rekomandohet të përdoren gjithmonë dy komandat: /start dhe /help, dhe nëse boti ka nevojë për rregullime — një komandë shtesë /settings. Boti ynë është i thjeshtë si një top, prandaj rregullimet për të nuk janë ende të nevojshme. Shkruajmë dy komandat e para, të cilat më pas do t'i përpunojmë në kod. Tani, nëse përdoruesi në fushën e hyrjes shkron rresht (shkronjë e drejtë: /), do të shfaqet një listë komandash për zgjedhje të shpejtë. Çdo gjë, si në imazh: majtas — vendosim komandat përmes botit-prind; djathtas, këto komanda janë tashmë të disponueshme për përdoruesit në botin tonë.

Krijojmë një Telegram-bot në Yandex.Cloud

Funksioni Yandex

Tani, pasi bota jonë është krijuar, kalojmë në Yandex.Cloud, për të krijuar një funksion që do të përpunojë kodin e botit tonë. Nëse nuk keni punuar më parë me Yandex.Cloud , lexoni materialin Alisa në vendin Bitrix, dhe pastaj — Funksionet Yandex dërgojnë e-mail. Jam almost i sigurt se këto dy artikuj relativisht të vegjël do t'ju mjaftojnë për një kuptim themelor të temës.

Pra, në konsolën Yandex.Cloud , në menunë e majtë të navigimit zgjidhni pikën Cloud Functions, dhe më pas klikoni butonin Krijo funksion. I japim emër, dhe për vete — një përshkrim të shkurtër.

Krijojmë një Telegram-bot në Yandex.Cloud

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ë aktivizoni (Aktivizo) ndërruesin Funksioni publik, në mënyrë që të bëhet i disponueshëm nga bota e jashtme (për Yandex.Cloud) dhe vlera e fushave Linku për thirrjen dhe Identifikuesi — ruajeni në thellësi në fshehtësi nga të tjerët përveç vetes dhe Telegram-it, për të parandaluar që funksioni juaj të thirret nga mashtrues të ndryshëm.

Krijojmë një Telegram-bot në Yandex.Cloud

Tani me ndihmën e menusë së majtë kalojmë në Redaktuesi i funksionit. Le të anulojmë për pak kohë Mendime të Mençura, dhe të krijojmë një funksion minimal si shabllon për të verifikuar funksionalitetin e robotit tonë… Megjithatë, në këtë kontekst ky funksion është robotin tonë… Në përfundim, tani dhe këtu do të krijojmë një robot të thjeshtë, i cili do të “reflektojë” (dmth. të kthejë) kërkesat e përdoruesve. Ky shabllon mund të përdoret gjithmonë gjatë krijimit të robotëve të rinj të Telegram-it për t'u siguruar që lidhja me Telegram-inpo funksionon normalisht. Klikoni Krijo skedarin, emërtojeni index.js, dhe në Redaktuesin e kodit online ngjiteni në këtë skedar kodin e mëposhtëm: shtojmë në këtë skedë kodin vijues:

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 e Yandex.Cloud, kjo duhet të duket si më poshtë:

Krijojmë një Telegram-bot në Yandex.Cloud

Më pas, pak më poshtë, shënojmë Pika e hyrjesindex.bot, ku index këto janë emrat e skedarëve (index.js), ndërsa bot — emri i funksionit (module.exports.bot). Të gjitha fushat e tjera i lëmë "si kanë qenë", dhe në këndin e sipërm të djathtë klikojmë butonin Krijo versionin. Pas disa sekondash, ky version i funksionit do të krijohet. Së shpejti, pas testimit webhook-ut, ne do të krijojmë një version të ri — Mendime të Mençura.

Krijojmë një Telegram-bot në Yandex.Cloud

Depoja e Objektit

Tani, kur kemi krijuar Funksioni Yandex, le të krijojmë, ndërsa jemi në konsolë Yandex.Cloud, një bucket (bucket, domethënë, një kovë në shqip, fare nuk është një buqetë) për ruajtjen e skedarëve të imazheve që do të përdoren në robotin tonë Mendime të Mençura. Në menunë e navigimit të majtë, zgjedhim seksionin Object Storage, kliko në butonin Krijo bucket, mendo një emër për të, për shembull, img-bucket, dhe, më e rëndësishmja, Qasje për të lexuar objektet ta bëjmë publik — ndryshe Telegram-i ynë nuk do të shohë imazhet tona. Të gjitha fushat e tjera mbeten pa ndryshime. Klikojmë butonin Krijo bucket.

Krijojmë një Telegram-bot në Yandex.Cloud

Pas kësaj, lista e të gjitha bucket-eve mund të duket diçka si kjo (nëse ky është bucket-i juaj i vetëm):

Krijojmë një Telegram-bot në Yandex.Cloud

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

Krijojmë një Telegram-bot në Yandex.Cloud

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

Krijojmë një Telegram-bot në Yandex.Cloud

Ndërsa duke klikuar në emrin e skedarit — do ta merrni URL për ta përdorur në botin tonë, dhe madje — kudo tjetër (por, mos e publikoni këtë URL pa nevojë, pasi trafiku nga Depoja objektive aksesorohet).

Krijojmë një Telegram-bot në Yandex.Cloud

Ja, vërtet, kjo është e gjitha me Depojën objektive. Tani do të dini se çfarë të bëni kur të shihni një thirrje për të ngarkuar skedarë atje.

Webhook

Tani do të vendosim webhook — do të thotë, kur bota të marrë një përditësim (p.sh., një mesazh nga përdoruesi), nga serveri Telegram do të dërgohet një kërkesë ( funksionin tonë Yandex request) me të dhënat. Ja një lidhje që mund ta vendosni thjesht në fushën e shfletuesit dhe pastaj të rikrijoni faqen (kjo duhet bërë vetëm një herë):Vetëm do ta zëvendësojmë https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Thjesht do ta zëvendosim {bot_token} në tokenin e marrë nga boti-prind në krijimin e botit tonë, dhe {webhook_url} — në URL tonën Funksionet e Yandex. Një moment! Por, vallë Roskomnadzor ndalon ofruesit në RF të shërbejnë adresën https://api.telegram.org. Po, saktë. Por ju duhet të shpikni diçka. Mund ta kërkoni, për shembull, nga gjyshja juaj në Ukrainë, Izrael ose Kanada — atje nuk ka asnjë «roskomcenzur», dhe vetëm Zoti e di si jetojnë njerëzit pa këtë. Si rezultat, kërkesa-përgjigja kur vendosni webhook-un duhet të duket kështu:

Krijojmë një Telegram-bot në Yandex.Cloud

Po testojmë. Duhet të «pasqyrojë».

Krijojmë një Telegram-bot në Yandex.Cloud

Kështu është. Urime — tani Funksioni Yandex u bë Telegram-boti!

Mendime të Mençura

Dhe tani po krijojmë Mendime të Zgjuara. Kodi është i hapur dhe ndodhet në GitHub. Ai është mjaft mirë i komentuar, dhe ka vetëm njëqind rreshta. Lexojeni atë si një diva operistike libretin!

Krijojmë një Telegram-bot në Yandex.Cloud

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

Krijojmë një Telegram-bot në Yandex.Cloud

Tani kaloni në konsolën tonë Funksionet e Yandex, zgjidhni skedën ZIP-archive, shtypni butonin Zgjedh fajll, dhe ngarkoni arkivin tonë smart.zip. Më në fund, në këndin e sipërm të djathtë, shtypni butonin Krijo versionin.

Krijojmë një Telegram-bot në Yandex.Cloud

Pas disa sekondash, kur funksioni të përditësohet, do të testojmë përsëri botin tonë. Tani ai nuk «reflekton» më, por ofron mendime të zgjuara!

Krijojmë një Telegram-bot në Yandex.Cloud

Kjo ishte e gjitha për sot. Artikujt e tjerë do të vijnë. Për ata që janë të interesuar të lexojnë të tillë — regjistrohuni për njoftime rreth artikujve të rinj. Mund të regjistroheni këtu, ose në Telegram-kanalin IT Tutorial Zahari, ose Twitter @mikezaharov.

Linke

Kodi në GitHub
Yandex Cloud Functions
Yandex Object Storage
Bots: Një hyrje për zhvilluesit
Telegram Bot API

Donacionet

Krijojmë një Telegram-bot në Yandex.Cloud

Burimi: habr.com

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster