Come creare un bot Telegram per notifiche automatiche?

Cos'è un bot Telegram per notifiche automatiche e perché usarlo
Un bot Telegram per notifiche automatiche è un piccolo programma che interagisce con l'API di Telegram per inviare messaggi in modo programmatico. Che tu voglia ricevere avvisi dal tuo server, notifiche di nuovi articoli da un blog o aggiornamenti da un'applicazione, un bot ben configurato può portare le informazioni direttamente nella tua chat. Questo articolo ti guida passo dopo passo nella creazione di un bot Telegram per notifiche automatiche, partendo dai prerequisiti fino alla messa in produzione.
I bot Telegram sono privi di numeri di telefono, non richiedono account aggiuntivi e possono gestire migliaia di iscritti. Grazie alle API recenti (al momento della scrittura, la documentazione ufficiale è costantemente aggiornata), puoi inviare non solo testo ma anche foto, documenti e pulsanti interattivi. Questa flessibilità li rende ideali per automazioni sia personali che professionali.
Prerequisiti: cosa ti serve prima di iniziare
Per seguire questa guida avrai bisogno di:
- Un account Telegram attivo (obbligatorio).
- Accesso a BotFather: il bot ufficiale di Telegram per creare e gestire altri bot.
- Un ambiente di sviluppo: qui useremo Python 3.9+ come esempio, ma puoi usare Node.js, Go o qualsiasi linguaggio con librerie HTTP.
- Conoscenze base di programmazione: saper leggere codice Python e comprendere richieste HTTP.
- Un server o un servizio di hosting (opzionale ma consigliato per esecuzione 24/7).
Nota importante: non è necessario un numero di telefono separato; i bot hanno un token univoco generato da BotFather. Conservalo come una password: chiunque lo possiede può controllare il tuo bot.
1. Creare il bot con BotFather
Apri Telegram e cerca BotFather. Avvia una chat e invia il comando /newbot. BotFather ti chiederà un nome (visibile agli utenti) e un username (deve terminare con bot, ad esempio NomeNotifiche_bot). Dopo la conferma, riceverai un token API, simile a:
Questo token è l’unica chiave per autenticare il tuo bot. Non condividerlo pubblicamente. Se lo esponi accidentalmente, usa /revoke su BotFather per rigenerarlo.
A questo punto hai un bot operativo, ma senza codice non fa nulla. Il prossimo passo è scrivere un programma che utilizzi il token per inviare messaggi.
2. Scrivere il codice base in Python
Useremo la libreria python-telegram-bot (versione 20.x al momento della scrittura) perché semplifica le interazioni con l’API. Installala con pip install python-telegram-bot. Ecco un esempio minimo per inviare una notifica:
Per ottenere il chat_id di un utente o gruppo, devi prima che qualcuno invii un messaggio al bot. Puoi utilizzare il metodo get_updates (o il comando /start gestito con un handler) per registrare l’ID. Nel prossimo paragrafo vedremo come strutturare un bot completo con polling.
Esecuzione continua: polling vs webhook
Per ricevere aggiornamenti (comandi, messaggi), hai due modalità tra cui scegliere:
- Polling: il bot interroga periodicamente il server di Telegram. Semplice da sviluppare, adatto a bot con basso volume o in ambiente di test. Consuma risorse costantemente.
- Webhook: Telegram invia una richiesta HTTPS a un tuo endpoint pubblico quando si verifica un evento. Più efficiente, richiede un server con IP pubblico e certificato SSL (anche self-signed).
Per un tutorial iniziale useremo il polling. La libreria python-telegram-bot fornisce la classe Application che gestisce il polling automaticamente. Ecco un esempio concreto:
Una volta avviato, il bot risponderà al comando /start. Ora devi integrare la logica di notifica automatica.
3. Implementare le notifiche automatiche: scenario pratico
Immagina di voler ricevere una notifica ogni volta che un server web torna online dopo un down. Il tuo bot monitorerà l’endpoint HTTP e, in caso di cambiamento di stato, invierà un messaggio. Ecco un esempio concreto (senza inventare numeri precisi):
- Funzione di controllo: interroga una URL ogni 60 secondi usando
requests. - Logica di stato: confronta il risultato con l’ultimo stato salvato (in una variabile globale o database).
- Invio notifica: se lo stato cambia, richiama
send_messagecon un messaggio formattato.
Avvia questa coroutine insieme al bot. Il chat_id puoi ottenerlo dal comando /start e salvarlo in un file per le successive esecuzioni.
4. Miglioramenti: formattazione e sicurezza
Per rendere le notifiche più chiare, usa la modalità MarkdownV2 di Telegram. Abilitala passando parse_mode="MarkdownV2" a send_message. Attenzione: MarkdownV2 richiede di escapare i caratteri speciali (come _, *, [). Puoi usare la funzione helper telegram.helpers.escape_markdown.
Non includere mai il token nel codice direttamente. Usa variabili d’ambiente: os.environ.get("TELEGRAM_TOKEN"). Questo evita esposizioni accidentali nei repository pubblici.
Limitazioni e mitigazioni
- Telegram impone un rate limit: non più di ~30 messaggi al secondo per bot (osservazione empirica). Se devi inviare a molti utenti, distribuisci le richieste nel tempo.
- I messaggi possono contenere al massimo 4096 caratteri. Per testi più lunghi spezzali in più messaggi o usa file di testo.
- Se il bot invia notifiche a gruppi, assicurati che abbia i permessi necessari (admin o almeno membro con permesso di inviare messaggi).
5. Deploy: portare il bot online 24/7
Un bot locale si ferma quando il computer si spegne. Per renderlo sempre attivo, hai opzioni gratuite o a pagamento:
| Piattaforma | Vantaggi | Svantaggi |
|---|---|---|
| PythonAnywhere (free tier) | Semplice, supporta cron job | Connessione HTTP limitata, nessun webhook |
| Heroku (free tier terminato nel 2022, ma alternative come Railway, Fly.io) | Facile integrazione git, supporto webhook | Addormentamento dopo inattività |
| VPS (es. DigitalOcean, Linode) | Controllo completo, webhook nativo | Costo, gestione del server |
Se scegli il webhook, devi impostare un endpoint HTTPS pubblico. Con python-telegram-bot puoi avviare un server web integrato (basato su aiohttp) con app.run_webhook(). Non dimenticare di configurare un certificato SSL (Let’s Encrypt è gratuito).
6. Troubleshooting: problemi comuni e soluzioni
| Sintomo | Possibile causa | Verifica e correzione |
|---|---|---|
| Il bot non risponde ai comandi | Token errato o non valido | Controlla il token con BotFather. Usa /token per riottenere. |
| Errore 404 in polling | Bot disabilitato o server offline | Verifica che il bot sia attivo (invia /start manualmente). Riavvia lo script. |
| Webhook non funziona | Certificato SSL non valido o porta bloccata | Usa curl https://api.telegram.org/botTOKEN/setWebhook?url=https://tuo.dominio/bot e verifica con getWebhookInfo. |
7. Best practice per un bot robusto
- Non esporre mai il token: usa variabili d’ambiente o file esterni esclusi dal controllo versione.
- Gestisci le eccezioni: avvolgi le chiamate API in try/except per evitare crash.
- Logging: scrivi log delle attività (invio riuscito, errori di connessione) per debugging.
- Rispetta i rate limit: se devi inviare molte notifiche, usa coda e backoff.
- Usa ID chat persistenti: salva il chat_id in un database (SQLite, file JSON) per non perderlo al riavvio.
- Proteggi il comando /start: limita l’accesso a una lista di utenti autorizzati se il bot è per uso personale.
8. Quando non usare un bot Telegram per notifiche
Nonostante la versatilità, ci sono situazioni in cui un bot non è la scelta migliore:
- Notifiche ad alto volume: se hai bisogno di inviare più di 30 messaggi al secondo, Telegram potrebbe diventare un collo di bottiglia. Meglio usare sistemi di notifica dedicati (email, push via FCM).
- Messaggi urgenti e critici: Telegram non garantisce consegna immediata (ritardo di qualche secondo è possibile). Per allarmi real-time, considera altri canali.
- Chat di grandi dimensioni: se devi notificare a decine di migliaia di utenti, il bot potrebbe incorrere in limitazioni di broadcast. Esistono canali, ma i bot non possono scrivere in canali senza permessi adeguati (devono essere admin).
Domande frequenti
Posso creare un bot Telegram senza saper programmare?
Esistono servizi online che permettono di creare bot tramite interfaccia grafica (es. ManyBot, Chatfuel), ma per notifiche automatiche personalizzate è necessaria almeno una minima competenza di programmazione o l’uso di servizi IFTTT/Zapier con integrazione Telegram. Questa guida presuppone una conoscenza base di Python.
Il mio bot può inviare messaggi a qualsiasi utente senza che questi lo avvii prima?
No. Un bot non può avviare una conversazione con un utente finché l’utente non ha inviato il comando /start (a meno che l’utente non abbia disabilitato la privacy). Per inviare notifiche a un utente specifico, devi ottenere il suo chat_id dopo il primo contatto.
Come faccio a rendere il bot sempre attivo?
Devi eseguire lo script su un server 24/7. Puoi usare servizi cloud gratuiti (con limiti) o un VPS a pagamento. Il webhook è più efficiente del polling per bot con traffico medio-alto.
Posso inviare notifiche a un gruppo Telegram senza che il bot sia admin?
Sì, purché il bot sia membro del gruppo e i membri del gruppo non abbiano limitato i messaggi da bot. Tuttavia, per evitare spam, molti gruppi richiedono che il bot sia amministratore per inviare messaggi. La soluzione è aggiungerlo come admin (con permessi minimi).
Conclusione
Hai visto come creare un bot Telegram per notifiche automatiche partendo da zero: dalla registrazione con BotFather, alla scrittura del codice in Python, fino al deploy e alla risoluzione dei problemi. Ricorda che la semplicità del polling è adatta per test e bassi volumi, mentre il webhook offre prestazioni migliori per bot in produzione. La sicurezza del token è prioritaria: usa sempre variabili d’ambiente e non committarlo mai.
Per approfondire, esplora la documentazione ufficiale dell’API Telegram (https://core.telegram.org/bots/api) e la guida di python-telegram-bot (https://python-telegram-bot.org/). Potresti estendere il bot con comandi personalizzati, tastiere inline o integrazione con altri servizi (API di terze parti, webhook da GitHub, ecc.). Buon coding!