
Cum am creat un bot de Telegram pentru teatru fără să scriu o linie de cod
TL;DR
- Mi-am automatizat frustrarea de a rata bilete bune la teatru.
- ChatGPT a dat planul, Copilot a scris codul, eu am orchestrat totul.
- Au existat și greșeli haioase (și multe).
- Botul trăiește acum în cloud și funcționează singur.
- AI accelerează munca, nu o înlocuiește.
Voi fi sinceră: acest bot nu a început cu mine deschizând un editor și scriind cod.
De fapt, a început cu o întrebare pe care i-am aruncat-o lui ChatGPT: „Se poate face așa ceva?” De acolo, am schițat arhitectura, am clarificat piesele în mișcare și abia apoi am trecut la Copilot ca să îi dau formă.
Așa că nu, nu am construit manual un bot de Telegram linie cu linie. Nu am proiectat fiecare modul de la zero și nici nu am stat la 3 dimineața să depanez apeluri API. În schimb, am făcut ceva ce pare complet normal în 2025. Am combinat ChatGPT pentru brainstorming și design cu Copilot pentru implementare, am intrat în vibe-ul sesiunii de coding și am iterat până când totul a funcționat.
Și cumva, tot procesul ăsta s-a transformat într-un bot complet funcțional care verifică calendarele teatrelor din Iași și îmi trimite notificări pe Telegram atunci când apar evenimente noi.
Aceasta este povestea unui QA engineer care a construit un bot fără să îl „construiască” cu adevărat, cel puțin nu în modul tradițional de "hai să mă afund singură în tot codebase-ul ăsta". Și sincer, nu am timp acum să analizez fiecare linie de cod, există alte priorități, dar experiența m-a învățat mult mai mult decât mă așteptam.
Scânteia reală: să ratezi de prea multe ori la rând
Aici este adevărata poveste din spatele acestui bot.
Într-o zi m-am gândit: „Ia să văd ce piese sunt în Iași săptămâna asta.” Am deschis site-urile și toate locurile bune erau deja luate.
Rândurile din față? Zero. Lateralele? Zero. Ce îmi doream eu? Zero spre minus.
Nu era prima dată când pățeam asta. Dacă reușesc să prind locuri bune, se întâmplă o dată la câteva luni.
Și atunci creierul meu de QA mi-a șoptit liniștit replica lui preferată: „De ce faci asta manual? Poți să automatizezi.”
Așa s-a născut ideea, dintr-un amestec de frustrare blândă și dorința de a nu mai rata niciodată o seară bună de teatru.
Intră în scenă Copilot: co-developer, co-architect, haos controlat în formă de AI
Înainte ca Copilot să intre în peisaj, eu făcusem deja partea de detectiv. Am deschis site-urile teatrelor, am inspectat request-urile, am găsit endpoint-urile ascunse, am luat parametrii necesari și m-am uitat la structura răspunsurilor JSON. Apoi m-am întors la ChatGPT cu o întrebare foarte simplă:
„Se poate face asta și cum ar arăta arhitectura?”
După ce am avut un plan aproximativ, am trecut la Copilot și acolo a început adevărata sesiune de vibe coding.
Nu am scris codul de la zero. I-am explicat pur și simplu fluxul: „Aici este endpoint-ul, asta este cererea, așa arată răspunsul, așa vreau să fie procesate și formate evenimentele, asta este logica generală.”
Copilot a luat toate aceste informații și a început să genereze proiectul: module, helper-e, scrapers, message builders. Uneori minunat, alteori într-o manieră complet haotică. Iar în timp ce fișierele apăreau, în mintea mea se derula în paralel un alt proces:
- „Funcțiile astea ar trebui mutate într-un utils.”
- „Logica asta trebuie centralizată.”
- „Fișierul ăsta nu are ce căuta aici.”
Așa că l-am tot împins pe Copilot: mută asta, refactorizează asta, aplică best practices, reorganizează structura proiectului. Și Copilot a făcut-o, în felul lui. Repara ceva și strica altceva. Eu încercam să repar ce stricase el și stricam altceva.
Clasic teamwork.
Dar exact asta era farmecul. Nu era delegare. Era colaborare, cu tot haosul, iterațiile și surprinzător de mult fun. Eu am venit cu înțelegerea, analiza, endpoint-urile, logica și instinctul de QA. Copilot a venit cu viteza, scaffolding-ul și energia aceea de developer junior care nu obosește niciodată.
Și cumva, între noi doi, a ieșit un bot curat, ușor de întreținut și perfect funcțional, pornit dintr-o idee spontană și o sesiune de vibe coding.
Lecția cea mai importantă: tot trebuie să gândești ca un inginer
Chiar dacă Copilot a scris tot codul, partea de gândire tot la mine a rămas.
Nu am construit arhitectura manual, dar a trebuit să îl ghidez constant: să verific structura pe care o genera, să îi cer să refactorizeze fișiere, să reorganizeze module și să aplice bune practici pentru un proiect Python adevărat. Nimic din asta nu s-a întâmplat automat. A fost nevoie de mai multe iterații, mult „mută asta aici” și „asta trebuie să stea în propriul modul”, până când proiectul a început să arate curat.
Logica de scraping nici măcar nu a fost ideea mea. Copilot și ChatGPT au propus-o după ce le-am arătat cum arată site-ul. Contribuția mea reală a fost în flux: cum vreau să arate mesajul, când trebuie să îl trimită botul, cât de des să verifice site-urile și ce să facă atunci când nu există noutăți, triggerul cu keyword și curățarea săptămânală a evenimentelor vechi.
Copilot s-a ocupat de scaffolding, funcții și partea grea. Eu m-am ocupat de direcție, logică și calitate.
Și asta este concluzia adevărată:
AI poate să genereze codul, dar nu poate să definească scopul, fluxul sau experiența.
Nu decide singur ce înseamnă „bine”. Pentru asta tot ai nevoie de gândire tehnică, de judecată și de intenție.
Poți automatiza tastatul, dar nu poți automatiza înțelegerea.
Apoi a venit momentul: „Stai puțin, botul ăsta trebuie să trăiască undeva.”
Când botul a început în sfârșit să funcționeze pe laptopul meu, am avut o revelație mică dar importantă: nu o să țin un terminal deschis la nesfârșit doar ca să mă anunțe despre piesele de teatru când apar.
Botul are nevoie de independență, de propria lui viață, de un loc în cloud unde să ruleze liniștit de două ori pe zi, fără să mă întrebe dacă am nevoie.
Așa că am transferat în cloud, iar în momentul ăla parcă s-a schimbat totul. Nu mai era doar un script simpatic scris într-o pauză. A devenit o mică creatură digitală care verifică programele teatrelor în locul meu. Un asistent cu o singură misiune:
să mă anunțe când apare o piesă nouă. Și sincer, să-l văd rulând automat pentru prima dată, fără mine, a avut ceva magic. O idee născută dintr-o sesiune de vibe coding de două ore s-a transformat într-un lucru autonom, fiabil și surprinzător de util.
Există ceva foarte satisfăcător în a crea un bot pe care nu trebuie să îl supraveghezi. Pur și simplu trăiește, funcționează și își face treaba.
Ce a mers prost (pentru că mereu merge ceva prost)
Niciun proiect nu e complet fără un pic de haos, iar acesta și-a făcut treaba exemplar.
1. Marea surpriză de preț de la Heroku
La jumătatea procesului de deploy am deschis Heroku, gata să apăs butonul clasic de Free Tier.
Numai că surpriză: free tier-ul dispăruse, era istorie. Un proiect de zero lei voia brusc cinci dolari pe lună.
Am închis tab-ul, am refuzat politicos și am migrat totul pe Render.com, învățând din mers o platformă nouă de hosting.
Vibe coding-ul întâlnește vibe DevOps.
2. Vânătoarea de variabile de mediu
La un moment dat am reușit să provoc botului o criză de identitate. Aveam 2 variabile care se numeau in 3 feluri in 3 locuri diferite: BOT_TOKEN? BOT_API_KEY? TOKEN? Fișiere diferite citeau nume diferite, de parcă fiecare modul avea propria opinie. Botul mo lua razna pentru că un fișier insista să folosească o variabilă care nu exista nicăieri altundeva.
Recomand? Absolut nu.
3. Incidentul mesajelor duplicate
La un moment dat botul meu a devenit entuziast. Fiecare comandă era declanșată de două ori, ceea ce ducea la un val politicos, dar neobosit, de mesaje „verific dacă sunt evenimente noi”.
Problema? Atât funcția main(), cât și manual_check() trimiteau răspunsuri separat.
Botul nu era stricat, era doar vorbăreț, prea vorbăreț.
4. Fișierul known_events care exista doar pe laptopul meu
Local, totul era perfect. În cloud? FileNotFoundError: known_events.json
Render nu avea nici cea mai mică idee că fișierul trebuia să existe. Botul încerca să îl încarce, eșua, intra în panică și refuza să continue.
Crearea directorului a rezolvat problema, dar a fost un moment „da la mine merge” clasic, din acela care te face să oftezi adânc.
5. Mutatul fișierelor fără sfârșit
Ce a început ca un mic script simpatic s-a transformat treptat într-un proiect adevărat. Am mutat fișiere din root în core, am separat serviciile în propriul folder, am rearanjat helper-ele… și, evident, de fiecare dată când schimbam structura, ceva din imports înceta să mai funcționeze. Reparam un import, observaam că altul nu mai găsește calea corectă. La un moment dat mi-am dat seama că petrecusem mai mult timp reorganizând proiectul decât lucrând efectiv la logică. Dar acesta e farmecul când construiești cu AI. Nu doar scrii proiectul, îl crești, îl remodelezi și, uneori, îl alergi prin casă ca pe un copil mic cu foarfeca în mână.
Concluzii
Proiectul acesta mi-a amintit de un lucru important:
AI poate să scrie codul, dar nu îi poate defini structura, logica sau nivelul de calitate. Partea asta rămâne profund umană.
Copilot nu a înlocuit gândirea de inginer, doar a accelerat-o. M-a lăsat să mă concentrez pe decizii, pe fluxuri, pe riscuri, pe comportamente și rezultate – nu pe apăsat taste.
Și exact acolo aducem noi cel mai mult valoare.
Rezultatul este un tool mic, dar util, care rezolvă o frustrare personală, rulează stabil în cloud și a fost construit într-o fracțiune din timpul pe care l-ar fi cerut acum cinci ani.
Și asta îmi place cel mai mult la perioada în care trăim. Când ai o idee, nu trebuie să o lași să se stingă. O poți construi rapid, creativ și cu sens.
Uneori automatizezi teste. Alteori îți automatizezi viața. Ambele sunt perfect valide.
Și da, dacă un developer Python cu experiență va deschide repo-ul, cu siguranță va observa câteva decizii… creative.
Poate chiar mai multe. Sunt mai mult decat deschisă la feedback.


