Cum de a scrie o telegramă bot un ghid practic

Cum de a scrie o telegramă bot un ghid practic
Recent, se aude pe scară largă telegrama. Trebuie să acordăm credit departamentului de marketing al acestei aplicații, hype-ul a fost ridicat la glorie. Una dintre telegramele principale de "jetoane" este presupusa lor securitate - conform lui Paul Durov, toată corespondența dintre utilizatori este criptată. În plus, nici un serviciu special al lumii nu va avea acces la mesajele tale. Dar acest articol nu este despre asta. Astăzi aș dori să vorbesc despre un chip la fel de cool în telegramă, și anume despre roboți. În plus față de faptul că rețeaua este deja plină de informații despre diferite tipuri de robot telegrame (github bot, de exemplu), messenger-ul și-a deschis API-ul pentru dezvoltatori, iar acum toată lumea își poate crea propriul bot cu blackjack și chifle.







În acest articol voi da un exemplu de scriere a unui bot online utilizând cadrul Python și Django. Asta este, am "zapilim" o aplicație web cu drepturi depline care se va roti pe gazda de la distanță și va lua comenzi de la utilizatori. Tot codul sursă este disponibil în depozitul meu github.

Documentația care descrie procesul de interacțiune cu robotii de telegrame este aici. Pentru a nu reinventa roata, am găsit o bună bibliotecă Python care implementează toate funcțiile de bază ale bots - telepot. După cum am menționat mai devreme, pentru a servi utilizatorii botului nostru, vom dezvolta o aplicație web folosind cadrul Django.

Cum de a crea o telegramă bot?

În primul rând, trebuie să ne înregistrăm botul viitor în telegramă. Acest lucru se face după cum urmează:

Cum de a scrie o telegramă bot un ghid practic

  • Pentru botul nostru, am ales numele PythonPlanetBot, deoarece funcția sa principală este de a analiza feed-ul RSS al site-ului Python Planet și de a oferi utilizatorilor informații despre cele mai recente postări :)

Cum de a scrie o telegramă bot un ghid practic

După crearea botului, acordați atenție liniei cu textul:

Utilizați acest jeton pentru a accesa API-ul HTTP:

Acest lucru este urmat de așa-numitul. token pe care vom manipula botul nostru. În plus față de funcția de creare a botogramei, BotFather are, de asemenea, o serie de alte posibilități:

și așa mai departe. O descriere completă a comenzilor disponibile poate fi văzută pe prima captură de ecran.

Să începem să codificăm

După cum am menționat mai devreme, vom scrie o aplicație web pe Django. Dar este de remarcat că acest lucru nu este necesar. Puteți ajunge la scenariul Python obișnuit, deși în acest caz va fi necesar să consultați periodic Telegramul pentru noile solicitări de la utilizatorii de bot (folosind metoda getUpdates) și incrementarea offset-ului pentru a obține cele mai recente date fără a se repeta. În telegramă există două metode de a obține comenzi / mesaje pentru botul tău.







  • Folosind apelul API getUpdates
  • Instalarea Webhook

Deci, înapoi la biblioteca python pentru a lucra cu Telegram - telepot. În prezent, cea mai recentă versiune este 6.7. Instalați-l într-un mediu virtual python virtualenv:

Cea mai ușoară modalitate de a interacționa cu botul de telegrame din Python este după cum urmează:

Jetonul variabil este atribuit valorii jetonului primit la crearea botului prin BotFather. Ca urmare, după executarea acestor comenzi, obținem:

Felicitări! Am apelat cererea cea mai simplă API getMe, care returnează informații despre bot: nume de utilizator, id, first_name.

Adăugați botul nostru în lista noastră de contacte și trimiteți-i prima comandă / start standard

Cum de a scrie o telegramă bot un ghid practic

Procesul de comunicare cu botul de telegramă are loc prin HTTPS; JSON este utilizat pentru transferul de date. Metoda getUpdates returnează o listă / matrice de obiecte de tip Update. În cadrul Actualizării, există un obiect Mesaj. Pentru interacțiunea standard cu botul, suntem de fapt interesați de obiectul Mesaj, în care citim atributul text, care stochează textul transmis botului și obiectului de chat, care conține informații despre utilizatorul care inițiază comunicarea cu telegrama noastră bot. Există, de asemenea, un parametru update_id care servește ca parametru de compensare la apelarea metodei getUpdates. Aceasta este, update_id + 1 va returna toate mesajele primite după ultima update_id, iar toate mesajele anterioare vor fi șterse.

La etapa de scriere a celei mai simple boturi de telegrame, aceste apeluri sunt suficiente pentru noi. Să începem să scriem aplicații Django pentru a le servi pe utilizatori.

Funcția simplă de parsing RSS feed Planet Python arată astfel:

Aici folosesc biblioteca Python de solicitări pentru a lucra cu HTTP în cea mai simplă versiune fără a se ocupa de eroare. Django "vedere" este după cum urmează:

CommandReceiveView așteaptă cererea POST pentru ea însăși, parsează-o și răspunde pe baza comenzii specificate. O aplicație completă Django poate fi găsită la acest link. Merită menționat în cod utilizarea unui alt apel API - sendMessage. Această metodă trimite un mesaj către utilizatorul specificat, folosind chat_id și corpul mesajului în sine. Chat_id este un identificator unic de chat între utilizator și bot (identificatorul său se află în răspunsul la cererea getUpdates). Boții de telegrame au o singură limitare, nu pot trimite mesaje utilizatorilor care nu au inițiat anterior comunicarea cu aceștia. Se pare că acest lucru este făcut pentru a evita crearea în masă a spam-urilor.

Deci, ruleaza aplicatia web pe Django. Cum încep să testez un bot? Și este foarte simplu - trebuie să simulați acțiunile serviciului Telegram. Pentru aceasta avem nevoie de clientul HTTP și de organismul de solicitare. Ca client HTTP, folosesc adesea pluginul Chrome numit Postman. și vom prelua organismul solicitant direct de la datele primite folosind apelul getUpdates pentru API.

După rularea runserverului, adresa URL la care doriți să trimiteți solicitarea este după cum urmează:

unde BOT_TOKEN este simbolul botului nostru. Ne uităm la captura de ecran:

Cum de a scrie o telegramă bot un ghid practic

Și să trimitem comanda de alimentare pentru a obține o listă de știri de la Planet Python:

Cum de a scrie o telegramă bot un ghid practic
Cum de a scrie o telegramă bot un ghid practic

Imaginile de ecran arată că botul a răspuns în mod corespunzător echipei noastre pentru a lista ultimele 10 postări.

Următorul pas este să decomprimăm aplicația noastră Django la gazda de la distanță și apoi să sunăm metoda setWebhook pentru a transmite URL-ul la care cererea POST de la serviciul Telegram va fi trimisă de fiecare dată când comenzile bot sosesc de la utilizatori. Vom vorbi despre acest lucru în următorul articol.

Cum de a scrie o telegramă bot un ghid practic

Există mai mult de 1000 de participanți pe canal, deci aderați și voi - DevBrain







Trimiteți-le prietenilor: