← BlogProgrammazione messaggi Telegram28 settembre 2026 · Telegram Team tecnico

Come inviare messaggi Telegram programmati con un bot?

Guida pratica per inviare messaggi Telegram programmati con un bot: crea il bot, usa API, script Python e soluzioni di automazione. Scopri metodi e limitazioni.

come programmare messaggi Telegram con bot, tutorial bot Telegram invio programmato, configurare bot per messaggi automatici Telegram, errori programmazione messaggi Telegram bot, migliori pratiche per programmare messaggi Telegram, telegram bot programmazione messaggi automatici, inviare messaggi programmati Telegram con bot, utilizzare bot Telegram per scheduling messaggi, programmazione messaggi Telegram senza server, guida passo passo bot Telegram programmazione

Inviare messaggi Telegram programmati con un bot: guida completa

La possibilità di inviare messaggi Telegram programmati con un bot è una delle funzionalità più richieste da chi gestisce canali, gruppi o comunicazioni automatizzate. Che tu voglia inviare un promemoria quotidiano, un report settimanale o un aggiornamento periodico ai tuoi iscritti, un bot opportunamente configurato può eseguire l'invio in modo autonomo, senza intervento manuale. In questa guida esploreremo i metodi più diffusi e affidabili per schedulare messaggi tramite l'API di Telegram, partendo dalla creazione del bot fino al deploy di uno script di automazione.

Analizzeremo sia soluzioni fai-da-te con Python e librerie come python-telegram-bot, sia approcci serverless e servizi di terze parti. Per ogni metodo verranno evidenziati vantaggi, limiti e casi d'uso ideali, in modo che tu possa scegliere la strada più adatta alle tue competenze e alle risorse a disposizione. Ogni passaggio sarà accompagnato da esempi concreti e note su potenziali problemi.

Inviare messaggi Telegram programmati con un bot: guida completa
Inviare messaggi Telegram programmati con un bot: guida completa

Prerequisiti: creare un bot e ottenere il token

Prima di programmare qualsiasi invio, devi disporre di un bot Telegram funzionante. Per crearne uno, apri Telegram (su qualsiasi piattaforma, mobile o desktop) e cerca l'account ufficiale @BotFather. Avvia una chat con lui e usa il comando /newbot. Segui le istruzioni per scegliere un nome e un username (che deve terminare con bot). Al termine riceverai un token di accesso: una stringa del tipo 1234567890:ABCdefGHIjklmNOPqrstUVwxyz. Conservalo in un luogo sicuro; è la chiave per controllare il tuo bot tramite API.

Una volta ottenuto il token, puoi testare l'invio di un messaggio immediato usando una semplice chiamata HTTP. Su un terminale con curl, esegui:

curl -X POST https://api.telegram.org/bot<IL_TUO_TOKEN>/sendMessage -d chat_id=<ID_DESTINATARIO> -d text="Ciao mondo!"

Il parametro chat_id può essere l'ID di un utente (se il bot è stato avviato dall'utente), di un gruppo o di un canale in cui il bot è amministratore. Per ottenere rapidamente il tuo chat_id personale, usa il bot @userinfobot o invia un messaggio al tuo bot e poi chiama getUpdates sull'API.

Scelta del metodo di programmazione

La schedulazione di messaggi può essere implementata in diversi modi, a seconda delle tue esigenze tecniche e operative. Di seguito elenchiamo gli approcci più comuni, con i relativi pro e contro.

1. Script locale con cron (Linux/macOS) o Task Scheduler (Windows)

Questo metodo è il più semplice per chi ha un computer sempre acceso (un VPS, un Raspberry Pi o il proprio PC). Scrivi uno script in Python o Node.js che si connette all'API di Telegram e invia il messaggio, poi configura un job cron per eseguirlo agli orari desiderati. La libreria schedule di Python può anche gestire la pianificazione internamente, ma l'affidabilità del sistema operativo per i timer è maggiore. Esempio con cron:

# esegue lo script ogni giorno alle 9:00
0 9 * * * /usr/bin/python3 /home/mio_bot/invia_messaggio.py

Vantaggi: controllo completo, nessun costo aggiuntivo (se hai già un server), nessuna dipendenza da terze parti. Svantaggi: richiede un server sempre acceso e manutenzione dello script; non scalabile se hai molti bot.

