Vai al contenuto
SIMONE PIZZI
Progetti ↗
Runtime TelegramBot Desktop Titan Edition

Runtime TelegramBot ovvero Il bot che visse due volte

Caccia a un bug tra YouTube e database: come abbiamo domato il bot Titan con la strategia IronShield. Wild Coding racconta la sfida per fermare lo spam.

Data
Lettura
4 minuti
Sezioni
5
Copertina: Runtime TelegramBot ovvero Il bot che visse due volte

Avete presente quando siete sicuri di aver finalmente realizzato il vostro lavoro e ad un certo punto, una certa cosa, scatena improvvisamente un brivido freddo che corre lungo la schiena? Questo è quello che ho provato io quando ho sentito lo smartphone vibrare senza sosta in tasca e capii, in un istante, che la mia creatura digitale ha deciso di ammutinarsi. È la classica "notifica impazzita": quella sensazione che provi quando realizzi che il tuo bot ha preso vita propria e sta inondando i canali Telegram di contenuti che avrebbero dovuto restare sepolti nel dimenticatoio.

Questa è la storia di come abbiamo dato la caccia a un fantasma nel codice del Runtime TelegramBot Titan Edition e di come siamo passati da un ottimismo ingenuo a uno "scudo di ferro".

L’ombra del loop infinito

Per settimane, il bot è stato perseguitato da un bug intermittente e subdolo. Il sintomo era quasi teatrale: all'improvviso, senza alcun preavviso, Titan si trasformava in una mitragliatrice impazzita. Iniziava a pubblicare decine di video di YouTube o articoli dal mio sito (simonepizzi.runtimeradio.it) che erano già stati postati mesi, se non anni prima.

Inizialmente abbiamo provato con le "soluzioni della domenica". Con la versione 1.7.x abbiamo cifrato i token; con la 1.8.6 abbiamo introdotto un controllo basato sull'hash del titolo, convinti che il problema fossero gli URL che cambiavano lato sito. Eravamo convinti di aver alzato delle mura invalicabili. Ci sbagliavamo.

Il bug era più furbo. Sapeva nascondersi nelle crepe del Multi-Bot, lì dove ogni istanza vive nel suo silo di memoria isolato. Aspettava solo il momento giusto — magari una migrazione di database — per tornare a colpire.

Il tradimento di YouTube e la trappola dell'anno 2000

La vera "scintilla" del caos è arrivata quando YouTube ha deciso di spegnere i suoi vecchi feed XML. Siamo stati costretti a passare a InnerTube per fare scraping dinamico, e lì il terreno è diventato fango.

YouTube, nel suo infinito mistero, ha smesso di fornirci date certe, restituendo stringhe vaghe come "2 years ago". Il bot, poverino, cercava di indovinare la data reale, ma quando non ci riusciva, scattava un paracadute di sicurezza scritto nel codice: l'anno 2000.

E qui è scattata la trappola. Il motore del bot era programmato per essere "gentile": "Se non capisco bene la data, io pubblico comunque, così non ti perdi la notizia". Quel pizzico di gentilezza informatica è stato il varco attraverso cui è passato tutto lo spam. Il bot vedeva un contenuto del 2000, lo considerava "incerto" e, per sicurezza, lo sparava online. Di nuovo.

Nasce IronShield: l’ora del pessimismo cosmico

Il 20 aprile 2026 abbiamo capito che la gentilezza non paga, almeno non nel codice. Abbiamo deciso di cambiare paradigma radicalmente: siamo passati dal "vibe" ottimista al pessimismo iper-protettivo. Abbiamo implementato la strategia IronShield (v1.10.5):

  1. Il blocco dell'anno 2000: Abbiamo tolto al bot il beneficio del dubbio. Se un video ha come data il fallback del 2000 o se il confronto temporale dà anche solo un minimo errore, il bot deve fermarsi. Meglio il silenzio che lo spam.

  2. La memoria collettiva: Abbiamo abbattuto i muri tra i bot. Ora esiste una "Global Deduplication": se un titolo è stato inviato, è "bruciato" per sempre. Non importa se l'URL cambia o se il feed viene letto da un altro bot. Se l'abbiamo già visto, finisce nel cestino.

  3. Il cutoff di ferro: Abbiamo blindato matematicamente il controllo temporale, rendendolo immune ai capricci dei fusi orari o ai dati sporchi che arrivano dall'esterno.

L’ora della verità

Alle 17:14, durante il test finale, abbiamo guardato i log della versione 1.10.5. È stato un momento quasi catartico. Mentre il bot scansionava freneticamente migliaia di vecchi articoli, le nuove valvole di sicurezza scattavano con una precisione chirurgica:

  • 379 skipped due to cutoff date (379 proiettili schivati grazie alla data).

  • 9 already processed (9 duplicati bloccati dalla memoria collettiva).

Mentre prima il bot avrebbe inondato Telegram, ora scartava tutto con freddezza. Lo scudo stava reggendo.

Cosa abbiamo imparato (oltre al codice)

Questa caccia al bug ci ha insegnato che il problema non era YouTube che "mentiva", ma noi che ci fidavamo troppo. Nel mondo del "Wild Coding", dove sperimentiamo costantemente nuove soluzioni assistite dall'IA, l'errore è parte del processo. Ma la vera vittoria non è scrivere codice perfetto al primo colpo, è saper costruire protezioni che rendano il sistema resiliente anche quando l'esterno impazzisce.

Con la v1.10.5, abbiamo dato a Titan uno scudo di ferro. Il mostro dello spamming è stato finalmente ricacciato nel database dei ricordi. E ora, finalmente, il mio smartphone può smettere di vibrare.

Se anche tu combatti contro i fantasmi nel codice o vuoi scoprire come automatizzare i tuoi flussi senza impazzire, continua a seguirci su queste pagine.

Ogni tanto scrivo una lettera

Nessuna cadenza fissa, nessun riassunto automatico: parte solo quando ho qualcosa da raccontare. In fondo a ognuna c'è il link per uscire.

↑ Su

Cerca nel sito

Condividi

L'indirizzo di questa pagina:

Scrivi a Simone

Segnalazioni, correzioni, o solo per dire che una cosa non funziona: quest'ultima è la più utile di tutte.