- Telegram bot je aplikacija koja komunicira s korisnicima putem Bot API-ja, idealna za automatizaciju zadataka, pružanje podrške i distribuciju sadržaja.
- s Piton A s bibliotekom python-telegram-bot možete stvoriti funkcionalnog bota za nekoliko minuta, počevši s jednostavnom naredbom /start i proširujući ga izbornicima i statusima.
- Arhitektura se temelji na primanju ažuriranja putem anketiranja ili webhookova, što omogućuje implementaciju bota 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 dugoročno.

Ako svakodnevno koristite Telegram, vjerojatno 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 puno truda. Dobra vijest je da s Pythonom možete imati funkcionalnog bota za nekoliko minuta.
U ovom članku ćete naučiti Kako napraviti Telegram bota s Pythonom za manje od 10 minutaPočinjemo od nule i razumijemo što radite u svakom koraku. Pokrit ćemo sve, od stvaranja bota pomoću BotFathera, instaliranja biblioteka, primjera stvarnog koda, do opcija za njegovo postavljanje u oblak (poput AWS-a ili besplatnih usluga) kako ne biste morali cijeli dan držati računalo uključeno.
Što je točno Telegram bot i zašto se isplati stvoriti 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 poslužitelju ili usluzi u oblaku.
Ti botovi mogu biti jednostavni poput sustava koji uvijek odgovara istom porukom ili napredni poput asistent s umjetna inteligencija koji razumije prirodni jezikupravljati plaćanjima, govoriti više jezika i povezivati se s vanjskim uslugama (API-jima, baza podataka, sustavi IOTitd.). Telegram nudi Bot API je otvoren i vrlo dobro dokumentiran što uvelike olakšava razvoj.
Osim toga, Botovi nisu ograničeni na privatne razgovoreMogu funkcionirati u grupama, supergrupama i kanalima, moderirati razgovore, slati sažetke, ankete i sve vrste multimedijskog sadržaja. Zato su postali ključna komponenta za automatizaciju zadataka, upravljanje zajednicama i ponudu usluga bez izvlačenja korisnika iz aplikacije.
S tehničke točke gledišta, bot komunicira s Telegramom koristeći HTTPS zahtjevi Bot API-juVi napišete kod (na primjer u Pythonu), Telegram vam da tajni token i odatle se sve odvija razmjenom JSON-a između vaših skripti i Telegramovih servera.

Primjeri iz stvarnog svijeta: za što 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?To će vam pomoći da bolje dizajnirate logiku svog bota i, prije svega, osigurate da ne ostane samo jednostavan eksperiment.
Mnoge tvrtke koriste botove kao prva razina usluge korisnicimaBot može odgovarati na često postavljana pitanja, provjeravati status narudžbe, upravljati rezervacijama ili slati personalizirane poveznice za pomoć. Ako se stvari zakompliciraju, može eskalirati razgovor čovjeku, ali u početku vam to oslobađa puno repetitivnog posla.
Druga vrlo česta 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 tko želi centralizirati informacije bez prebacivanja između aplikacija.
Na osobnoj razini, botovi za produktivnost čine svu razliku: podsjetnike, popise obaveza, upozorenja o događajima ili pametne alarmeBot može razumjeti fraze poput "Podsjeti me na lijekove sutra u 8" i zakazati obavijest 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), menadžeri putovanja koji preporučuju letove i hoteleBotovi za pregledavanje karata, upravljanje osobnim financijama, primanje upozorenja iz industrijskih sustava ili praćenje servera itd. Kombinacija dostupnosti 24/7 i jednostavnosti korištenja čini raspon mogućnosti ogromnim.
Kako funkcionira arhitektura Telegram bota
Da biste u potpunosti razumjeli što ć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 izvršava: vaše računalo, virtualni stroj, usluga bez poslužitelja, 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 pomoću anketiranje metodom getUpdatesIli vam Telegram to automatski šalje putem HTTPS webhook koje ste prethodno konfigurirali.
U načinu anketiranja, vaš rukopis Povremeno traži od Telegrama da pita ima li novih poruka. Savršen je za lokalni razvoj i brzo testiranjeJer ne morate izlagati svoje računalo internetu ili konfigurirati certifikate. Samo pokrenete skriptu i gotovi ste.
S druge strane, u webhook načinu rada, Telegram šalje ažuriranja izravno na HTTPS URL koji vi kontrolirate. To je najprikladnije za produkcijska okruženjaBudući da smanjujete latenciju, ne šaljete stalne zahtjeve i možete skalirati aplikaciju iza web poslužitelja, proxyja ili uravnoteživača opterećenja. Ovdje vam je apsolutno potreban javni URL i valjani 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, odgovori na povratni poziv i mnogi drugi. Biblioteke visoke razine (poput python-telegram-bot ili Telegraf u Node.js-u) enkapsuliraju ove detalje tako da morate raditi samo s funkcijama i rukovateljima. naredbe.

