Introduzione: perché un bot per notifiche automatiche

Configurare un bot Telegram per l'invio automatico di notifiche è tra le richieste più frequenti per amministratori che gestiscono server, pipeline CI/CD o sistemi di monitoraggio. Invece di controllare manualmente dashboard o email, un bot può inviare messaggi istantanei su un canale o gruppo Telegram, garantendo visibilità in tempo reale. Questa guida ti accompagna passo dopo passo: dalla creazione del bot tramite BotFather fino al deployment del codice per l'invio programmatico, con attenzione a sicurezza, gestione degli errori e scelta tra webhook e polling.

L'intero processo si basa sulle API ufficiali di Telegram, accessibili a chiunque abbia un account. Non servono conoscenze avanzate di programmazione, ma è utile avere familiarità con un linguaggio di scripting (Python, Node.js, PHP) per scrivere il codice di invio. Tutte le tecnologie menzionate sono quelle disponibili con l'ultima versione stabile di Telegram al momento della scrittura.

Introduzione: perché un bot per notifiche automatiche
Introduzione: perché un bot per notifiche automatiche

Creazione del bot e ottenimento del token

Il punto di partenza: BotFather

Ogni bot Telegram nasce da BotFather, il bot ufficiale per creazione e gestione. Per avviare la procedura, cerca @BotFather nella barra di ricerca di Telegram (su mobile o desktop) e avvia una chat con lui. Digita il comando /newbot e segui le istruzioni: ti verrà chiesto un nome visualizzato (es. Notifiche Team) e un username univoco che deve terminare con 'bot' (es. notifiche_team_bot).

Prerequisiti per l'invio automatico

  • Chat privata con il bot: avvia una conversazione e premi /start.
  • Gruppo: aggiungi il bot con /start o tramite le impostazioni; assicurati che abbia i permessi per inviare messaggi.
  • Canale: aggiungi il bot come amministratore (impostazioni canale → Amministratori → aggiungi).
  • ID chat per l'invio programmatico. Puoi ottenerlo inviando un messaggio al bot e visitando https://api.telegram.org/bot<TOKEN>/getUpdates — cerca il campo chat.id. In alternativa, usa bot come @userinfobot per chat private.

    Scegliere tra webhook e polling

    polling (long polling) prevede che il client esegua richieste periodiche all'API per chiedere nuovi messaggi. È semplice e adatto a bot con basso traffico o sviluppo locale. Lo webhook, invece, fa sì che Telegram invii una richiesta HTTP a un tuo endpoint pubblico ogni volta che arriva un messaggio. È più efficiente per bot in produzione, ma richiede un server HTTPS accessibile pubblicamente (Telegram esige HTTPS con certificato valido).

    Quando usare il polling

    Quando usare il webhook

    https://tuodominio.it/webhook. Attenzione: l'URL deve usare HTTPS e porta 443. Telegram verifica il certificato. Dopo aver impostato il webhook, disabilita il polling per evitare conflitti.

    Attenzione: imposta il webhook con https://api.telegram.org/bot<TOKEN>/setWebhook?url=<URL_HTTPS>. Verifica lo stato con /getWebhookInfo.

    Quando usare il webhook
    Quando usare il webhook

    Configurazione pratica del bot

    Esempio con Python e polling

    Usiamo Python con python-telegram-bot (consulta la documentazione ufficiale per l'ultima versione). Installa con pip install python-telegram-bot. Crea bot.py con questo codice minimale per invio programmatico:

    import asyncio
    from telegram import Bot
    from telegram.constants import ParseMode
    
    TOKEN = "IL_TUO_TOKEN"
    CHAT_ID = "ID_CHAT"
    
    async def invia_notifica(messaggio):
        bot = Bot(token=TOKEN)
        await bot.send_message(chat_id=CHAT_ID, text=messaggio, parse_mode=ParseMode.HTML)
    
    # Esempio di utilizzo
    asyncio.run(invia_notifica("Notifica: Il server è stato riavviato."))

    Questo script invia un singolo messaggio formattato in HTML. Per usi ricorrenti, puoi inserire la funzione in un cron job o trigger da un'applicazione esterna.

    Configurazione del webhook su un server HTTPS

    from flask import Flask, request
    import asyncio
    from telegram import Bot
    
    app = Flask(__name__)
    TOKEN = "IL_TUO_TOKEN"
    CHAT_ID = "ID_CHAT"
    bot = Bot(token=TOKEN)
    
    @app.route('/webhook', methods=['POST'])
    def webhook():
        update = request.get_json()
        if 'message' in update:
            # Se il bot riceve un comando, lo ignori (per questo scenario)
            pass
        return 'OK'
    
    if __name__ == '__main__':
        app.run(ssl_context=('/etc/letsencrypt/live/tuodominio.it/fullchain.pem', '/etc/letsencrypt/live/tuodominio.it/privkey.pem'), port=443)

    sendMessage via HTTP.

    Invio automatico di notifiche senza interazione utente

    API diretta via HTTP

    https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=<MESSAGGIO>. Puoi anche inviare messaggi formattati con &parse_mode=HTML. Questo approccio è ideale per script shell, cron job o pipeline CI/CD.

    Esempio pratico

    import requests TOKEN = "IL_TUO_TOKEN" CHAT_ID = "ID_CHAT" url = f"https://api.telegram.org/bot{TOKEN}/sendMessage" payload = { "chat_id": CHAT_ID, "text": "Notifica: Il server è stato riavviato.", "parse_mode": "HTML" } requests.post(url, json=payload)

    Aspettative per versioni future e buone pratiche

    Integrare un bot Telegram per notifiche automatiche è un modo semplice ed efficace per migliorare la visibilità operativa. Con pochi passaggi puoi avere un sistema di alert funzionante, sia per progetti personali che per team aziendali.

    📺 Related Video Tutorial

    Guida Automazione Telegram + Make: Creare Bot per PMI e Professionisti