- Telegram bot je aplikacija koja komunicira s korisnicima putem Bot API-ja, idealna za automatizaciju zadataka, pružanje podrške i distribuciju sadržaja.
- con piton A uz pomoć biblioteke python-telegram-bot možete kreirati funkcionalnog bota za nekoliko minuta, počevši s jednostavnom naredbom /start i proširujući je menijima i statusima.
- Arhitektura se zasniva na primanju ažuriranja putem anketiranja ili webhookova, što omogućava da se bot implementira na cloud servisima poput AWS-a kako bi bio dostupan 24/7.
- Primjena dobrih praksi sigurnosti, korisničkog iskustva i praćenja osigurava da je bot pouzdan, skalabilan i koristan na dugi rok.

Ako svakodnevno koristite Telegram, vjerovatno ste više puta pomislili kako bi bilo sjajno imati bota koji obavlja zadatke umjesto vas. Podsjetnici za lijekove, odgovori na često postavljana pitanja ili automatska upozorenja Ovo je samo nekoliko primjera onoga što možete automatizirati bez ikakvog truda. Dobra vijest je da, s Pythonom, možete imati funkcionalnog bota za nekoliko minuta.
U ovom članku ćete naučiti Kako kreirati Telegram bota pomoću Pythona za manje od 10 minutaPočinjemo od nule i razumijemo šta radite u svakom koraku. Pokrit ćemo sve, od kreiranja bota pomoću BotFathera, instaliranja biblioteka, primjera stvarnog koda, do opcija za njegovo postavljanje u oblaku (kao što je AWS ili besplatne usluge) kako ne biste morali držati računar uključenim cijeli dan.
Šta je tačno Telegram bot i zašto se isplati kreirati ga?
Telegram bot je, u suštini, program koji se nalazi unutar Telegrama i odgovara na poruke slijedeći pravila koja definirate u kodu. To nije ljudski korisnik, već "poseban račun" kojim upravlja backend koji vi razvijate, obično smješten na serveru ili cloud servisu.
Ovi botovi mogu biti jednostavni poput sistema koji uvijek odgovara istom porukom ili napredni poput asistent sa veštačka inteligencija koji razumije prirodni jezikupravljati plaćanjima, govoriti više jezika i povezivati se s vanjskim uslugama (API-jima, baze podataka, sistemi IoTitd.). Telegram nudi Bot API je otvoren i vrlo dobro dokumentiran što uveliko olakšava razvoj.
Takođe, Botovi nisu ograničeni na privatne razgovoreMogu funkcionirati u grupama, supergrupama i kanalima, moderirati razgovore, slati sažetke, ankete i sve vrste multimedijalnog sadržaja. Zato su postali ključna komponenta za automatizaciju zadataka, upravljanje zajednicama i ponudu usluga bez izvlačenja korisnika iz aplikacije.
Sa tehničke tačke gledišta, bot komunicira sa Telegramom koristeći HTTPS zahtjevi upućeni Bot API-juVi pišete kod (na primjer u Pythonu), Telegram vam daje tajni token, i odatle se sve odvija razmjenom JSON-a između vaših skripti i Telegramovih servera.

