Kako kreirati Telegram bota pomoću Pythona od nule

  • Telegram botovi su automatizirani računi koji reagiraju na naredbe i poruke putem službenog API-ja.
  • Da biste ih programirali u Pythonu, potreban vam je BotFather token, vaš chat ID i okruženje s bibliotekama kao što su requests, bs4 i python-telegram-bot.
  • Moguće je automatizirati zadatke poput slanja cijena Bitcoina dnevno kombiniranjem web scrapinga i zakazivanja zadataka.
  • Dobro dizajniran bot može se integrirati u grupe, kompanije i radne procese bez kodiranja, pa čak i poslužiti kao osnova za poslovne modele.

Mnogi korisnici Telegrama , prije ili kasnije, razmišljaju o kreiranju vlastitog bota za automatizaciju zadataka , odgovaranje na poruke ili jednostavno eksperimentiranje s kodom. Dobra vijest je da ne morate biti inženjer ili imati ogroman server kod kuće. Kreiranje Telegram bota s Pythonom zahtijeva samo malo strpljenja i posvećenosti.

U ovom vodiču ćete naučiti kako korak po korak kreirati Telegram bota pomoću Pythona od nule. Objasnit ćemo tačno šta je bot, kako dobiti poznati token pomoću BotFathera, kako postaviti okruženje na vašem računaru, kako natjerati bota da pošalje svoju prvu poruku, kako programirati naredbe, pa čak i kako izdvojiti podatke u stvarnom vremenu (kao što je cijena Bitcoina) i automatski ih slati u vaš chat svaki dan.

Šta je Telegram bot i koje vrste postoje

Telegram bot je u suštini poseban račun kojim upravlja program, a ne osoba . Ovaj program se povezuje sa Telegramovim serverima putem svog API-ja i može čitati šta je napisano u chatovima u kojima je prisutan i odgovarati porukama, dugmadima, anketama, datotekama ili bilo kojom drugom radnjom koju ste ga programirali da izvrši.

Ideja je da bot može reagovati na komande ili poruke i obavljati određene zadatke bez ljudske intervencije: slati podsjetnike, prikazivati ​​informacije iz baze podataka, upravljati rezervacijama, moderirati grupe, igrati se s gifovima, kontrolirati pametna svjetla ili djelovati kao 24/7 asistent za online poslovanje.

U Telegramu postoje dva glavna načina interakcije s botovima o kojima biste možda željeli znati više:

  • "Normalni" botovi zasnovani na komandama. Korisnik kuca naredbe koje počinju sa "/", kao što su /start, /help o /list_languages...a bot odgovara određenom radnjom. Savršeni su za menije, često postavljana pitanja, sisteme za rezervacije ili bilo koji vođeni radni proces.
  • Inline botovi. Umjesto korištenja znaka "/", korisnik piše @nombre_del_bot direktno u bilo kojem chatu, nakon čega slijedi poruka. Bot odgovara "online" predlažući rezultate, na primjer, @gif za pretraživanje animiranih GIF-ova povezanih s ključnom riječi.

Pored ovih, možete imati i botove koji "spontano" reaguju na ono što je napisano u grupi. Na primjer, otkrivaju uvrede kako bi djelovali kao anti-spam, pozdravljaju nove članove ili primjenjuju pravila moderiranja bez da iko ukuca eksplicitnu komandu.

telegram bot

Zašto su Telegram botovi postali toliko popularni

Jedan od razloga zašto su Telegram botovi postali izuzetno popularni je taj što platforma nudi vrlo otvoren API s gotovo nikakvim ograničenjima za programere . Ne morate tražiti posebne dozvole ili prolaziti kroz beskrajne preglede kao u drugim aplikacijama za razmjenu poruka. Jednostavno kontaktirate BotFathera, kreirate svog bota i za nekoliko sekundi imate token spreman za korištenje.

Ova sloboda je omogućila botovima da napreduju u gotovo svemu: upravljanju grupama i kanalima , pokretanju anketa, kontroli procesa e-trgovine, povezivanju s vanjskim uslugama, primanju podataka u stvarnom vremenu ili čak rješavanju internih zadataka kompanije (uvođenje u posao, obavještenja tima, tokovi rada podrške itd.).

Također pomaže što je bot API vrlo lako za razumjetiMožete raditi na niskom nivou koristeći HTTPS zahtjeve za https://api.telegram.org/botTOKEN/METHOD_NAME ili se oslonite na knjižare poput python-telegram-bot, pyTelegramBotAPI ili slične biblioteke u Node.js-u koje apstrahuju mnogo složenosti.

