Bună zi și noapte, draga mea cititoare. Poate că ar trebui să te felicit pentru noul an, dar nu, îmi pare rău, nu sunt înclinat în mod special să felicit orice fel. Nu vom pleca de la subiect - acum șase luni am scris un articol despre cum să creez primul meu robot în telegramă în Python3 și să îl conduc.
De atunci, a trecut mult timp, de câteva ori a fost actualizat Telegram Bot API. iar astăzi am decis să-mi continuu povestea despre crearea propriului meu robot.
intrare
Pentru inceput, cateva informatii pentru dezvoltarea generala - despre ce este o tastatura in bot si despre ce este nevoie.
Când pornim primul bot, folosim butonul Start, apoi putem continua să comunicăm cu botul prin comenzi sau prin orice alte mesaje text.
Ce se întâmplă când apăsăm butoanele de sub câmp pentru a introduce un mesaj? Nimic complicat - trimite numai textul pe care îl vedem pe buton. Asta este, dând clic pe Setări va trimite un mesaj cu textul Setări de la numele dvs. la bot și numai.
Apoi, robotul procesează pur și simplu textul primit. Nici o magie. Știu din experiența mea că toată lumea iubește foarte mult codul (minciună, nu toate), așa că acum vom începe să scriem.
Cred că după ce am citit intrarea mea anterioară. puteți instala și configura Python3 și, de asemenea, să creați botul cel mai simplu. răspunzând la comanda / start.
În primul rând, va trebui să ne înregistrăm noul robot cu @BotFather și să obținem un TOKEN care să se conecteze la el. Voi numi robotul meu Dr. Watson. și ține secretul secret 😌
Creați un bot simplu care va saluta utilizatorul la pornire. Codul, ca în imaginea de mai jos, va fi suficient:
Acum, să definim ceea ce va face robotul nostru.
Să facem acest lucru: imediat după lansare botul ar trebui să afișeze utilizatorului o tastatură cu două butoane - Sherlock Holmes și Dr. Watson.
Mergeți la funcția de pornire a botului nostru simplu și schimbați-l după cum urmează:
Printre altele, trebuie să adăugați de la tipurile de import telebot la începutul fișierului nostru cu robotul.
Acum voi explica ce se întâmplă aici
- Folosind types.ReplyKeyboardMarkup (), vom crea obiectul tastaturii noastre viitoare, parametrii necesari sunt scrise în paranteze. resize_keyboard = True permite tastaturii să se întindă la înălțimea necesară, în loc să ocupe întregul spațiu.
- Cu .add () adăugăm butoane la tastatură. types.KeyboardButton () este obiectul butonului însuși, iar textul din acesta este indicat în paranteze. În cele de mai sus, voi umple obiectul tastele tastaturii noastre obiecte, umplându-le din lista [ „Sherlock Holmes“, „Watson“] (crede-mă, este foarte greu de înțeles acum, e în regulă, vă sfătuiesc să citiți articolul despre listele și pentru).
- Ultimul lucru pe care trebuie să-l faceți este să legați tastatura noastră de mesajul dorit, acest lucru se face folosind parametrul reply_markup în orice metodă send_.
Puteți salva codul și puteți rula robotul.
După cum puteți vedea, sub câmpul de text erau două butoane trezute. Ce urmează? Acum trebuie să-i învățăm pe robotul nostru să proceseze mesajele trimise după ce a făcut clic pe butoane.
Luați în considerare codul meu de mai sus. Functia start folosim metoda register_next_step_handler la următorul mesaj de la utilizatorii noștri dintr-o dată va veni în numele handler (pe care am specificat în al doilea parametru, primul - obiectul ne-a trimis mesaje).
În funcția de nume, procesăm răspunsul utilizatorului - trimiteți mesaje despre Sherlock Holmes și Doctor Watson.
În imaginea de mai sus, am adăugat mesaje care vor fi trimise utilizatorului după ce faceți clic pe oricare dintre butoane.
Salvați fișierul cu robotul nostru și executați-l, fără a uita să trimiteți din nou comanda / start (butoanele vechi nu vor funcționa).
Acesta este modul în care botul ne va răspunde la apăsarea unui buton. Dar observ că oa doua presă nu va duce la nimic. pentru că numai după comanda / start botul va verifica textul mesajului pentru prezența lui Sherlock Holmes și Dr. Watson.
Pentru a rezuma: tastatura vă permite să trimiteți mesaje întregi unul câte unul doar prin apăsarea utilizatorului. În butoanele puteți înregistra orice fraze de text, conținând chiar Emoji. 😘
După trimiterea botului ar trebui să proceseze fraza primită și nu contează cum.
Observ că utilizatorul are întotdeauna posibilitatea de a trimite un mesaj utilizând o tastatură convențională.
Modul inline
Există două opțiuni pentru utilizarea Inline: prima este în bot în sine. în mesaje trimise de bot; al doilea este în afara botului. undeva într-un chat arbitrar, începând să tastați login-ul bot în câmpul de text.
Astăzi vreau să vorbesc despre prima versiune a modului Inline. Cu aceasta, puteți atașa butoanele Inline la mesajele trimise de bot.
Asta este, sub fiecare mesaj pot exista butoane diferite care efectuează cea mai diversă lucrare. De exemplu, în canale populare, este adesea folosit de grupul de prieteni, realizat cu ajutorul butoanelor Inline.
Butoanele inline sunt atașate la mesaje în exact același fel ca și tastatura. Doar numele și parametrii metodelor diferă.
Să facem niște schimbări în codul nostru. Acum, obiectivul nostru este să editați mesajul după ce faceți clic pe buton.
Da, butoanele Inline pot edita mesajele deja trimise de robotul nostru. 📝
Pentru a spune ce se întâmplă aici. 🛠
Salvați codul nostru și rulați robotul. Trimiteți comanda / startul și încercați să faceți clic pe oricare dintre butoane.
După cum puteți vedea, textul mesajului din bot a fost modificat după ce faceți clic pe buton.
De fapt, butoanele Inline sunt capabile de aproape orice - cu ele puteți trimite chiar și mesaje regulate. Toate funcțiile și caracteristicile sunt descrise în API-ul Telegram Bot. Poate că asta am vrut să-ți spun despre primii pași din Inline.
Robot pentru citirea cărților 📚
La comanda / start, acest robot trimite prima pagina - pe fiecare pagina cu 700 caractere din cartea.
Folosind săgețile ⬅️ și ➡️ puteți să răsturnați paginile - textul mesajului va fi modificat prin tăieturi de 700 de caractere.
Mai jos am lăsat codul pentru acest bot - pentru a rula, este suficient pentru a pune orice carte în format .txt lângă bot
Asta e tot pentru ziua de azi. Happy Robotics 😘🤖
Un băiat din Țara Minunilor.