Un bot pentru telegramă pe Python de la prima linie de cod pentru a rula pe heroku

Un bot pentru telegramă pe Python de la prima linie de cod pentru a rula pe heroku

În acest tutorial, vom descrie procesul de scriere a unui simplu Telegram-bot pe Python și lansarea lui pe serverul Heroku. Dar mai întâi să aflăm de ce avem nevoie de roboți și de ce ar trebui să vă scrieți proprii.







intrare

Aici este algoritmul standard al acțiunilor fără bot:

Da, mulți oameni sunt obișnuiți să facă asta. Cu toate acestea, botul va permite să acționați după cum urmează:

Convenabil, nu-i așa? Și aceasta este doar o posibilitate.

Telegrama permite utilizatorilor să-și creeze propriile roboți. Răspundem la întrebarea "De ce ar trebui să scriu propria mea întrebare?" - aceasta este probabil cea mai ușoară modalitate de a înțelege ce este un API.

Cool, începe să scriu bot?

Despre totul în ordine. Mai întâi trebuie să te înregistrezi cu telegrama. Este cel mai convenabil să folosiți clientul web pentru a vă familiariza cu principiile de bază ale roboților și API-urilor.

Deschideți aplicația, găsiți @BotFather și începeți conversația. Trimiteți comanda / newbot și urmați instrucțiunile. După finalizarea primilor pași, veți primi:

De fapt, asta e tot. În acest stadiu, botul dvs. este complet pasiv.

Trebuie să începi o conversație cu botul. Introduceți numele în caseta de căutare și faceți clic pe butonul / start. Trimiteți un mesaj, de exemplu, "Bună ziua". Acest prim mesaj este foarte important, deoarece va fi prima actualizare pe care botul dvs. o va primi.

Dacă lucrați cu API pentru prima dată, browserul vă va ajuta. Deschideți o filă nouă și utilizați telegrama API, urmând linkul:

Încercați să obțineți un răspuns din partea botului prin înlocuirea valorii obținute după apel / getUpdates (în exemplul nostru - 303262877) în valoarea chat_id. Textul mesajului poate fi orice. Cererea ar trebui să arate astfel:

Și când va fi codul?

Dacă utilizați Windows și nu aveți instalat Python, îl puteți descărca de pe site-ul oficial. În general, versiunea nu este importantă, dar acest articol va folosi Python 3.x. Dacă aveți Linux sau macOS, ambele versiuni (sau cel puțin Python 2.x) sunt deja instalate.

Apoi trebuie să instalați pip. În versiunile de mai sus, Python 2.7.9 și Python 3.4, precum și pe MacOS / Linux, există deja. Puteți verifica acest lucru cu ajutorul comenzii pip -version din terminal. Dacă din anumite motive nu este disponibil, îl puteți instala utilizând comanda:

Cunoașterea este că diferite versiuni ale Python utilizează un pip diferit. Dacă aveți macOS, puteți încerca să urmați sfaturile cu Overflow de stivă. În cazul Windows, trebuie să descărcați get-pip.py. deschideți linia de comandă, accesați directorul cu fișierul descărcat și executați comanda:

Cel mai dificil lucru din spatele lui. Instalați pachetul de cereri cu pip:

Și acum - codul

Acum că înțelegeți ce este un API și ați instalat toate instrumentele necesare, vom scrie un script care va verifica actualizările și va răspunde la mesaje noi.







Mai întâi botul ar trebui să verifice actualizările. Primul mesaj poate fi considerat cel mai proaspăt, dar getUpdates returnează toate actualizările în ultimele 24 de ore. Să scriem un mic script pentru a obține cea mai recentă actualizare:

Dicționarul de actualizare conține două elemente: ok și rezultatele. Suntem interesați de a doua parte - o listă cu toate actualizările primite de bot în ultimele 24 de ore.

Puteți afla mai multe despre biblioteca de solicitări prin citirea documentației. De fapt, de fiecare dată când trebuie să primiți, să actualizați sau să ștergeți informațiile stocate pe server, trimiteți o solicitare și primiți un răspuns.

Acum trebuie să adăugați încă 2 funcții. Primul va primi chat_id din actualizare, iar al doilea va trimite mesajul.