Preduvjeti za izradu bota s Pythonom u nekoliko minuta
Za postavljanje svog prvog bota ne treba vam ogromno korporativno okruženje, ali vam treba nešto vrlo jasni minimalni zahtjeviNjihova priprema uštedjet će vam vrijeme i spriječiti glupe pogreške tijekom postavljanja.
Osnove su imati Python 3 instaliran na vašem sustavuBilo koja moderna verzija (3.8 i novija) obično je 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 naj održavanijih dodataka Python zajednice. Da biste ga instalirali, jednostavno pokrenite sljedeću naredbu u terminal:
pip3 install python-telegram-bot
Osim tehničke postavke, potrebno je registrirati i samog bota na Telegramu. Za to ćete koristiti @BotOtacSlužbeni Telegram bot djeluje kao kontrolna ploča za sve vaše botove. Od tamo ćete stvoriti bota, dati mu ime i dobiti pristupni token koji će biti ključ za vašu skriptu za upravljanje tim računom.
Napravite Telegram bota s BotFatherom
Početna točka je uvijek ista: Registrirajte 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 @BotOtacTo je službeni, verificirani bot, tako da ne možete pogriješiti. Nakon što 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 s formatom sličnim ovome: 123456789:ABC-DEF…Ovaj token je svetinja: tretirajte ga kao vrlo jaku lozinku. Nemojte ga objavljivati na GitHubu, nemojte ga kopirati na forume, a ako ikada pomislite da je procurio, možete ga regenerirati iz BotFathera pomoću naredbi za rotaciju tokena.
S tim da već imate osnovne stvari: Telegram bot račun i vjerodajnice za upravljanje iz vašeg Python kodaSada je vrijeme za pripremu kratkog scenarija koji povezuje dijelove.
Instaliranje python-telegram-bota i priprema okruženja
S tokenom u ruci, sljedeći korak je osigurati da je vaše Python okruženje spremno za rad s Telegram API-jem. Kao što smo spomenuli, najpogodnija opcija je korištenje biblioteke python-telegram-bot, koji vam nudi klase i funkcije visoke razine za definiranje naredbi, upravljanje razgovorima i slanje poruka.
Ako to već niste učinili, instalirajte biblioteku pokretanjem sljedeće naredbe u terminalu ili konzoli:
pip3 install python-telegram-bot
Na mnogim sustavima, ako imate samo jednu verziju Pythona, to može raditi i jednostavno:
pip install python-telegram-bot
S ovim sada možete stvoriti Python datoteku, na primjer bot_telegram.pyOvdje ćete početi pisati kod svog bota. Možete koristiti bilo koji uređivač teksta ili IDE: VS Code, PyCharm, Sublime Text, čak i Notepad Ako želite. Nije važan alat, već sadržaj skripte.
Minimalna struktura bota s python-telegram-botom sastoji se od uvoza potrebnih klasa, Konfigurirajte aplikaciju svojim tokenom i definirajte barem jednu funkciju za rukovanje naredbom /startšto je obično ulaz za bilo kojeg bota.
Prvi primjer: minimalni bot s naredbom /start
Pogledajmo praktičan primjer vrlo jednostavnog bota koji odgovara osnovnom porukom kada korisnik pošalje naredbu /startTo će vam omogućiti da provjerite je li sve ispravno povezano: ispravan token, instalirana biblioteka i komunikacija s Telegramom radi.
U vašoj datoteci bot_telegram.pyMožete stvoriti modernu verziju temeljenu na trenutnoj python-telegram-bot (asinkronoj) arhitekturi s kodom sličnim ovome, prilagođenim novijem stilu:
from telegram.ext import ApplicationBuilder, CommandHandler
async def start(ažuriranje, kontekst):
await update.message.reply_text("Pozdrav! 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 stvara 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.
Za pokretanje, 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 primiti poruku dobrodošlice koje ste definirali u kodu.
Kako učiniti bota korisnijim: izbornici, statusi i razgovori
Počevši od osnovnog "pozdrav svijete", zabava leži u dodavanju Naprednija logika: izbornici, gumbi, 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 stvoriti bota za prijaviti incidente ili katastrofeSlično projektima poput DisAtBota, ideja je prikazati početni izbornik s opcijama kao što su "Pošalji izvješće", "Prikaži kartu", "Često postavljana pitanja" ili "O nama". Da biste to učinili, možete definirati prilagođenu tipkovnicu s gumbima koje korisnik može pritisnuti, umjesto da ga se prisiljava da ručno tipka tekst.
Pomoću tipkovnice s brzim odzivom definirate popis popisa u Pythonu, gdje svaki podpopis predstavlja red gumba. Zatim koristite ReplyKeyboardMarkup za izradu tipkovnice i to predstavljaš kao argument za reply_text ili slične metode, tako da Telegram prikazuje te gumbe iznad okvira za pisanje.
Ova tehnika je idealna kada su vam potrebni visoko vođeni tijekovi rada, kao što je postupni obrasci, upitnici ili kritični procesi gdje ne želite da korisnik pravi pogreške u tipkanju. Nadalje, možete ga kombinirati s automatom stanja pomoću ConversationHandlergdje je svako stanje toka povezano s jednim ili više različitih rukovatelja (na primjer, odabir jezika, odabir vrste izvješća, zahtjev za geolokaciju, potvrđivanje podataka itd.).
Biblioteka vam omogućuje definiranje rječnika stanja gdje je svaki ključ cijeli broj (identifikator stanja), a vrijednost je popis rukovatelja koji su aktivirani u tom trenutku. Na taj način, Čuvate kontekst između poruka I možete graditi složene dijaloge bez pretjeranog korištenja if/else naredbi posvuda.
Praktičan primjer: bot za podsjetnik na lijekove (svaki drugi dan).
Vrlo specifičan i koristan primjer je onaj ne zaboravite uzeti lijeknaizmjenič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 promijenite mjesece (30, 31 dan, veljača, prijestupne godine itd.).
Najrobustniji način rješavanja ovog problema nije oslanjanje na dan u mjesecu, već na fiksni referentni datumNa primjer, možete negdje pohraniti (datoteku, bazu podataka ili čak trajnu varijablu na poslužitelju) datum prvog dana uzimanja lijeka i definirati taj dan kao "dan podnevne doze". Odatle izračunavate koliko je dana prošlo od tog početnog datuma.
S trenutnim datumom i datumom početka, možete izračunati razliku u danima koristeći funkcije u standardnoj Python biblioteci (modul datetimeZatim napravite modulo 2 (ostatak pri dijeljenju s 2)Ako je ostatak 0, dobivate jednu vrstu obroka (na primjer, podne); ako je ostatak 1, dobivate drugu (na primjer, večeru). Budući da se izračun temelji na ukupnom broju proteklih dana, promjena mjeseca i broj dana u svakom mjesecu ne utječu na vas.
Vaš bot zatim može pokrenuti mali skript koji u određeno vrijeme svakog dana izračunava je li vrijeme ručka ili večere i šalje vam odgovarajuću poruku. Za zakazivanje automatskog slanja možete integrirati biblioteke za zakazivanje u Pythonu, kao što su raspored ili apschedulerili se oslanjati na vanjske sustave kao što su cron poslovi, zakazane Lambda funkcije ili zakazani zadaci s usluge na kojoj hostirate bota.
Gdje hostirati svog bota: besplatne i opcije u oblaku
Vrlo često pitanje je: Moram li cijeli dan držati računalo uključeno da bi bot radio? Odgovor je ne, sve dok ga implementirate na neku uslugu u oblaku ili online platformu koja održava proces u tijeku za vas.
Usluge poput PythonAnywhere vam omogućuje 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 izvođenja, odlaznih veza ili dostupnosti. Važno je pregledati njihove uvjete 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 s pristupom bez serveraNa primjer, možete postaviti svog bota s webhookom koji poslužuje AWS Lambda, izložen putem Amazon API Gatewaya. U ovom modelu, vaš se kod pokreće samo kada Telegram pošalje ažuriranje i ne morate se brinuti o održavanju poslužitelja 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, provjerava tajni token, obrađuje poruku i odgovara pozivom Bot API-ja putem HTTPS zahtjeva. Cijena za nizak promet obično je vrlo niskaI ne morate upravljati strojevima, 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 načinu rada) 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 vs. webhookovi: što odabrati i kada
Telegram podržava dva međusobno isključiva pristupa primanju ažuriranja: getUpdates (anketiranje) ili webhookoviNe možete koristiti oboje istovremeno; ili vaš bot šalje upite Telegramu ili Telegram šalje ažuriranja na vaš poslužitelj.
El dugo anketiranje To je najjednostavniji način za početak. Vaš kod periodički poziva getUpdatesOvo označava razdoblje 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 prijenosnom računalu bez izlaganja portova vanjskom svijetu, a biblioteka python-telegram-bot obrađuje te detalje metodama poput run_polling().
The web kukeS druge strane, oni su opcija dizajnirana za produkciju. Konfigurirate HTTPS URL (na primjer, krajnju točku u API Gatewayu, Flask/FastAPI poslužitelj ili rutu u Node frameworku poput Expressa ili Telegrafa) i pozovete metodu. setWebhook iz Bot API-ja navođenjem tog URL-a. Od tog trenutka nadalje, svako ažuriranje koje Telegram primi bit će poslano kao POST zahtjev u JSON formatu vašoj krajnjoj točki.
Pomoću webhookova možete dodati dodatni sloj sigurnosti pomoću parametra secret_tokenPrilikom definiranja webhooka, prosljeđujete mu tajni token, a zatim na svom poslužitelju potvrđujete da je zaglavlje X-Telegram-Bot-Api-Secret-Token Ovo odgovara očekivanoj vrijednosti. Na ovaj način prihvaćate samo zahtjeve koji stvarno dolaze iz Telegrama.
U svakom slučaju, imajte na umu da sve dok je webhook konfiguriran, Nećete moći koristiti getUpdatesAko se želite vratiti u način anketiranja, prvo morate onemogućiti webhook brisanjem ili postavljanjem na prazno, a zatim možete pokrenuti bota lokalno s run_polling() bez sukoba.
Najbolje prakse za sigurnost, korisničko iskustvo i održavanje
Kada vaš bot počne koristiti 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 toč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 vatrozida ili sigurnosne grupe vašeg davatelja usluga u oblaku da prihvaćaju samo potreban promet.
S gledišta korisničkog iskustva, bitno je da vaš bot Koristite jasne naredbe, objašnjavajuće poruke i jednostavno rješavanje pogrešaka.Ako nešto pođe po zlu, nemojte ostaviti korisnika u potpunoj tišini; pošaljite poruku da imate problema i, ako je moguće, predložite što mogu pokušati. Gumbi, prilagođene tipkovnice i dobro dizajnirani izbornici znatno ubrzavaju interakciju.
Konačno, preporučuje se praćenje performansi i zapisivanje pogrešakaIskoristite prednosti sustava drva od vašeg pružatelja usluga (CloudWatch, na primjer u AWS-u) za otkrivanje iznimki, sporog vremena odziva ili skokova prometa. 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 značajke.
Uz sve navedeno, postavljanje Telegram bota s Pythonom za manje od 10 minuta više nije magija, već jasan proces: Registrirate bota s BotFatherom, instalirate python-telegram-bot, napišete mali skript s /start, odaberete između anketiranja ili webhooka i odlučite gdje ćete ga hostirati.Odatle možete dodavati slojeve: izbornike, 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 pisanjem, a to je ono što ću učiniti na ovom blogu, pokazati vam sve najzanimljivije stvari o gadgetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se snađete u digitalnom svijetu na jednostavan i zabavan način.