Logo Telegrema WivoTelegrema WivoPortale Telegram
Automazione bot Telegram

Come si imposta un bot Telegram per rispondere automaticamente ai messaggi?

Pubblicato il 23 agosto 2026Autore: Telegram Team ufficiale#Bot Telegram#Automazione#Risposte automatiche#Configurazione
Come configurare bot Telegram risposte automatiche, Bot Telegram risposte automatiche tutorial, Impostare risposte automatiche Telegram, Bot Telegram non risponde problema, Migliori pratiche bot Telegram, BotFather risposte automatiche, Telegram bot API configurazione, Risposte automatiche personalizzate Telegram

Introduzione: perché automatizzare le risposte su Telegram?

Un bot Telegram che risponde automaticamente ai messaggi può trasformare un canale o un gruppo in uno strumento di supporto efficiente, senza richiedere la presenza umana 24/7. Che si tratti di un FAQ automatico, di un assistente per prenotazioni o di un semplice gateway per informazioni, l'automazione riduce i tempi di attesa e libera risorse. In questa guida esploreremo come si imposta un bot Telegram per rispondere automaticamente, partendo dalla creazione del bot con BotFather fino al deployment su un server, analizzando i compromessi tra soluzioni self‑hosted e servizi di terze parti.

Introduzione: perché automatizzare le risposte su Telegram?
Introduzione: perché automatizzare le risposte su Telegram?

Prerequisiti: ottenere un token da BotFather

Il primo passo è creare un nuovo bot su Telegram. Apri la chat con @BotFather, il bot ufficiale di Telegram per la gestione dei bot. Usa il comando /newbot e segui le istruzioni: scegli un nome (visibile agli utenti) e uno username (unico, deve terminare con bot). Al termine, BotFather ti fornirà un token HTTP API, una stringa alfanumerica che identifica il tuo bot e che utilizzerai per tutte le chiamate API. Conservalo in un luogo sicuro: chiunque possieda il token può controllare il bot.

Self‑hosted vs servizi di terze parti

Prima di scrivere una riga di codice, vale la pena valutare l'approccio. Le soluzioni self‑hosted (come uno script Python su un VPS) offrono controllo totale, nessun limite imposto da terze parti e la possibilità di personalizzare ogni aspetto. I servizi di terze parti (ad esempio Manybot, Chatfuel o bot builder visuali) permettono di configurare risposte automatiche senza scrivere codice, ma spesso impongono limiti di messaggi, funzionalità a pagamento e minore flessibilità. Per questa guida ci concentreremo sull'approccio self‑hosted con Python, perché è il più trasparente e adattabile.

Configurazione con Python e python‑telegram‑bot

Installazione della libreria

La libreria più diffusa per interagire con l'API Telegram in Python è python-telegram-bot. Al momento della scrittura, l'ultima versione stabile è la 20.x, ma consigliamo di installare sempre l'ultima disponibile: pip install python-telegram-bot. Assicurati di usare un ambiente virtuale per evitare conflitti di dipendenze.

Codice minimo per rispondere a /start

Ecco un esempio funzionante che risponde al comando /start con un messaggio di benvenuto e a qualsiasi altro messaggio con un testo predefinito:

from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters

TOKEN = "IL_TUO_TOKEN"

async def start(update: Update, context):
    await update.message.reply_text("Ciao! Sono un bot automatico. Scrivimi qualcosa e ti risponderò.")

async def echo(update: Update, context):
    await update.message.reply_text(f"Hai scritto: {update.message.text}")

def main():
    app = Application.builder().token(TOKEN).build()
    app.add_handler(CommandHandler("start", start))
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
    app.run_polling()

if __name__ == "__main__":
    main()

Questo script avvia un polling continuo verso i server Telegram. Quando il bot riceve un messaggio di testo che non è un comando, invia indietro lo stesso testo. Per filtrare solo messaggi che contengono determinate parole chiave, puoi usare filters.Text con pattern specifici.

Aggiungere risposte condizionali

Un bot realmente utile risponde in modo diverso a seconda del contenuto. Ad esempio, se un utente scrive “prezzi”, il bot può rispondere con una lista di tariffe. Ecco come:

from telegram.ext import MessageHandler, filters

async def handle_message(update: Update, context):
    text = update.message.text.lower()
    if "prezzi" in text:
        await update.message.reply_text("I nostri prezzi partono da 10€ al mese.")
    elif "contatti" in text:
        await update.message.reply_text("Scrivici a [email protected]")
    else:
        await update.message.reply_text("Non ho capito la tua richiesta. Prova con 'prezzi' o 'contatti'.")

Puoi concatenare quanti if desideri, ma per mantenere il codice ordinato, considera l'uso di un dizionario o di un sistema di intents.

Webhook vs Polling

L'esempio sopra usa il polling, ovvero il bot richiede periodicamente a Telegram se ci sono nuovi messaggi. È semplice da configurare, ma consuma risorse (richieste HTTP costanti) e non è adatto a bot con molti utenti. L'alternativa è il webhook: Telegram invia direttamente una richiesta HTTP a un endpoint pubblico del tuo server quando arriva un messaggio. Per attivarlo, devi impostare un URL HTTPS (obbligatorio) e un certificato SSL valido. La maggior parte dei provider di hosting (VPS, Heroku, AWS) lo supporta. Il vantaggio è una latenza minore e un carico ridotto. Scegli webhook se prevedi un volume di messaggi elevato; per test o bot a basso traffico, il polling è sufficiente.

Gestione degli errori e logging