U stvarnom svijetu, ovo se prevodi u širok spektar upotreba. Od botova za vremensku prognozu ili cijene kriptovaluta do kompletnih sistema za korisničku podršku, edukativnih botova, obavještenja o berzi ili integracija s alatima poput Google kalendara, Trello-a, korporativnih CRM-ova i još mnogo toga.

Kreirajte bota pomoću BotFathera i preuzmite token

Prije nego što dodirnete ijednu liniju koda, morate obavijestiti Telegram da vaš bot postoji. To se radi pomoću @BotFather, službenog bota Telegrama za registraciju i konfiguriranje botova . Cijeli proces se obavlja unutar same aplikacije, i na mobilnom i na desktop uređaju.

Osnovni koraci za registraciju vašeg bota su vrlo jednostavni i uvijek uključuju ovaj niz poruka s BotFatherom, koje se obrađuju kao da razgovarate s drugim korisnikom:

  • Otvorite Telegram, ukucajte u tražilicu @BotFather i uđite u verifikovani razgovor (ima plavu kvačicu).
  • Pritisnite "Start" ili upišite /start da vidite listu dostupnih komandi.
  • Pokrenite komandu /newbotBotFather će vas prvo pitati za ime za prikaz (šta će korisnici vidjeti na profilu) i zatim korisničko ime koji mora završiti na bot i ne može početi brojem.

Na primjer, možete koristiti „Cijena Btc-a“ kao naziv i nešto slično btc_daily_update_botNakon što završite korake, BotFather će vam poslati poruku s nekoliko preporuka, URL-om t.me/tu_usuario_bot i, iznad svega, a Token za pristup API-ju.

Taj token ima format poput ovog: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw I to je ključ koji omogućava vašem kodu da se predstavlja kao vaš bot na Telegramovim serverima, tako da Tretirajte to kao tajnu: nemojte to objavljivati ​​na GitHubu niti dijeliti bilo gdje..

Iz BotFathera možete prilagoditi svog bota i drugim korisnim naredbama:

  • /setdescription da biste dodali kratak opis koji će se vidjeti kada se otvori chat bota.
  • /setabouttext za biografiju vidljivu u profilu.
  • /setuserpic da otpremite profilnu sliku koja ne izgleda tako bezlično.
  • /mybots da vidite sve botove koje ste kreirali i uredite ih.
  • /setcommands ili „Uredi komande“ da biste definisali listu komandi koje će vaš bot razumjeti (na primjer, start - Inicia la conversación).

Ovim ste kreirali "ljusku". E bot postoji na Telegramu, ima ime, opis, sliku i, što je najvažnije, jedinstveni token za povezivanje iz vašeg koda . Sljedeći korak je da ga oživite pomoću Pythona.

Python Excel

Pripremite Python okruženje i kreirajte projekat

Iako Telegram botove možete programirati koristeći mnoge jezike, Python je jedna od najpogodnijih opcija zahvaljujući jednostavnoj sintaksi i velikom broju dostupnih biblioteka. Da biste pratili ovaj tutorijal, potrebno je da imate instaliran Python 3 na računaru i, naravno, Telegram aplikaciju (na mobilnom uređaju ili desktopu).

Kao najbolja praksa, idealno je uvijek raditi unutar virtualnog okruženja (venv) . Na ovaj način izbjegavate miješanje zavisnosti između projekata. Iz mape u kojoj ćete kreirati svog bota, možete uraditi nešto poput ovoga na Windowsu:

py -m venv venv
.\venv\Scripts\activate

Na macOS-u ili Linuxu, naredba za aktivaciju se neznatno mijenja, ali ideja je ista: Napravite izolirani mjehurić u koji možete instalirati samo biblioteke koje će vaš bot koristiti.Nakon što je okruženje aktivirano, vrijeme je za instalaciju potrebnih paketa sa pip.

U zavisnosti od pristupa koji želite, postoje dva prilično uobičajena puta za početak rada s Telegram botovima u Pythonu, i vrijedi ih znati kako biste odabrali onaj koji najbolje odgovara vašem projektu:

  • Direktan rad sa zahtjevima i HTTP API-jem. Ručno konstruirate URL-ove tipa https://api.telegram.org/botTOKEN/sendMessageŠaljete GET ili POST zahtjeve sa requests i obrađujete odgovore u JSON formatu.
  • Koristite biblioteku poput python-telegram-bot. Ova biblioteka apstrahuje API i pruža vam objekte visokog nivoa kao što su Updater, Dispatcher, CommandHandler o CallbackContext raditi s naredbama i porukama na mnogo organiziraniji način.