Primjeri iz stvarnog svijeta: za šta se danas koriste Telegram botovi
Prije nego što počnemo s kodiranjem, dobro je da budemo jasni Koje probleme možete riješiti pomoću Telegram bota?Ovo će vam pomoći da bolje dizajnirate logiku vašeg bota i, prije svega, osigurate da ne ostane samo jednostavan eksperiment.
Mnoge kompanije koriste botove kao prvi nivo usluge korisnicimaBot može odgovarati na često postavljana pitanja, provjeravati status narudžbe, upravljati rezervacijama ili slati personalizirane linkove za pomoć. Ako se stvari zakompliciraju, može eskalirati razgovor čovjeku, ali u početku vam to oslobađa mnogo repetitivnog posla.
Druga vrlo uobičajena primjena je distribucija sadržajaPostoje botovi koji čitaju RSS feedove, blogove, YouTube kanale ili društvene mreže i šalju vijesti, objave ili videozapise korisnicima ili kanalima u stvarnom vremenu. Ovo je idealno za medijske kuće, kreatore sadržaja ili bilo koga ko želi centralizirati informacije bez prebacivanja između aplikacija.
Na ličnom nivou, botovi za produktivnost čine svu razliku: podsjetnike, liste obaveza, upozorenja o događajima ili pametne alarmeBot može razumjeti fraze poput "Podsjeti me sutra u 8 na lijekove" i zakazati obavještenje u odgovarajuće vrijeme, bez potrebe za otvaranjem druge aplikacije.
Postoje i botovi usmjereni na razonodu i korisnost: preuzimanje medijskog sadržaja (uvijek poštujući autorska prava), turistički menadžeri koji preporučuju letove i hoteleBotovi za pregled mapa, upravljanje ličnim finansijama, primanje upozorenja iz industrijskih sistema ili praćenje servera itd. Kombinacija dostupnosti 24/7 i jednostavnosti korištenja čini raspon mogućnosti ogromnim.
Kako funkcioniše arhitektura Telegram bota
Da biste u potpunosti razumjeli šta ćete programirati, korisno je imati jasno razumijevanje osnovne arhitekture. S jedne strane, postoji Telegram, sa svojim serverima i Bot API-jemA s druge strane, tu je vaša aplikacija (kod u Pythonu, Node.js-u ili bilo kojem jeziku koji odaberete) koja se negdje pokreće: vaš računar, virtuelna mašina, servis bez servera, kontejner itd.
Kada korisnik pošalje poruku vašem botu, Telegram generira „ažuriranje“ u JSON formatuTo ažuriranje stiže u vaš program na dva moguća načina: ili ćete ga tražiti koristeći anketiranje metodom getUpdatesIli vam Telegram to automatski šalje putem HTTPS webhook koje ste prethodno konfigurisali.
U režimu anketiranja, vaš skripta Periodično traži od Telegrama da pita ima li novih poruka. Savršen je za lokalni razvoj i brzo testiranjeZato što ne morate izlagati svoj računar internetu ili konfigurirati certifikate. Samo pokrenete skriptu i gotovi ste.
S druge strane, u webhook modu, Telegram šalje ažuriranja direktno na HTTPS URL koji vi kontrolišete. Ovo je najpogodnije za produkcijska okruženjaBudući da smanjujete latenciju, ne šaljete stalne zahtjeve i možete skalirati aplikaciju iza web servera, proxyja ili load balancera. Ovdje vam je apsolutno potreban javni URL i važeći SSL certifikat.
U oba slučaja, vaš bot prima JSON, obrađuje ga prema logici koju ste definirali i odgovara koristeći Bot API metode kao što su pošalji poruku, pošalji fotografiju, odgovorPovratni pozivUpit i mnogi drugi. Biblioteke visokog nivoa (kao što su python-telegram-bot ili Telegraf u Node.js-u) enkapsuliraju ove detalje tako da morate raditi samo s funkcijama i rukovateljima. naredbe.

