Logo TelegramTelegram
Bot Telegram

Come creare un bot Telegram per notifiche automatiche?

Telegram Team ufficiale
Come creare bot Telegram per notifiche, Come configurare bot Telegram, Bot Telegram non invia notifiche, Migliori pratiche bot Telegram notifiche, Differenza tra Webhook e Long Polling Telegram, Come testare bot Telegram notifiche, Errore bot Telegram token, Gestione errori bot Telegram

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:

1234567890:ABCdefGHIjklMNOpqrsTUVwxyz

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:

import telegram async def send_notification(chat_id, message): bot = telegram.Bot(token="IL_TUO_TOKEN") await bot.send_message(chat_id=chat_id, text=message)

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:

from telegram.ext import Application, CommandHandler async def start(update, context): await update.message.reply_text("Bot attivo! Riceverai notifiche.") def main(): app = Application.builder().token("IL_TUO_TOKEN").build() app.add_handler(CommandHandler("start", start)) app.run_polling() if __name__ == "__main__": main()

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_message con un messaggio formattato.
import asyncio import requests ultimo_stato = None async def controlla_server(bot, chat_id): global ultimo_stato while True: try: r = requests.get("https://tuo-dominio.com/health", timeout=5) nuovo_stato = r.status_code == 200 except: nuovo_stato = False if ultimo_stato is not None and nuovo_stato != ultimo_stato: stato_testo = "online" if nuovo_stato else "offline" await bot.send_message(chat_id=chat_id, text=f"Server {stato_testo}") ultimo_stato = nuovo_stato await asyncio.sleep(60)

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!