Ako želite strukturiranijeg bota s naredbama poput /start A za skalabilni dizajn, trebali biste dodati i biblioteku python-telegram-botkoji se instalira jednostavnim:

pip install python-telegram-bot

Natjerajte bota da pošalje svoju prvu poruku koristeći Telegram API

Počnimo s osnovama: kako natjerati bota da pošalje poruku u vaš Telegram chat direktno koristeći HTTP API. Ovo će vam pomoći da shvatite kako se zahtjevi konstruiraju prije nego što stvari zakompliciramo s više funkcija.

Da bi vam bot poslao poruku, potrebne su mu dvije ključne stvari: token koji vam je BotFather dao i vaš ID za chat . Dobijanje vašeg ID-a za chat je vrlo jednostavno ako pažljivo slijedite ovaj postupak:

  1. Otvorite chat sa svojim botom u Telegramu putem linka t.me/tu_usuario_bot ili ga potražite po njegovom korisničkom imenu.
  2. Upišite komandu /start tako da u historiji postoji barem jedna poruka.
  3. U vaš preglednik unesite URL:
    https://api.telegram.org/botTU_TOKEN/getUpdates

Pristupom toj adresi, API će vratiti JSON objekt koji sadrži najnovije poruke povezane s vašim botom. Unutra ćete vidjeti polja poput "update_id", "message_id" i, što je veoma važno, campo "chat" sa svojim "id"Taj broj (nešto slično) 68xxxxxxx) je vaš privatni ID za chat, koji ćemo koristiti za slanje poruka direktno u vaš razgovor.

Sa tokenom i ID-om za chat pri ruci, možete definirati u svojoj datoteci .py minimalna funkcija koja konstruira odgovarajući URL i pokreće zahtjev s requests.getMetoda koju ćemo pozvati u Telegram API-ju je sendMessagekoji prihvata parametre kao što su chat_id, text i način formatiranja (na primjer, parse_mode=Markdown).

Tipična struktura te funkcije, pojednostavljeno, bila bi nešto poput ovoga, gdje se jasno vidi kako je URL konstruiran i kako se API poziv vrši s potrebnim podacima:

def bot_send_text(bot_message):
bot_token = 'YOUR_TOKEN'
bot_chatID = 'YOUR_CHAT_ID'
send_text = 'https://api.telegram.org/bot' + bot_token + '/sendMessage?chat_id=' + bot_chatID + '&parse_mode=Markdown&text=' + bot_message
response = requests.get(send_text)
return response

Izvan funkcije, možete pokušati poslati testnu poruku kreiranjem varijable i pokretanjem datoteke pomoću Pythona. Ako je sve ispravno konfigurirano, u roku od nekoliko sekundi ćete vidjeti poruku poput "Zdravo, Telegram!" u chatu vašeg bota.

test_bot = bot_send_text('¡Hola, Telegram!')

telegram

Zakazivanje ponavljajućih poruka pomoću rasporeda

Sljedeća stvar koju ćete vjerovatno htjeti uraditi je automatizirati slanje tog izvještaja tako da stiže svaki dan u određeno vrijeme bez potrebe za ručnim pokretanjem bilo čega. Biblioteka je vrlo praktična za to. schedule, što vam omogućava da planirate zadatke na vrlo čitljiv način.

con schedule Možete reći svom skriptu stvari poput "izvrši funkciju report Jednom dnevno u 08:00 ujutro, a zatim ga pustite da radi u beskonačnoj petlji provjeravajući ima li zadataka na čekanju. Sve dok program radi, vaš bot će djelovati u određeno vrijeme.

Tipičan blok za unos skripte, koristeći obrazac if __name__ == '__main__'Ovako bi izgledalo da bi bot bio uključen i pažljiv na planirane zadatke:

if __name__ == '__main__':
schedule.every().day.at("08:00").do(report)
while True:
schedule.run_pending()

Važno je koristiti ovu vrstu automatizacije sa zdravim razumom kako biste izbjegli preopterećenje web stranice koju skidate . Nema smisla slati zahtjeve svake sekunde za podatke kojima se može pristupiti, na primjer, jednom dnevno ili čak jednom na sat. Ako preopterećujete odredišni server, na kraju ćete biti blokirani.

Imajte na umu da će, radeći na ovaj način, vaš bot funkcionirati samo dok se skripta izvršava na vašem računaru . Ako zatvorite terminal ili isključite računar, bot će prestati slati zakazane poruke. Da bi bio aktivan 24/7, najbolje je da kod prenesete na server ili uslugu u oblaku.