Preduslovi za kreiranje bota pomoću Pythona za nekoliko minuta
Da biste postavili svog prvog bota, ne treba vam ogromno korporativno okruženje, ali vam je potrebno neko vrlo jasni minimalni zahtjeviNjihova priprema će vam uštedjeti vrijeme i spriječiti glupe greške tokom postavljanja.
Osnove su imati Python 3 instaliran na vašem sistemuBilo koja moderna verzija (3.8 i novija) je obično više nego dovoljna. Također se preporučuje imati pip dostupan za instaliranje paketa, iako je već uključen u Python u većini trenutnih distribucija.
Sljedeći korak je instaliranje biblioteke koja pojednostavljuje rad s Bot API-jem. U ovom slučaju, koristit ćemo python-telegram-bot, jedan od najpopularnijih i najodržavanijih dodataka Python zajednice. Da biste ga instalirali, jednostavno pokrenite sljedeću naredbu u terminal:
pip3 install python-telegram-bot
Pored tehničkog podešavanja, potrebno je registrovati i samog bota na Telegramu. Da biste to uradili, koristićete @BotFatherSlužbeni Telegram bot služi kao kontrolna ploča za sve vaše botove. Odatle ćete kreirati bota, dati mu ime i dobiti pristupni token koji će biti ključ za vašu skriptu za upravljanje tim računom.
Kreirajte Telegram bota pomoću BotFathera
Početna tačka je uvijek ista: Registrujte bota i preuzmite tokenBez tog tokena, vaš kod neće moći komunicirati s Bot API-jem ili slati poruke bilo kome, jer je to ono što jedinstveno identificira vašeg bota.
Otvorite Telegram i potražite korisnika @BotFatherTo je službeni, verificirani bot, tako da ne možete pogriješiti. Kada ga imate, započnite chat s njim i upišite naredbu. /newbotBotFather će vas voditi korak po korak.
Prvo ćete morati odrediti "prijateljsko" ime za vašeg botaOvo je ono što će korisnici vidjeti (na primjer, „Podsjetnik za lijekove“). Zatim će vas tražiti korisničko ime, koje mora biti jedinstveno i završavati na bot, kao na primjer recordatorio_meds_bot ili nešto slično.
Nakon što je proces završen, BotFather će vratiti API token u formatu sličnom ovom: 123456789:ABC-DEF…Ovaj token je svetinja: tretirajte ga kao vrlo jaku lozinku. Nemojte ga objavljivati na GitHub-u, nemojte ga kopirati na forume, a ako ikada pomislite da je procurio, možete ga regenerirati iz BotFather-a koristeći naredbe za rotaciju tokena.
S tim u vezi, već imate osnovne stvari: Telegram bot račun i vjerodajnice za kontrolu iz vašeg Python kodaSada je vrijeme da pripremite kratki scenarij koji povezuje dijelove.
Instaliranje python-telegram-bota i priprema okruženja
Sa tokenom u ruci, sljedeći korak je osigurati da je vaše Python okruženje spremno za rad sa Telegram API-jem. Kao što smo spomenuli, najpogodnija opcija je korištenje biblioteke python-telegram-bot, koji vam nudi klase i funkcije visokog nivoa za definiranje naredbi, upravljanje razgovorima i slanje poruka.
Ako to već niste uradili, instalirajte biblioteku pokretanjem sljedeće naredbe u terminalu ili konzoli:
pip3 install python-telegram-bot
Na mnogim sistemima, ako imate samo jednu verziju Pythona, to može raditi i jednostavno:
pip install python-telegram-bot
Pomoću ovoga sada možete kreirati Python datoteku, na primjer bot_telegram.pyOvdje ćete početi pisati kod za svog bota. Možete koristiti bilo koji tekstualni editor ili IDE: VS Code, PyCharm, Sublime Text, čak i Notepad Ako želite. Važna stvar nije alat, već sadržaj skripte.
Minimalna struktura bota sa python-telegram-bot-om sastoji se od uvoza potrebnih klasa, Konfigurišite aplikaciju sa svojim tokenom i definirajte barem jednu funkciju za rukovanje naredbom /startšto je obično ulaz do bilo kojeg bota.
Prvi primjer: minimalni bot sa /start komandom
Pogledajmo praktičan primjer vrlo jednostavnog bota koji odgovara osnovnom porukom kada korisnik pošalje naredbu /startOvo će vam omogućiti da provjerite da li je sve ispravno povezano: ispravan token, instalirana biblioteka i da li komunikacija sa Telegramom funkcioniše.
U vašoj datoteci bot_telegram.pyMožete kreirati modernu verziju zasnovanu na trenutnoj python-telegram-bot (asinhronoj) arhitekturi sa kodom sličnim ovom, prilagođenim novijem stilu:
from telegram.ext import ApplicationBuilder, CommandHandler
async def start(ažuriranje, kontekst):
await update.message.reply_text("Zdravo! Ja sam vaš primjer bota na Telegramu.")
TOKEN = "VAŠ_TOKEN_OVDJE"
def main():
aplikacija = GraditeljAplikacija().token(TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
ako je __name__ == "__glavno__":
glavni ()
U ovom odlomku, ApplicationBuilder kreira glavnu bot aplikaciju, kojem pridružujete rukovatelj za naredbu /start. Funkcija start Odgovoran je za odgovaranje korisniku jednostavnim tekstom i run_polling() Aktivirajte način dugog anketiranja kako bi bot stalno tražio od Telegrama nova ažuriranja.
Da biste ga pokrenuli, jednostavno pokrenite sljedeće u terminalu:
python3 bot_telegram.py
Ako sve ispravno radi, vidjet ćete poruke u konzoli koje pokazuju da je bot aktivan. Otvorite Telegram, potražite svog bota koristeći korisničko ime koje ste mu dodijelili u BotFatheru, otvorite chat i pošaljite poruku. /start. Trebali biste dobiti poruku dobrodošlice koje ste definirali u kodu.
Kako učiniti bota korisnijim: meniji, statusi i razgovori
Počevši od osnovnog "zdravo svijete", zabava leži u dodavanju Naprednija logika: meniji, dugmad, različiti tokovi razgovora i upravljanje stanjem. Tu dolazi do izražaja prava snaga python-telegram-bota, s alatima poput ReplyKeyboardMarkup, InlineKeyboardMarkup ili ConversationHandler.
Pretpostavimo da želite kreirati bota za prijaviti incidente ili katastrofeSlično projektima poput DisAtBota, ideja je prikazati početni meni s opcijama kao što su "Pošalji izvještaj", "Prikaži mapu", "Često postavljana pitanja" ili "O nama". Da biste to učinili, možete definirati prilagođenu tastaturu s tipkama koje korisnik može pritisnuti, umjesto da ga prisiljavate da ručno kuca tekst.
Koristeći tastaturu sa brzim odzivom, definišete listu lista u Pythonu, gdje svaka podlista predstavlja red dugmadi. Zatim koristite ReplyKeyboardMarkup za izradu tastature i to predstavljaš kao argument za reply_text ili slične metode, tako da Telegram prikazuje te dugmad iznad okvira za pisanje.
Ova tehnika je idealna kada su vam potrebni visoko vođeni tokovi rada, kao što je postupni obrasci, upitnici ili ključni procesi gdje ne želite da korisnik pravi greške u kucanju. Nadalje, možete ga kombinirati s mašinom stanja koristeći ConversationHandlergdje je svako stanje toka povezano s jednim ili više različitih rukovatelja (na primjer, odabir jezika, odabir tipa izvještaja, zahtjev za geolokaciju, potvrđivanje podataka itd.).
Biblioteka vam omogućava da definišete rječnik stanja gdje je svaki ključ cijeli broj (identifikator stanja), a vrijednost je lista rukovalaca koji su aktivirani u tom trenutku. Na ovaj način, Čuvate kontekst između poruka I možete graditi složene dijaloge bez pretjeranog korištenja if/else naredbi svugdje.
Praktičan primjer: bot za podsjetnik na lijekove (svaki drugi dan).
Vrlo specifičan i koristan primjer je onaj ne zaboravite uzeti lijekovenaizmjenično uzimanje lijekova u podne i za vrijeme večere, svaki drugi dan. Početni pristup provjere je li kalendarski dan paran ili neparan čini se jednostavnim, ali se pokvari kada se promijene mjeseci (30, 31 dan, februar, prijestupne godine itd.).
Najpouzdaniji način da se ovo riješi nije oslanjanje na dan u mjesecu, već na fiksni referentni datumNa primjer, možete negdje pohraniti (datoteku, bazu podataka ili čak trajnu varijablu na serveru) datum prvog dana uzimanja lijeka i definirati taj dan kao "dan podnevne doze". Na osnovu toga izračunavate koliko je dana prošlo od tog početnog datuma.
Sa trenutnim datumom i datumom početka, možete izračunati razliku u danima koristeći funkcije u standardnoj Python biblioteci (modul datetimeOnda uradiš modulo 2 (ostatak pri dijeljenju sa 2)Ako je ostatak 0, dobijate jednu vrstu obroka (na primjer, podne); ako je ostatak 1, dobijate drugu (na primjer, večeru). Budući da se proračun zasniva na ukupnom broju proteklih dana, promjena mjeseca i broj dana u svakom mjesecu ne utiču na vas.
Vaš bot zatim može pokrenuti mali skript koji, u određeno vrijeme svakog dana, izračunava da li je vrijeme ručka ili večere i šalje vam odgovarajuću poruku. Da biste zakazali automatsko slanje, možete integrirati biblioteke za zakazivanje u Pythonu, kao što su raspored ili apschedulerili se oslanjati na eksterne sisteme kao što su cron poslovi, zakazane Lambda funkcije ili zakazani zadaci iz servisa na kojem hostujete bota.
Gdje hostirati svog bota: besplatne i opcije u oblaku
Vrlo često pitanje je: Da li moram držati računar uključen cijeli dan da bi bot radio? Odgovor je ne, sve dok ga implementirate na nekom cloud servisu ili online platformi koja održava proces u radu za vas.
Usluge poput PythonAnywhere vam omogućava pokretanje Python skripti u oblakuOvi planovi mogu biti dobra opcija za testiranje ili jednostavne botove. Međutim, besplatni planovi često imaju ograničenja u pogledu kontinuiranog vremena rada, odlaznih veza ili dostupnosti. Važno je pregledati njihove uslove i odredbe kako biste osigurali da će vaš bot ostati aktivan bez stalnog praćenja.
Ako želite nešto robusnije, ali i s vrlo ekonomičnim opcijama (ili gotovo besplatno u malim količinama), vrlo zanimljiva alternativa je korištenje AWS sa pristupom bez serveraNa primjer, možete postaviti svog bota s webhookom koji opslužuje AWS Lambda, a koji je dostupan putem Amazon API Gatewaya. U ovom modelu, vaš kod se pokreće samo kada Telegram pošalje ažuriranje i ne morate brinuti o održavanju servera u radu. Ako vam je potrebna dodatna zaštita, razmislite o uslugama poput Cloudflare.
U ovom pristupu, definirate Lambda funkciju koja prima JSON koji Telegram šalje vašem webhooku, validira tajni token, obrađuje poruku i odgovara pozivom Bot API-ja putem HTTPS zahtjeva. Cijena za nizak promet je obično vrlo niskaI ne morate upravljati mašinama, zakrpama ili ponovnim pokretanjima.
Za veće botove, s više prometa ili većim ovisnostima, možete se odlučiti za kontejnere u ECS Fargate zajedno s Application Load BalanceromU ovom slučaju, pokrećete svog bota (na primjer, FastAPI aplikaciju integriranu s python-telegram-botom u webhook modu) unutar Docker kontejnera, a ALB prima HTTPS zahtjeve i preusmjerava ih na vaše Fargate zadatke. To je složenije, ali i vrlo skalabilno i fleksibilno.
Dugo anketiranje u odnosu na webhookove: šta odabrati i kada
Telegram podržava dva međusobno isključiva pristupa za primanje ažuriranja: getUpdates (anketiranje) ili webhookoviNe možete koristiti oba istovremeno; ili vaš bot šalje upite Telegramu ili Telegram šalje ažuriranja na vaš server.
El dugo anketiranje To je najjednostavniji način za početak. Vaš kod periodično poziva getUpdatesOvo označava period isteka vremena kako bi veza ostala otvorena dok se ne prime nove poruke. Idealno je za lokalni razvoj jer možete pokrenuti bota na svom laptopu bez izlaganja portova vanjskom svijetu, a biblioteka python-telegram-bot obrađuje ove detalje metodama kao što su run_polling().
u web-kukeS druge strane, oni su opcija dizajnirana za produkciju. Konfigurirate HTTPS URL (na primjer, krajnju tačku u API Gatewayu, Flask/FastAPI server ili rutu u Node frameworku kao što su Express ili Telegraf) i pozovete metodu. setWebhook iz Bot API-ja navođenjem tog URL-a. Od tog trenutka, svako ažuriranje koje Telegram primi bit će poslano kao POST zahtjev u JSON formatu vašoj krajnjoj tački.
Pomoću webhookova možete dodati dodatni sloj sigurnosti korištenjem parametra secret_tokenPrilikom definiranja webhooka, prosljeđujete mu tajni token, a zatim na svom serveru potvrđujete da je zaglavlje X-Telegram-Bot-Api-Secret-Token Ovo odgovara očekivanoj vrijednosti. Na ovaj način prihvatate samo zahtjeve koji zaista dolaze iz Telegrama.
U svakom slučaju, zapamtite da sve dok je webhook konfiguriran, Nećete moći koristiti getUpdatesAko se želite vratiti u način anketiranja, prvo morate onemogućiti webhook tako što ćete ga izbrisati ili postaviti na prazno, a zatim možete pokrenuti bota lokalno pomoću run_polling() bez konflikta.
Najbolje prakse za sigurnost, UX i održavanje
Kada vaš bot počne koristiti sve više ljudi, važno je ići dalje od eksperimenta i razmotriti neke stvari. dobre prakse kako bi bilo sigurno, ugodno za korištenje i jednostavno za održavanje dugoročno
Što se tiče sigurnosti, ključna tačka je zaštiti token botaUvijek ga pohranite u varijable okruženja ili upravitelje tajnih podataka (kao što je AWS Secrets Manager) i izbjegavajte njegovo tvrdo kodiranje u izvornom kodu, posebno ako će taj kod biti u javnim repozitorijima. Ako sumnjate da je možda procurio, odmah regenerirajte token u BotFatheru.
Ako koristite webhookove, iskoristite prednosti tajni_token i uvijek validirajte zaglavlje koje Telegram šalje. Slično tome, ograničite izložene portove (kao što su 443, 80, 88, 8443, koje Telegram podržava za webhookove) i konfigurirajte pravila zaštitnog zida ili sigurnosne grupe vašeg cloud provajdera da prihvataju samo potreban promet.
Sa stanovišta korisničkog iskustva, ključno je da vaš bot Koristite jasne naredbe, objašnjavajuće poruke i jednostavno rukovanje greškama.Ako nešto pođe po zlu, nemojte ostavljati korisnika u potpunoj tišini; pošaljite poruku da imate problema i, ako je moguće, predložite šta mogu pokušati. Dugmad, prilagođene tastature i dobro dizajnirani meniji čine interakciju mnogo bržom.
Konačno, preporučuje se prati performanse i evidentira greškeIskoristite prednosti sistema rezanje od vašeg provajdera (CloudWatch, na primjer u AWS-u) za otkrivanje izuzetaka, sporog vremena odziva ili skokova u prometu. Također možete prikupljati povratne informacije od samih korisnika, pomoću naredbi poput /feedback ili ciljane ankete, kako bi se poboljšale najčešće korištene funkcije.
Uz sve navedeno, postavljanje Telegram bota s Pythonom za manje od 10 minuta više nije magija, već jasan proces: Registrujete bota kod BotFather-a, instalirate python-telegram-bot, pišete mali skript sa /start, birate između anketiranja ili webhooka i odlučujete gdje ćete ga hostovati.Odatle možete dodavati slojeve: menije, statuse, integracije s vanjskim API-jima ili pametne podsjetnike poput podsjetnika za lijekove, sve dok ne dobijete zaista korisnog asistenta prilagođenog vašem svakodnevnom životu.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje kroz pisanje, a to je ono što ću raditi na ovom blogu, pokazivati vam sve najzanimljivije stvari o gadžetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se krećete u digitalnom svijetu na jednostavan i zabavan način.