2. Funzioni serverless (AWS Lambda, Google Cloud Functions, Cloudflare Workers)

Le piattaforme serverless permettono di eseguire codice in risposta a eventi temporizzati senza gestire server. Puoi creare una funzione che, quando attivata da un trigger (es. Cloud Scheduler su GCP, EventBridge su AWS), invia il messaggio Telegram via API. Questo approccio è ideale per attività sporadiche (pochi invii al giorno) e ha un costo spesso irrisorio. Esempio con Cloud Functions + Cloud Scheduler su Google Cloud:

// funzione Node.js che invia il messaggio
const axios = require('axios');
exports.sendTelegram = (req, res) => {
  axios.post(`https://api.telegram.org/bot${process.env.TOKEN}/sendMessage`, {
    chat_id: process.env.CHAT_ID,
    text: 'Buongiorno!'
  });
  res.status(200).send('OK');
};
// Poi imposti un cron job: ogni giorno alle 9:00

Vantaggi: manutenzione minima, alta affidabilità (piattaforma gestisce i fallimenti), paghi solo per l'esecuzione. Svantaggi: cold start può introdurre ritardi di qualche secondo (trascurabile per messaggi non critici); limiti di timeout (di solito 9 minuti su Lambda, ma per un singolo invio bastano pochi secondi).

3. Bot Telegram con funzionalità di pianificazione integrata (es. @SchedulerBot)

Esistono bot di terze parti già pronti per la schedulazione, come @SchedulerBot. Ti permettono di impostare messaggi ricorrenti senza scrivere codice. Basta inviare al bot comandi come /schedule e specificare ora e testo. Tuttavia, questi bot non sono ufficiali e potrebbero avere limiti di frequenza o problemi di privacy (i tuoi dati passano per i loro server). Usali solo per scopi non critici e leggine sempre la privacy policy.

Vantaggi: nessuna configurazione tecnica, immediato. Svantaggi: dipendenza da terzi, impossibilità di personalizzare molto, rischi per la sicurezza se invii dati sensibili.

Implementazione passo-passo: script Python con python-telegram-bot e schedule

Per chi preferisce una soluzione fai-da-te, Python offre il pacchetto python-telegram-bot che semplifica l'uso dell'API. Combineremo con la libreria schedule per la pianificazione. Il risultato sarà un unico script che rimane in esecuzione e invia messaggi agli orari stabiliti.

Per prima cosa, installa le dipendenze (usa l'ultima versione disponibile al momento della scrittura):

pip install python-telegram-bot schedule

Creiamo un file bot_scheduler.py. Il bot deve essere in grado di ricevere comandi (opzionale) e di eseguire un loop di pianificazione. Ecco un esempio base:

import telegram
import schedule
import time

TOKEN = 'IL_TUO_TOKEN'
CHAT_ID = 'ID_DESTINATARIO'

def invia_messaggio(testo='Messaggio programmato!'):
    bot = telegram.Bot(token=TOKEN)
    bot.send_message(chat_id=CHAT_ID, text=testo)
    print('Messaggio inviato con successo.')

# Pianifica: ogni giorno alle 9:00 e alle 18:00
schedule.every().day.at('09:00').do(invia_messaggio, testo='Buongiorno!')
schedule.every().day.at('18:00').do(invia_messaggio, testo='Buonasera!')

# Loop principale
while True:
    schedule.run_pending()
    time.sleep(60)  # controlla ogni minuto per non consumare CPU

Lo script rimane in esecuzione finché non lo interrompi. Puoi eseguirlo in background su un server usando nohup o impostarlo come servizio systemd per avviarlo automaticamente. Nota: il bot usa schedule che si basa sull'orario di sistema; assicurati che il server abbia il fuso orario corretto. Puoi anche gestire messaggi su più chat definendo un elenco di ID o passando il parametro dinamicamente.

Implementazione passo-passo: script Python con python-telegram-bot e schedule
Implementazione passo-passo: script Python con python-telegram-bot e schedule

Aggiungere comandi per controllo manuale

Per rendere il bot interattivo, puoi integrare python-telegram-bot con un Updater per gestire comandi come /start o /orario. Tuttavia, se il tuo unico scopo è la schedulazione, la versione leggera sopra basta. In caso volessi anche rispondere a comandi, ecco un'estensione:

from telegram.ext import Updater, CommandHandler

def start(update, context):
    update.message.reply_text('Bot avviato. Usa /invia per invio immediato.')

def invia_immediato(update, context):
    context.bot.send_message(chat_id=update.effective_chat.id, text='Messaggio manuale inviato!')

updater = Updater(token=TOKEN, use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler('start', start))
dp.add_handler(CommandHandler('invia', invia_immediato))

# Avvia il poller per ricevere comandi e contemporaneamente il loop di schedule
updater.start_polling()
while True:
    schedule.run_pending()
    time.sleep(60)

In questo modo il bot è sia programmabile che reattivo.

Deploy e manutenzione

Per mettere in produzione uno script Python schedulato, hai diverse opzioni:

  • VPS Linux: esegui lo script con nohup python3 bot_scheduler.py & o meglio crea un servizio systemd per riavvio automatico. Aggiungi un cron per riavviare lo script in caso di crash.
  • Docker: containerizza l'app e usa un orchestratore come Kubernetes (overkill per un singolo bot, ma fattibile).
  • Piattaforme PaaS: Heroku (non più gratuito?), Railway, o PythonAnywhere. Queste offrono hosting con esecuzione continua ma potrebbero interrompere lo script ogni 24 ore; valuta la presenza di keep-alive.

In ogni caso, monitora il bot: usa log (print su file) e un meccanismo di notifica se il bot smette di funzionare. Puoi anche configurare un secondo bot (o lo stesso) per inviare un messaggio di heartbeat periodico per verificare che tutto sia attivo.

Limitazioni e considerazioni

Prima di affidarti completamente a un bot schedulato, tieni a mente alcune limitazioni dell'ecosistema Telegram:

1. Avvio del bot da parte dell'utente. Un bot può inviare messaggi solo a un utente se quest'ultimo ha avviato il bot (comando /start). Per i canali, il bot deve essere amministratore e avere i permessi di invio messaggi. Per i gruppi, il bot deve essere membro e, se il gruppo è privato, deve essere aggiunto da un amministratore.

2. Rate limiting. L'API di Telegram impone limiti di frequenza: non più di 30 messaggi al secondo per bot (soglia generale) e limiti specifici per chat. Superarli provoca errori 429 Too Many Requests. Per invii massivi, distribuisci i messaggi su più secondi o usa sleep.

3. Affidabilità del server. Se esegui lo script su un computer domestico, la connessione o l'alimentazione potrebbero interrompersi. Un VPS è più affidabile.

4. Fuso orario. Se il tuo server è in UTC, imposta la pianificazione di conseguenza. Puoi anche installare il pacchetto pytz per gestire fusi orari.

Attenzione: Non utilizzare bot schedulati per inviare spam o messaggi non richiesti. Telegram può disabilitare il bot se riceve segnalazioni. Usa il bot solo per comunicazioni con utenti che hanno acconsentito.

Risoluzione problemi comuni

Tip: Per debug, usa il metodo getUpdates per vedere cosa riceve il bot. Inoltre, controlla i log del tuo script per identificare errori di connessione o API.

Sintomo: Il bot non invia messaggi programmati. Possibili cause: token errato, chat_id sbagliato, bot non avviato dall'utente, blocco firewall, ora di sistema non corretta. Verifica ogni punto uno per uno.

Sintomo: Il bot invia messaggi doppi o salta alcuni orari. Possibile causa: conflitto tra più istanze dello script. Assicurati che solo un processo sia in esecuzione. Se usi cron e anche il loop schedule, potresti avere duplicati.

Sintomo: Errore 409 Conflict. Causa: è stato avviato un secondo poller per lo stesso bot (tipico se esegui più istanze con python-telegram-bot). Ferma tutte le istanze e riavvia. Usa un solo poller.

Domande frequenti (FAQ)

Il bot può inviare messaggi a un canale senza essere amministratore?

No. Per inviare messaggi in un canale, il bot deve essere aggiunto come amministratore con il permesso di inviare messaggi.