Dizajnirajte strukturiranog bota koristeći biblioteku python-telegram-bot

Kako vaš projekat raste, rad isključivo sa HTTP zahtjevima može postati haotičan. Tu nastupa biblioteka python-telegram-bot, koja organizira kod oko objekata i rukovatelja naredbama i znatno vam olakšava život.

Ova biblioteka je zasnovana na nekoliko ključnih koncepata: objektu Updater, koji je odgovoran za komunikaciju sa Telegramovim serverima i slanje odgovora, i dispatcheršto bi bilo nešto poput botovog "uha", koje bi uvijek slušalo dolazne poruke i odlučivalo koju funkciju izvršiti kada se unese određena komanda ili tekst.

Najčišći način rada s vašim tokenom je da ga izolujete u konfiguracijskom modulu, na primjer u paketu pod nazivom config gdje spremate datoteku auth.py s varijablom token. Dakle, Ne postavljate token u repozitorij, već datoteku možete dodati u svoj .gitignore. kako bi se izbjegle strahove.

Vrlo minimalan prvi kostur vaše datoteke bot.pyKoristeći biblioteku, to bi moglo izgledati otprilike ovako, gdje je kreiranje Updater i kako se dobija dispatcher povezano:

from telegram.ext import Updater
from config.auth import token

ako __name__ == '__main__':
ažuriranje = ažuriranje(token=token, use_context=True)
dispečer = updater.dispatcher

Ako pokrenete tu datoteku kakva jeste, vidjet ćete da se skripta jednostavno završava bez grešaka, ali i dalje ne radi ništa korisno jer joj niste rekli kako da reaguje na poruke. Sljedeći korak je dodavanje zapisivanje događaja i definirajte funkcije koje djeluju kao "rukovatelji" za naredbe koje želite podržati, obično počevši sa /start.

Standardna biblioteka Pythona logging Omogućava vam detaljnu kontrolu nad onim što se događa unutar vašeg bota: koje se komande primaju, da li se pojave greške itd. Postavljanje je jednostavno kao definiranje izlaznog formata i minimalnog nivoa ozbiljnosti za poruke:

import logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger('MiPrimerBot')

Ovom konfiguracijom ćete naznačiti da želite vidjeti poruke na ekranu od INFO nivoa naviše (INFO, WARNING, ERROR, CRITICAL) i da svaki red treba da sadrži datum, naziv logera, nivo i objašnjenje događaja koji snimate.

Odgovorite na naredbu /start prilagođenim rukovateljem

Da bi vaš bot bio više od obične dekorativne figure, potrebno vam je definirati funkcije koje se izvršavaju kada stigne određena naredbaOve funkcije se nazivaju "handleri" i uvijek primaju objekt kao argument. update i a context.

Parametar update Ovo predstavlja dolaznu poruku (bilo da je to komanda, običan tekst itd.) i uključuje podatke kao što su chat, korisnik i sadržaj poruke. Parametar context Predstavlja samog bota, s metodama za odgovaranje, slanje fotografija itd. Obično bilježi kada se primi komanda i odgovara tekstualnom porukom.

Vrlo jednostavan primjer rukovatelja naredbom /start To bi bilo nešto ovako, gdje bi zapisnici zabilježili da je naredba primljena i da se odgovor šalje na isti chat iz kojeg je poslana:

from telegram.ext import CallbackContext

def start(ažuriranje: Ažuriranje, kontekst: KontekstPovratnogPoziva):
logger.info('Primio/la sam naredbu za pokretanje')
kontekst.bot.pošalji_poruku(
chat_id=ažuriranje.poruka.chat_id,
tekst="Ja sam iz Jereza de la Frontere, rodnog mjesta fino sherryja, kartuzijanskih konja i svjetske prijestolnice motociklizma"
)

Sada kada ste definirali funkciju, morate reći dispatcher da ga koristi kada stigne komanda /startZa to se taj objekt koristi. CommandHandler, koji preslikava tekst naredbe (bez kose crte) na funkciju odgovornu za njenu obradu.

Registracija dispečera je vrlo jednostavna i lako čitljiva: „kada primite naredbu za pokretanje, izvršite funkciju za pokretanje“ . Kod potreban za registraciju ovog ponašanja izgledao bi otprilike ovako unutar glavnog bloka:

from telegram.ext import CommandHandler

