Astăzi, din materiale vechi, vom asambla https://api.telegram.org/
. Ei bine, nu vom - nu, nu. La urma urmei, în geanta noastră există așa-numite. webhook-uri — cu ajutorul lor, nu facem cereri la o anumită adresă, ci pur și simplu trimitem solicitarea noastră ca răspuns la orice solicitare către noi. Adică, ca și în Odesa, răspundem la o întrebare cu o întrebare. De aceea Telegram API nu va apărea în codul nostru.
DisclaimerNumele oricăror organizații guvernamentale menționate în acest articol sunt fictive, iar posibilele potriviri cu numele organizațiilor din viața reală sunt coincidențe.
Deci, vom face un bot care ne va oferi gânduri inteligente. Exact ca in poza:
Puteți încerca în acțiune - iată numele: @SmartThoughtsBot. Am observat butonul „Abilitatea lui Alice”? Acest lucru se datorează faptului că botul este un fel de „însoțitor” pentru botul cu același nume. priceperea lui Alice, adică îndeplinește aceleași funcții ca și priceperea lui Alice și este posibil ca aceștia să poată coexista pașnic făcându-și reclamă unul altuia. Despre cum să creați pricepere Gânduri inteligente descrise în articol
Crearea unui bot
Aș dori ca acest tutorial să fie util tuturor, inclusiv. și constructori de bot începători. Prin urmare, în această secțiune voi descrie în detaliu cum să creați în general Telegramăroboții. Pentru cei care nu au nevoie de aceste informații, treceți la următoarele secțiuni.
Deschideți aplicația Telegaram, să numim tatăl tuturor roboților (au totul ca oamenii) - @BotFather - și mai întâi îi vom da comanda /help pentru a-și împrospăta memoria despre ceea ce putem face. Acum vom fi interesați de echipă / newbot.
Deoarece botul descris aici a fost deja creat, în scopuri demonstrative voi crea un alt bot pentru o perioadă scurtă de timp (și apoi îl voi șterge). Îl voi suna DemoHabrBot. Nume (nume de utilizator) din toți roboții telegramei trebuie să se termine cu cuvântul bot, de exemplu: MyCoolBot sau my_cool_bot - acesta este pentru roboți. Dar mai întâi îi dăm botului un nume (nume) - și asta este pentru oameni. Numele poate fi în orice limbă, poate conține spații și nu trebuie să se termine cu un cuvânt bot, și nici măcar nu trebuie să fie unic. În acest exemplu, am numit acest bot Demo Habr.
Acum alegeți un nume pentru bot (nume de utilizator, cel pentru roboți). Să-l sunăm DemoHabrBot. Tot ce este legat de numele botului (nume) nu are nicio legătură cu numele său - nume de utilizator (sau se aplică, dar exact invers). După ce am creat cu succes un nume unic de bot, trebuie să copiem și să salvăm (cu cea mai strictă încredere!) simbolul afișat în captură de ecran cu o săgeată roșie. Cu ajutorul lui vom stabili ulterior provenind din Telegramă'un webhook către nostru Funcția Yandex.
Acum să dăm comanda tatălui tuturor roboților: /mybots, și ne va afișa o listă cu toți roboții pe care i-am creat. Să lăsăm botul proaspăt copt în pace deocamdată Demo Habr (a fost creat pentru a arăta cum să creați boți, dar îl vom folosi și astăzi în alte scopuri demonstrative) și să ne uităm la bot Gânduri inteligente (@SmartThoughtsBot). Faceți clic pe butonul cu numele său din lista de roboți.
Aici ne putem configura botul. Prin apăsarea butonului Editați | ×… Vom trece la editarea uneia sau altei opțiuni. De exemplu, făcând clic pe butonul Editeaza numele putem schimba numele botului, să spunem în schimb Gânduri inteligente, scrie Idei nebunești. Botpic - acesta este avatarul botului, trebuie să fie cel puțin 150 x 150 px. Descriere — aceasta este o scurtă descriere pe care utilizatorul o vede când pornește botul pentru prima dată, ca răspuns la întrebarea: Ce poate face acest bot? Despre Noi — o descriere și mai scurtă, care este transmisă cu un link către bot (https://t.me/SmartThoughtsBot
) sau când vizualizați informații despre acesta.
Tot ce trebuie să facem este să setăm comenzile. Pentru a face acest lucru, apăsați butonul Editați comenzi. Pentru a standardiza practica utilizatorilor Telegramă recomandă să utilizați întotdeauna două comenzi: /start и / ajutor, iar dacă botul are nevoie de setări, utilizați comanda suplimentară /settings. Botul nostru este la fel de simplu ca o minge, deci nu are nevoie încă de setări. Scriem primele două comenzi, pe care apoi le vom procesa în cod. Acum, dacă utilizatorul introduce o bară oblică (semn: /) în câmpul de introducere, va apărea o listă de comenzi pentru o selecție rapidă. Totul este ca în imagine: în stânga - instalăm comenzi prin botul tată; în dreapta, aceste comenzi sunt deja disponibile pentru utilizatorii din botul nostru.
Funcția Yandex
Acum că botul nostru a fost creat, să mergem la Yandex.Cloudpentru a crea o funcție care va executa codul botului nostru. Dacă nu ai lucrat cu Yandex.Cloud citeste materialul
Deci în consolă Yandex.Cloud în meniul de navigare din stânga selectați elementul Funcții cloud, apoi apăsați butonul Creați o funcție. Îi dăm un nume și o scurtă descriere pentru noi înșine.
După apăsarea butonului crea iar după câteva secunde, noua funcție va apărea în lista tuturor funcțiilor. Faceți clic pe numele ei - aceasta ne va duce la pagină Revizuire funcția noastră. Aici trebuie să activați (On) intrerupator Funcția publicăastfel încât să devină accesibil din exterior (pentru Yandex.Cloud) din lume și sensul câmpurilor Apelați legătura и Identificator — păstrați-l profund secret față de toată lumea, cu excepția dvs. și a Telegramului, astfel încât funcția dvs. să nu poată fi apelată de diverși escroci.
Acum, folosind meniul din stânga, accesați Editorul funcții. Să lăsăm o clipă deoparte Gânduri inteligente, și creați o funcție de șablon minimă pentru a verifica funcționalitatea botului nostru... Totuși, în acest context, această funcție este botul nostru... Pe scurt, acum și chiar aici vom face un bot simplu care se va „oglindi” ( adică trimite înapoi cererile utilizatorilor. Acest șablon poate fi folosit oricând la crearea de noi roboți de telegramă pentru a vă asigura că comunicarea cu Telegramă'ohm funcționează bine. Clic Creați fișier, să-i spunem index.js, și online Editor de cod lipiți următorul cod în acest fișier:
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 consola Yandex.Cloud ar trebui să arate cam așa:
Mai jos indicăm Punct de intrare - index.botUnde index acesta este numele fișierului (index.js) și bot - numele funcției (module.exports.bot). Lăsați toate celelalte câmpuri așa cum sunt și faceți clic pe butonul din colțul din dreapta sus Creați versiunea. În câteva secunde va fi creată această versiune a funcției. La scurt timp după testare webhook, vom crea o nouă versiune − Gânduri inteligente.
Depozitarea obiectelor
Acum că am creat Funcția Yandex, haide, cât suntem în consolă Yandex.Cloud, să creăm așa-numitul găleată (găleată, adică găleată în rusă, deloc un buchet) pentru stocarea fișierelor de imagine care vor fi folosite în botul nostru Gânduri inteligente. În meniul de navigare din stânga, selectați elementul Depozitarea obiectelor, apasa butonul Creați o găleată, veniți cu un nume pentru el, de exemplu, img-găleată, si cel mai important, Acces de citire la obiecte Îl facem public - altfel Telegram nu va vedea pozele noastre. Lăsăm toate celelalte câmpuri neschimbate. apasa butonul Creați o găleată.
După aceasta, lista tuturor găleților ar putea arăta cam așa (dacă aceasta este singura ta găleată):
Acum vă sugerez să faceți clic pe numele găleții și să creați un folder în interiorul acestuia pentru a organiza stocarea imaginilor pentru diferite aplicații. De exemplu, pentru un bot telegram Gânduri inteligente Am creat un folder numit tg-bot-gânduri-inteligente (nimic, voi înțelege acest cod). Creează și tu unul.
Acum puteți să faceți clic pe numele folderului, să intrați în el și să încărcați fișiere:
Și făcând clic pe numele fișierului - obțineți-l URL-ul pentru utilizare în botul nostru și, în general, oriunde (dar nu publicați acest lucru URL-ul inutil, deoarece traficul din Depozitarea obiectelor taxat).
Asta e practic tot ceea ce este Depozitarea obiectelor. Acum veți ști ce să faceți când vedeți o solicitare pentru a încărca fișiere acolo.
Webhook
Acum vom instala webhook - adica când botul primește o actualizare (de exemplu, un mesaj de la un utilizator) de la server Telegramă în nostru Funcția Yandex se va trimite o cerere (solicita) cu date. Iată o linie pe care o puteți lipi pur și simplu în câmpul de adresă al browserului și apoi reîmprospătați pagina (trebuie să faceți acest lucru o singură dată): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
O vom înlocui doar {bot_token} la jetonul pe care l-am primit de la botul tată la crearea botului nostru și {webhook_url} - pe URL-ul al nostru Funcții Yandex. Așteptaţi un minut! Dar RossKomTsenzur interzice furnizorilor din Federația Rusă să deservească adresa https://api.telegram.org
. Da, așa e. Dar vine cu ceva. La urma urmei, poți, de exemplu, să o întrebi pe bunica despre asta în Ucraina, Israel sau Canada - nu există nicio „cenzură Rosskom” acolo și numai Dumnezeu știe cum trăiesc oamenii fără ea. Ca rezultat, cererea-răspuns la instalarea unui webhook ar trebui să arate astfel:
Testăm. Ar trebui să se „oglindă”.
Asta este adevărat. Felicitările noastre - acum Funcția Yandex a devenit Telegramă-bot!
Gânduri inteligente
Acum să facem Gânduri inteligente. Codul este deschis și se află
Clonează proiectul și instalează dependențe:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i
Faceți modificările de care aveți nevoie în fișier index.js (opțional; nu trebuie să schimbați nimic). Crea zip-arhiva, cu dosar index.js și folder nod_module în interior, de exemplu, sub numele smart.zip.
Acum du-te la consola la nostru Funcții Yandex, selectați fila Arhiva ZIP, apasa butonul Selectați fișierulși descărcați arhiva noastră smart.zip. În cele din urmă, în colțul din dreapta sus, faceți clic pe butonul Creați versiunea.
În câteva secunde, când funcția este actualizată, vom testa din nou botul nostru. Acum nu se mai „oglindește”, ci oferă gânduri inteligente!
Asta e tot pentru azi. Urmează mai multe articole. Dacă ești interesat să citești acest articol, abonează-te la notificări despre articole noi. Vă puteți abona aici sau la adresa Telegramă-canal
referințe
Donații
Sursa: www.habr.com