Un bot che non gestisce le eccezioni può smettere di funzionare senza preavviso. Aggiungi un handler globale per errori e utilizza il modulo logging di Python per tracciare eventi. Ecco un esempio:

import logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)

async def error_handler(update: Update, context):
    logging.error(f"Errore durante la gestione di {update}: {context.error}")
    # Opzionale: notifica l'amministratore
    await context.bot.send_message(chat_id=ADMIN_CHAT_ID, text=f"Errore: {context.error}")

Registra l'error handler nell'application: app.add_error_handler(error_handler).

Hosting e deployment

VPS o server dedicato

La soluzione più flessibile: un VPS con Linux (es. Ubuntu) su cui eseguire lo script Python in background con systemd o screen. Assicurati di installare Python e le dipendenze, e di mantenere lo script in esecuzione anche dopo il logout. Un esempio di unità systemd può essere creato, ma non entreremo nei dettagli per non allungare la guida.

VPS o server dedicato
VPS o server dedicato

Piattaforme serverless

Servizi come AWS Lambda, Google Cloud Functions o Cloudflare Workers permettono di eseguire codice senza gestire un server. Tuttavia, richiedono di configurare un webhook e di gestire i limiti di timeout e memoria. Per bot semplici, possono essere economici, ma non sono consigliati per bot che richiedono connessioni persistenti (es. polling).

Esempio completo: bot FAQ automatico

Mettiamo insieme i concetti in un bot che risponde a domande frequenti su un ipotetico servizio di consegna. Il bot riconosce parole chiave e fornisce risposte predefinite, con un fallback generico.

from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes

TOKEN = "IL_TUO_TOKEN"
ADMIN_ID = 123456789  # ID Telegram dell'amministratore

RISPOSTE = {
    "orari": "Lavoriamo dal lunedì al venerdì, 9:00-18:00.",
    "costi": "La spedizione standard costa 5€, quella express 12€.",
    "tracciamento": "Puoi tracciare il pacco dal nostro sito: https://esempio.com/track"
}

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Benvenuto! Chiedimi informazioni su orari, costi o tracciamento.")

async def faq(update: Update, context: ContextTypes.DEFAULT_TYPE):
    testo = update.message.text.lower()
    for parola, risposta in RISPOSTE.items():
        if parola in testo:
            await update.message.reply_text(risposta)
            return
    await update.message.reply_text("Non ho trovato una risposta. Contatta l'assistenza: [email protected]")
    # Notifica admin
    await context.bot.send_message(chat_id=ADMIN_ID, text=f"Domanda senza risposta: {testo}")

def main():
    app = Application.builder().token(TOKEN).build()
    app.add_handler(CommandHandler("start", start))
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, faq))
    app.run_polling()

if __name__ == "__main__":
    main()

Questo bot non solo risponde, ma segnala all'amministratore le domande non coperte, permettendo di migliorare gradualmente le risposte.

Best practice

  • Rispetta i limiti di rate limiting: Telegram permette circa 30 messaggi al secondo per bot. Se prevedi picchi, implementa una coda di messaggi.
  • Proteggi il token: Non includerlo nel codice sorgente pubblico. Usa variabili d'ambiente.
  • Mantieni il bot aggiornato: Controlla periodicamente la documentazione di python-telegram-bot e dell'API Telegram.
  • Logga tutto: Oltre agli errori, registra le richieste degli utenti per analisi future.
  • Gestisci la privacy: Non memorizzare dati sensibili se non necessario. Telegram non richiede il consenso esplicito, ma è buona norma informare gli utenti.

Seguire queste linee guida ti aiuterà a mantenere il bot stabile, sicuro e conforme alle aspettative degli utenti.

Quando non usare un bot automatico

Un bot non è adatto per conversazioni complesse che richiedono empatia o decisioni contestuali. Se il tuo servizio ha un alto tasso di escalation, meglio affidarsi a un operatore umano. Inoltre, bot mal configurati possono rispondere in modo errato o inviare spam involontario. Testa sempre il bot in un ambiente isolato prima di renderlo pubblico.

Domande frequenti

È necessario un server per eseguire un bot Telegram?

Sì, il bot deve essere eseguito su un server o un computer acceso 24/7. Puoi usare un VPS, un Raspberry Pi, o un servizio cloud. Per test temporanei, anche il tuo computer locale va bene, ma si spegne quando lo chiudi.

Posso usare un bot per rispondere in un gruppo?

Sì, ma il bot deve essere aggiunto come membro del gruppo e avere i permessi per leggere e scrivere messaggi. Inoltre, per rispondere a messaggi specifici, devi gestire l'ID del messaggio di reply.

Cosa succede se il bot si blocca?

I messaggi inviati durante il down non vengono persi: Telegram li conserva per un breve periodo (circa 24 ore) e il bot li riceverà appena riparte, se usa polling. Con webhook, i messaggi non consegnati vengono persi dopo alcuni tentativi.

Conclusione e prossimi passi

Abbiamo visto come si imposta un bot Telegram per rispondere automaticamente ai messaggi in modo pratico, dalla creazione del token all'implementazione di un bot FAQ con Python. La scelta tra polling e webhook, self‑hosted e servizi di terze parti dipende dalle tue esigenze di traffico e controllo. Ora puoi espandere le funzionalità: aggiungi pulsanti inline, integra un database per memorizzare le conversazioni, o connetti il bot a un sistema di ticketing. Ricorda di testare accuratamente e di rispettare le policy di Telegram. Buon sviluppo!