ako __name__ == '__main__':
ažuriranje = ažuriranje(token=token, use_context=True)
dispečer = updater.dispatcher
dispatcher.add_handler(CommandHandler('start', start))
updater.start_polling()
updater.idle()

Posljednje dvije linije su izuzetno važne: start_polling() Zbog toga bot redovno traži od Telegramovih servera nove poruke (metoda poznata kao anketiranje), i idle() Omogućava da program radi sve dok ga ručno ne zaustavite pomoću Ctrl+C u konzoli.

Ako sada trčiš python bot.py i na Telegramu pišeš /start Vaš bot bi trebao prikazati poruku koju ste programirali u rukovatelju, pored odgovarajućih unosa u dnevnik za svaku primljenu naredbu.

Opcije za hostovanje i pokretanje vašeg bota 24/7

Važan detalj koji se često zanemaruje je da Telegram ne pokreće vaš kod . Njegovi serveri samo pohranjuju poruke i pružaju API, ali program koji kontrolira vašeg bota mora negdje raditi, bilo da je to vaš vlastiti računar, VPS ili usluga hostinga u oblaku.

Ako samo testirate, možete održavati bota pokrenutog na vašem lokalnom računaru sve dok vam je konzola otvorena. Ali ako želite da bude dostupan korisnicima 24/7, prije ili kasnije ćete ga morati postaviti u okruženje koje je uvijek uključeno i ima dobru povezanost.

Među najčešćim opcijama za male i srednje projekte, naći ćete platforme poput Replit , Render i DigitalOcean , svaka sa svojim prednostima u smislu jednostavnosti korištenja i cijene. Uopšteno govoreći, možete očekivati ​​okruženje slično ovome:

ponovi Da Jednostavno, odlično je za početnike
Render Da Mediji
DigitalOcean Ne Jednostavan, moćan i prostran

Za jednostavne botove koji se lako uče, besplatni paketi nekih servisa su obično dovoljni, iako je preporučljivo pratiti ograničenja vremena izvršavanja, potrošnje CPU-a ili odlaznih konekcija kako se bot ne bi srušio neprimjetno.

Što se tiče tehnološkog steka, uobičajeni pristup je odabrati Python s bibliotekama poput python-telegram-bot ako preferirate jasnoću i opsežnu dokumentaciju ili Node.js s rješenjima poput Telegraf.js ili node-telegram-bot-api ako već dolazite iz svijeta JavaScripta i želite se integrirati s drugim projektima u tom ekosistemu.

Alternative bez koda i profesionalna upotreba botova

Ako programiranje nije vaša stvar ili jednostavno želite da napravite funkcionalnog bota maksimalnom brzinom kako biste validirali ideju, na raspolaganju vam je nekoliko platformi bez kodiranja koje vam omogućavaju da kreirate konverzacijske tokove sa vizuelnim blokovima bez dodirivanja ijedne linije Pythona.

Alati poput Manybota, Chatfuela, Tarsa, Makea (ranije Integromata), n8n-a, te integracije s Google Sheetsom i Airtableom omogućuju vam definiranje logike pitanja i odgovora, obrazaca, navigacijskih menija i veza s drugim servisima pomoću grafičkih interfejsa. Savršeni su za MVP-ove, brze testove ili projekte gdje bot ne mora obavljati previše napredne zadatke.

Glavna razlika u poređenju sa razvojem vlastitim kodom je u tome što kod ovih rješenja žrtvujete određenu fleksibilnost u zamjenu za brzinu i jednostavnost. Kada su vam potrebne složenije funkcionalnosti, vrlo specifične integracije ili potpuna kontrola nad logikom, uobičajeni pristup je prelazak na potpuno programiranog bota.

Na poslovnom nivou, Telegram bot može postati ključni alat za pružanje korisničke podrške 24/7, automatizaciju repetitivnih procesa ili prikupljanje strukturiranih podataka bez preopterećenja ljudskog tima. Razmislite o funkcijama kao što su odgovaranje na često postavljana pitanja, upravljanje praćenjem narudžbi, pokretanje anketa o zadovoljstvu kupaca, uključivanje novih studenata u online akademiju ili rješavanje rezervacija u restoranu.

Također možete istražiti poslovne modele vezane za botove: premium pristup određenim funkcijama putem pretplate, plaćeni edukativni botovi, ekskluzivni sadržaj, integracija s e-trgovinom ili preporuke za partnere s linkovima za praćenje, uvijek poštujući propise o zaštiti podataka i uvjete korištenja Telegrama.


Dodaj kao preferirani izvor na Googleu