Amintiți-vă cum am combinat parametrii. și . Puteți face același lucru adăugând un dicționar ca al doilea parametru suplimentar în funcțiile get / post din pachetul de solicitări.

Scenariul este gata, dar nu este perfect. Principalul dezavantaj este nevoia de a rula de fiecare dată când vrem ca bot să trimită un mesaj. Să corectăm asta. Pentru ca botul să asculte serverul și să primească actualizări, trebuie să executăm bucla principală. Pe o linie nouă, după cererile de import. adăugați din timpul de somn de import. După aceea, înlocuiți ultimele două linii cu următorul cod:

Deși am adăugat un timp de expirare de 1 secundă, exemplul de mai sus poate fi folosit numai pentru scopuri de instruire, deoarece folosește frecvent sondaj. Acest lucru are un efect negativ asupra serverelor de telegrame, astfel încât acestea ar trebui evitate. Există și alte două modalități de a obține actualizări prin interfața API - interogare lungă și webhook-uri lungi. Dacă folosim metoda de obținere a actualizărilor prin intermediul getUpdates fără parametri, atunci interogările vor apărea prea des.

Acum botul ar trebui să funcționeze bine, dar poate fi îmbunătățit. Să încapsulam toate funcțiile dintr-o clasă. Ar trebui să arate ceva de genul:

Atingerea finală - declarați variabilele și învățați manierele decente. Faceți-o astfel încât botul să vă întâmpine o dată pe zi, iar expresia trebuie să depindă de timpul din zi. Pentru aceasta, adăugați în scriptul dvs. următorul cod:

Acum puteți îmbunătăți botul așa cum doriți. De exemplu, puteți configura trimiterea fișierelor media sau puteți adăuga propriile butoane.

Configurați o demonstrație

Ultimul pas este de a implementa botul pe server. Cu siguranță că nu aveți și nu doriți să cumpărați - dar nu este necesar. Acum există multe soluții gratuite de cloud, din care vom alege Heroku.

În MacOS și Windows, trebuie să o descărcați și să o instalați manual. Și nu uitați să vă înregistrați pe Heroku.

Acum trebuie să curățați fișierele. Creați un dosar nou și accesați-l în terminal sau în linia de comandă. Inițializați-l cu virtualenv:

Numele nu contează, dar este mai bine să îl faci intuitiv. Accesați folderul my_env.

Acum trebuie să îndoiți repozitoriul git. Tastați următoarea comandă:

Plasați scriptul în dosarul obținut prin rularea comenzii clonei git.

Reveniți la folderul my_env și începeți virtualenv:

Dacă ați lansat cu succes virtualenv. linia de comandă trebuie să înceapă cu (my_env).

Mergeți în dosarul repository și re-instalați modulul de solicitări:

Acum trebuie să creați o listă a dependențelor Heroku. E ușor. introduceți:

Creați un Procfile. În acest fișier trebuie să plasați instrucțiuni pentru a lucra cu scenariul dvs. Numele fișierului trebuie să fie Procfile (Procfile.windows în cazul Windows). Nu ar trebui să aibă alte extensii. Conținutul fișierului ar trebui să fie astfel (înlocuiți my_bot cu numele scriptului dvs.):

Adăugați fișierul __init__.py în dosarul dvs. Poate fi gol, dar trebuie să fie acolo.

Trimiteți comitetul cu modificări în depozit:

Acum puneți botul la Heroku. De asemenea, puteți utiliza panoul de control de pe site, dar vom practica totul prin consola. Dacă întâmpinați probleme, consultați acest manual.

Luați în considerare numai acțiunile necesare pentru implementarea aplicației. Dacă utilizați macOS sau Windows, instalați interfața liniei de comandă, urmând ghidul.

Dacă utilizați Ubuntu, utilizați următoarele comenzi:

Dacă apar erori, verificați dacă toate dependențele sunt prezente.

Acum rulați următoarele comenzi:

De acum încolo, aplicația ar trebui să ruleze pe serverul Heroku. Dacă se întâmplă ceva, verificați jurnalele după cum urmează:







Articole similare

Trimiteți-le prietenilor: