Crea il Tuo Primo Bot Telegram con Python: Una Guida Completa
Scopri come realizzare un potente bot Telegram usando Python, gratuitamente. Questa guida passo-passo copre tutto, dalla configurazione dell'API al deployment del tuo bot Telegram personalizzato.
Creare un bot Telegram personalizzato con Python offre una flessibilità e una potenza incredibili. Che tu voglia automatizzare attività, creare servizi interattivi o semplicemente sperimentare con la robusta API di Telegram, Python è una scelta eccellente per la sua semplicità e le sue vaste librerie. In questa guida completa, ti accompagneremo attraverso l’intero processo di creazione del tuo primo progetto di bot Telegram con Python, dalla configurazione dell’ambiente di sviluppo alla scrittura di codice funzionale e al deployment del tuo bot.
La leggibilità di Python e la vivace community che supporta la libreria python-telegram-bot lo rendono un punto di partenza fantastico sia per i principianti che per gli sviluppatori esperti. Alla fine di questo tutorial, avrai un bot Telegram completamente operativo e pronto a interagire con gli utenti.
Punti Chiave
- Imparerai a registrare il tuo bot con BotFather e a ottenere un token API.
- Vedremo come configurare il tuo ambiente di sviluppo Python e installare le librerie necessarie.
- Scriverai codice per gestire comandi e messaggi di base.
- Esploreremo come aggiungere funzionalità più sofisticate al tuo bot.
- Capirai le basi del deployment della tua applicazione bot Telegram con Python.
1. Configurazione del Tuo Bot Telegram e dell’Ambiente di Sviluppo
Prima di immergerci nel codice, devi configurare il tuo bot su Telegram e preparare il tuo ambiente Python.
1.1 Creare il Tuo Bot con BotFather
Il primo passo per qualsiasi bot Telegram è registrarlo con BotFather, il bot ufficiale di Telegram per la gestione di altri bot.
- Apri Telegram e Cerca @BotFather: Nella tua app Telegram, cerca “@BotFather” e avvia una chat. Assicurati che sia quello ufficiale con il badge blu di verifica.
- Avvia il Processo di Creazione del Bot: Digita
/newbote invia il messaggio. - Scegli un Nome: BotFather ti chiederà un nome per il tuo bot. Questo è il titolo leggibile che gli utenti vedranno (es. “Il Mio Bot Fantastico”).
- Scegli un Nome Utente: Successivamente, scegli un nome utente unico per il tuo bot. Questo deve terminare con “bot” (es.
il_mio_bot_fantastico). Se il nome utente è già preso, BotFather ti chiederà di provarne un altro. - Ricevi il Tuo Token API: Una volta completato con successo, BotFather ti fornirà un token API HTTP. Questo token è cruciale, poiché agisce come una password per il tuo bot. Conservalo in modo sicuro e non condividerlo mai pubblicamente. Sarà simile a
123456:ABC-DEF1234ghIkl-zyx57W23L1qR_456.
1.2 Installazione di Python e pip
Se non hai ancora Python installato, scarica l’ultima versione stabile dal sito ufficiale di Python (https://www.python.org/downloads/). Durante l’installazione, assicurati di selezionare la casella “Add Python to PATH” per un accesso più facile dalla riga di comando.
pip è il gestore di pacchetti di Python e di solito viene preinstallato con Python. Puoi verificare le tue installazioni di Python e pip aprendo il tuo terminale o prompt dei comandi e digitando:
python --version
pip --version
1.3 Installazione della Libreria python-telegram-bot
La libreria python-telegram-bot è un wrapper popolare e robusto per l’API di Telegram Bot. Semplifica le interazioni con l’API, rendendo molto più facile lo sviluppo del tuo bot.
Installala usando pip:
pip install python-telegram-bot
Hai ora configurato con successo il tuo bot e l’ambiente di sviluppo. Passiamo alla scrittura del codice!
2. Il Tuo Primo Codice Python per Bot Telegram: Il Bot Eco
Inizieremo con un classico: un bot eco. Questo bot ripeterà semplicemente qualsiasi messaggio che riceve. Questo semplice esempio ti insegna i concetti fondamentali della gestione dei messaggi.
2.1 Importazione dei Moduli Necessari
Crea un nuovo file Python (es. my_telegram_bot.py) e inizia importando i componenti richiesti dalla libreria telegram.
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters
import logging
import os
Update: Rappresenta un aggiornamento in arrivo da Telegram (es. un nuovo messaggio, un comando).Application: La classe principale che gestisce il ciclo di vita del tuo bot.CommandHandler: Usato per registrare gestori per comandi specifici (es./start,/help).MessageHandler: Usato per registrare gestori per vari tipi di messaggi (testo, foto, ecc.).filters: Fornisce filtri convenienti per specificare a quali messaggi unMessageHandlerdovrebbe rispondere.logging: Buona pratica per il debug e la comprensione del comportamento del tuo bot.os: Per caricare in modo sicuro il tuo token API dalle variabili d’ambiente.
2.2 Configurazione del Logging
Il logging è essenziale per la risoluzione dei problemi. Aggiungi le seguenti righe al tuo script:
# Abilita il logging
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO
)
logger = logging.getLogger(__name__)
2.3 Definizione dei Nostri Gestori (Handlers)
I gestori sono funzioni che elaborano gli aggiornamenti in arrivo.
Gestore del comando start:
Questa funzione verrà chiamata quando un utente invia il comando /start.
async def start(update: Update, context):
"""Invia un messaggio di benvenuto quando viene impartito il comando /start."""
user = update.effective_user
await update.message.reply_html(
f"Ciao {user.mention_html()}! Sono un bot eco. Inviami qualsiasi cosa!",
# reply_markup=ForceReply(selective=True), # Opzionale: forza la risposta a questo messaggio
)
Gestore del messaggio echo:
Questa funzione ripeterà qualsiasi messaggio di testo che riceve.
async def echo(update: Update, context):
"""Ripete il messaggio dell'utente."""
await update.message.reply_text(update.message.text)
Gestore del comando help_command:
Un semplice comando di aiuto.
async def help_command(update: Update, context):
"""Invia un messaggio di aiuto."""
await update.message.reply_text("Inviami qualsiasi messaggio, e io lo ripeterò!")
2.4 La Funzione main: Unire Tutto
La funzione main è dove inizializziamo il nostro bot, registriamo i gestori e iniziamo a interrogare per gli aggiornamenti.
def main() -> None:
"""Avvia il bot."""
# Ottieni il token API dalle variabili d'ambiente (BEST PRACTICE!)
# In alternativa, puoi codificarlo qui per test rapidi: TOKEN = "IL_TUO_TOKEN_TELEGRAM_BOT"
TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN")
if not TOKEN:
raise ValueError("La variabile d'ambiente TELEGRAM_BOT_TOKEN non è impostata.")
# Crea l'Applicazione e passale il token del tuo bot.
application = Application.builder().token(TOKEN).build()
# Registra i gestori
application.add_handler(CommandHandler("start", start))
application.add_handler(CommandHandler("help", help_command))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
# Esegui il bot finché l'utente non preme Ctrl-C
application.run_polling(allowed_updates=Update.ALL_TYPES)
if __name__ == "__main__":
main()
2.5 Esecuzione del Tuo Bot in Locale
-
Imposta il Tuo Token API come Variabile d’Ambiente:
- Linux/macOS:
export TELEGRAM_BOT_TOKEN="IL_TUO_TOKEN_API_QUI" - Windows (Prompt dei comandi):
set TELEGRAM_BOT_TOKEN="IL_TUO_TOKEN_API_QUI" - Windows (PowerShell):
$env:TELEGRAM_BOT_TOKEN="IL_TUO_TOKEN_API_QUI"In alternativa, per test rapidi in locale, puoi sostituireos.environ.get("TELEGRAM_BOT_TOKEN")con la tua stringa token effettiva direttamente nel codice (es.TOKEN = "123456:ABCDEF..."), ma non è raccomandato per la produzione.
- Linux/macOS:
-
Esegui il Tuo Script Python: Naviga nella directory dove hai salvato
my_telegram_bot.pynel tuo terminale ed esegui:python my_telegram_bot.py -
Interagisci con il Tuo Bot: Apri Telegram, cerca il nome utente del tuo bot (es.
@il_mio_bot_fantastico) e avvia una chat. Prova a inviare/start,/helpo qualsiasi messaggio di testo. Il tuo bot dovrebbe rispondere!
Congratulazioni! Hai appena creato ed eseguito la tua prima applicazione bot Telegram con Python.

3. Aggiungere Funzionalità Più Avanzate
Un bot eco è carino, ma rendiamolo più utile. Ecco alcune idee per espandere il tuo bot Telegram.
3.1 Gestire Diversi Tipi di Messaggio
Oltre al testo semplice, Telegram supporta foto, video, documenti e molto altro. Puoi usare i filters per gestire specificamente questi tipi.
Esempio: Rispondere alle foto
async def handle_photo(update: Update, context):
"""Risponde a una foto con un messaggio di conferma."""
# Puoi accedere ai dettagli della foto tramite update.message.photo
# La lista contiene diverse dimensioni della stessa foto; l'ultima è di solito la più grande.
photo_file_id = update.message.photo[-1].file_id
await update.message.reply_text("Bella foto! L'ho ricevuta.")
# Aggiungi questo gestore nella tua funzione main
# application.add_handler(MessageHandler(filters.PHOTO, handle_photo))
3.2 Utilizzare Tastiere Inline e Tastiere di Risposta
Le tastiere offrono opzioni di interazione strutturate per gli utenti.
- Tastiere di Risposta (Reply Keyboards): Appaiono sopra il campo di input del messaggio, sostituendo di fatto la tastiera standard. Ottime per scelte predefinite.
- Tastiere Inline (Inline Keyboards): Allegati direttamente a un messaggio, con pulsanti che possono attivare callback o aprire URL. Ideali per menu interattivi.
Esempio: Tastiera Inline
Modifichiamo il nostro comando /start per offrire dei pulsanti.
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Application, CommandHandler, MessageHandler, CallbackQueryHandler, filters
# ... (altre importazioni e logging) ...
async def start(update: Update, context):
"""Invia un messaggio di benvenuto con una tastiera inline."""
user = update.effective_user
keyboard = [
[InlineKeyboardButton("Visita TeleClaw", url="https://teleclaw.bot")],
[InlineKeyboardButton("Informazioni sul Bot", callback_data="about")],
]
reply_markup = InlineKeyboardMarkup(keyboard)
await update.message.reply_html(
f"Ciao {user.mention_html()}! Benvenuto nel mio bot. Cosa vorresti fare?",
reply_markup=reply_markup,
)
async def button_callback(update: Update, context):
"""Gestisce le query di callback dai pulsanti della tastiera inline."""
query = update.callback_query
await query.answer() # Rispondi sempre alle query di callback
if query.data == "about":
await query.edit_message_text(text="Questo è un semplice bot demo creato con Python e la libreria `python-telegram-bot`.")
# Aggiungi altre condizioni per altri valori di callback_data
Dovresti aggiornare la tua funzione main per includere il CallbackQueryHandler:
# ... all'interno di main() ...
application.add_handler(CommandHandler("start", start))
application.add_handler(CallbackQueryHandler(button_callback)) # Aggiungi questa riga
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
# ...
Questo dimostra come collegarsi a un sito esterno come TeleClaw ed eseguire un’azione all’interno del bot. Puoi esplorare di più sulle diverse opzioni di tastiera nella documentazione di python-telegram-bot (https://docs.python-telegram-bot.org/en/stable/telegram.keyboardbutton.html).
3.3 Integrazione con API Esterne
La vera potenza dello sviluppo di bot Telegram con Python deriva dalla sua capacità di integrarsi con servizi di terze parti. Puoi recuperare dati meteorologici, notizie attuali, tradurre testo o persino integrarti con modelli di intelligenza artificiale.
Esempio: Chiamata API Semplice (usando la libreria requests)
Prima, installa requests: pip install requests.
import requests
async def get_fact(update: Update, context):
"""Recupera un fatto casuale da un'API esterna."""
try:
response = requests.get("https://uselessfacts.jsph.pl/api/v2/facts/random")
response.raise_for_status() # Solleva un HTTPError per risposte errate (4xx o 5xx)
fact_data = response.json()
await update.message.reply_text(f"Lo sapevi? {fact_data['text']}")
except requests.exceptions.RequestException as e:
logger.error(f"Errore nel recupero del fatto: {e}")
await update.message.reply_text("Spiacente, non sono riuscito a recuperare un fatto in questo momento. Riprova più tardi.")
# Aggiungi questo gestore di comandi:
# application.add_handler(CommandHandler("fact", get_fact))
Questo dimostra come un bot potrebbe interagire con fonti di dati esterne, proprio come @claw si integra con vari servizi per fornire funzionalità sofisticate. Per interazioni AI più avanzate, considera l’utilizzo di piattaforme come TeleClaw, che astraggono le complessità dell’integrazione con modelli come GPT-4 o Gemini. Puoi leggere di più sull’integrazione di strumenti AI nel nostro articolo su come costruire un chatbot Telegram.

4. Dati Persistenti e Gestione dello Stato
Per bot più complessi, avrai bisogno di un modo per archiviare i dati tra le interazioni. Ad esempio, se il tuo bot deve ricordare le preferenze dell’utente o le conversazioni in corso.
4.1 Utilizzo di context.user_data e context.chat_data
La libreria python-telegram-bot fornisce i dizionari context.user_data e context.chat_data (disponibili nelle tue funzioni handler) che possono archiviare dati temporanei associati a un utente o a una chat. Questi dati persistono per tutta la durata dell’esecuzione del bot.
async def set_favorite_color(update: Update, context):
"""Permette agli utenti di impostare il loro colore preferito."""
if context.args:
color = " ".join(context.args).strip()
context.user_data["favorite_color"] = color
await update.message.reply_text(f"Ok, ho annotato il tuo colore preferito come {color}.")
else:
await update.message.reply_text("Per favore, dimmi il tuo colore preferito, es. /setcolor blu")
async def get_favorite_color(update: Update, context):
"""Dice all'utente il suo colore preferito."""
color = context.user_data.get("favorite_color")
if color:
await update.message.reply_text(f"Il tuo colore preferito è {color}.")
else:
await update.message.reply_text("Non conosco ancora il tuo colore preferito. Usa /setcolor.")
# Aggiungi questi gestori:
# application.add_handler(CommandHandler("setcolor", set_favorite_color))
# application.add_handler(CommandHandler("getcolor", get_favorite_color))
4.2 Persistenza dei Dati tra i Riavvi
Affinché i dati persistano anche quando il tuo script bot viene riavviato, hai bisogno di una soluzione più robusta, come:
- File (CSV, JSON): Semplice per piccole quantità di dati.
- Database (SQLite, PostgreSQL, MongoDB): Raccomandato per l’archiviazione di dati più grandi e complessi.
SQLiteè una buona scelta per lo sviluppo locale in quanto è basato su file e non richiede un server separato. - Soluzioni di archiviazione di terze parti: Database cloud come Firestore o DynamoDB.
La libreria python-telegram-bot offre anche classi BasePersistence che possono essere utilizzate con PicklePersistence o DictPersistence per salvare user_data, chat_data e bot_data in un file. Fai riferimento agli esempi ufficiali di python-telegram-bot per come utilizzare la persistenza (https://docs.python-telegram-bot.org/en/stable/telegram.ext.basepersistence.html).
5. Considerazioni sul Deployment
Eseguire il tuo bot sulla tua macchina locale va bene per lo sviluppo, ma per renderlo accessibile 24 ore su 24, 7 giorni su 7, devi distribuirlo su un server.
5.1 Polling vs. Webhooks
Ci sono due modi principali in cui un bot Telegram riceve gli aggiornamenti:
- Long Polling: Il tuo bot chiede ripetutamente ai server di Telegram nuovi aggiornamenti. Questo è ciò che abbiamo usato con
application.run_polling(). Semplice da configurare ma può essere dispendioso in termini di risorse per bot molto attivi. - Webhooks: Dici a Telegram l’URL del tuo server. Quando si verifica un aggiornamento, Telegram invia una richiesta HTTP POST a quell’URL. Più efficiente per la produzione, ma richiede un server accessibile pubblicamente e la gestione di HTTPS.
Per bot semplici e sviluppo iniziale, il long polling è sufficiente. Per la produzione, i webhooks sono generalmente preferiti. La libreria python-telegram-bot supporta entrambi.
5.2 Piattaforme di Deployment
Diverse piattaforme sono adatte per il deployment di bot Python:
- Heroku: Ottimo per progetti di piccole e medie dimensioni, con un piano gratuito. Facile da distribuire con
git. - Render: Simile a Heroku ma spesso con piani gratuiti più generosi e funzionalità moderne.
- AWS (EC2, Lambda), Google Cloud (Compute Engine, Cloud Functions), Azure (App Service, Functions): Offrono soluzioni potenti e scalabili ma hanno una curva di apprendimento più ripida.
- Virtual Private Servers (VPS): Servizi come DigitalOcean, Linode, Vultr ti danno più controllo, ma sei responsabile della gestione del server.
Quando effettui il deployment, ricorda di:
- Mantenere sicuro il tuo token API: Usa variabili d’ambiente.
- Installare le dipendenze: Crea un file
requirements.txt(pip freeze > requirements.txt) e assicurati che il tuo host le installi. - Configurare i gestori di processi: Strumenti come
systemdopm2possono mantenere il tuo bot in esecuzione anche se si blocca.
Per applicazioni commerciali o bot basati su AI altamente scalabili, piattaforme come TeleClaw offrono un ambiente robusto e gestito. Gestiscono l’infrastruttura, la sicurezza e la scalabilità, permettendoti di concentrarti sulla logica del tuo bot e sull’esperienza utente. Dai un’occhiata alla nostra guida dettagliata su bot Telegram per il business per vedere cosa offre TeleClaw.
Conclusione
Hai ora appreso i principi fondamentali della costruzione di un’applicazione bot Telegram con Python. Dalla configurazione iniziale con BotFather e l’ambiente, alla scrittura di gestori per comandi e messaggi, alla gestione di diversi tipi di dati e alla considerazione delle strategie di deployment, hai una solida base. La libreria python-telegram-bot rende l’interazione con l’API di Telegram sorprendentemente semplice, aprendo un mondo di possibilità per l’automazione e l’interazione.
Man mano che diventi più a tuo agio, puoi esplorare argomenti avanzati come:
- Gestione delle conversazioni con
ConversationHandler. - Gestione degli errori e logging robusto.
- Integrazione con database per l’archiviazione di dati complessi.
- Utilizzo di
filterspiù avanzati. - Implementazione della modalità inline per capacità di ricerca globale.
Ricorda, la bellezza dell’apertura di Telegram e della versatilità di Python è che puoi costruire quasi tutto. Se stai cercando di elevare il tuo bot con intelligenza artificiale all’avanguardia, comprensione del linguaggio naturale o integrazioni senza soluzione di continuità senza il pesante onere della codifica, piattaforme come TeleClaw sono progettate per potenziarti.
Pronto a costruire, migliorare o gestire i tuoi bot Telegram con automazione intelligente?
Esplora TeleClaw oggi stesso e potenzia il tuo bot Telegram! o prova il nostro bot direttamente su Telegram: @claw
FAQ
Domande frequenti
Quali sono i passaggi fondamentali per creare un bot Telegram con Python?
È necessaria esperienza di programmazione per seguire questa guida alla creazione di bot Telegram con Python?
Come può TeleClaw aiutarmi nel mio progetto di bot Telegram con Python?
Continua a leggere
I Migliori Agenti AI per il Business nel 2026: Una Guida Categoria per Categoria
Il modo più chiaro per confrontare gli agenti AI per il business nel 2026: sei categorie reali, scelte oneste e dove si posiziona un agente nativo di Telegram come TeleClaw.
Agenti Cloud TeleClaw: Esegui un Agente di Coding da Telegram
TeleClaw è presente nella categoria degli agenti cloud di OpenRouter. Scopri cosa fa un agente cloud, come il 2026 ha cambiato il settore e come eseguirne uno direttamente da Telegram.