Bentornato sul mio Blog, in questo articolo vado a spiegarti passo passo come creare un BOT per Telegram usando il linguaggio Python e la libreria “pyTelegramBotAPI“.

1. Cos’è un BOT per Telegram?

Il termine “BOT” sta ad indicare “Robot” e in ambito Telegram intendiamo un software che tramite i messaggi comunica con l’utente che può impartirgli comandi da eseguire. Detta così può sembrare complicato ma in realtà è molto semplice di quanto si creda.

2. Cosa può fare un BOT?

Potenzialmente un BOT per Telegram può fare letteralmente di tutto, ci sono BOT che monitorano le offerte su Amazon, quelli che ti notificano il meteo, ci sono bot che permettono il download di video da YouTube e BOT in grado di ascoltare messaggi vocali e trascriverli in testo per noi … Potrei andare avanti all’infinito ad elencare BOT famosi ma non è l’intento di questo articolo. Se vuoi conoscere i migliori BOT Telegram ti consiglio di guardare uno dei video qui sotto.

3. Python e la libreria “pyTelegramBotAPI”

Come accennato in precedenza andremo a sviluppare un BOT utilizzando il linguaggio di programmazione Python e più in particolare la libreria “pyTelegramBotAPI” che va a semplificare di molto la gestione delle chiamate GET e POST per i vari messaggi. Prima di iniziare con l’effettiva creazione del BOT è bene capire come funziona l’architettura di Telegram e dei sui BOT.

Come funziona lo scambio di messaggi tra BOT, Server e Client

Come potete vedere nell’immagine non avviene mai una comunicazione diretta tra BOT e client, di mezzo è sempre presente il Server di Telegram che si occupa di raccogliere i messaggi provenienti dal client e di tenerli in memoria.

Deve essere il nostro BOT, ogni tot tempo, ad interrogare il server di Telegram per chiedere se sono presenti nuovi messaggi ed eventualmente inoltrare le risposte a tali messaggi.

La libreria “pyTelegramBotAPI” ci viene incontro fornendo allo sviluppatore i metodi necessari a compiere tutte le operazioni di sincronizzazione con il Server Telegram.

4. Registriamo il nostro BOT su Telegram

La primissima operazione da compiere consiste nell’aprire l’app di Telegram (possibilmente da pc) e cercare l’utente chiamato “BotFather“, andremo a finire sul BOT ufficiale per registrare nuovi BOT sulla piattaforma.

digitiamo il comando “/newbot” e seguiamo la procedura guidata.

account BotFather

Una volta creato il nostro BOT ci viene fornita una API key, salviamola e non pubblichiamola da nessuna parte, è una chiave privata da NON condividere con nessuno in quanto è la chiave d’accesso al server Telegram per leggere i messaggi inviati al nostro BOT.

Fatto ciò avrai registrato il tuo BOT correttamente, infatti potrai ricercarlo nella lista degli utenti di Telegram e iniziare ad impartirgli comandi, chiaramente al momento il BOT non fa nulla in quanto non siamo ancora andati a scrivere il codice per farlo funzionare.

5. Passiamo al codice

Come prima cosa mi creo un file “bot.py” sul Desktop del mio computer, lo apro e vado ad incollare il seguente codice:

#!/usr/bin/python

# This is a simple echo bot using the decorator mechanism.
# It echoes any incoming text messages.

import telebot

API_TOKEN = '<api_token>'

bot = telebot.TeleBot(API_TOKEN)


# Handle '/start' and '/help'
@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
    bot.reply_to(message, """\
Hi there, I am EchoBot.
I am here to echo your kind words back to you. Just say anything nice and I'll say the exact same thing to you!\
""")


# Handle all other messages with content_type 'text' (content_types defaults to ['text'])
@bot.message_handler(func=lambda message: True)
def echo_message(message):
    bot.reply_to(message, message.text)


bot.polling()

Al posto di “<api_token>” devi incollare il codice che BotFather ti aveva fornito in fase di registrazione del BOT.

Fatto ciò puoi salvare il file ed aprire un terminale, da qui dovrai lanciare i seguenti comandi:

pip install pyTelegramBotAPI

Per scaricare ed installare la libreria e poi successivamente:

python bot.py

Per far partire il BOT, se hai fatto tutto correttamente il terminale si troverà nel seguente stato:

BOT in esecuzione

Se adesso provassimo a scrivere un messaggio al nostro BOT lui ci risponderà semplicemente con una copia del nostro stesso messaggio.

Esempio di BOT in esecuzione

Adesso sai che il tuo BOT funziona e puoi quindi andare ad ampliarne le sue funzionalità. Modifica il tuo codice sostituendolo con questo:

#!/usr/bin/python

# This is a simple echo bot using the decorator mechanism.
# It echoes any incoming text messages.

import telebot

API_TOKEN = '1504790944:AAF7Jg-EmeKYq1YvhR6h_-75ubVH5krr-LY'

bot = telebot.TeleBot(API_TOKEN)


# Handle '/start' and '/help'
 - questa funzione viene eseguita quando si scrive /start
@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
    bot.reply_to(message, """\
Benvenuto nel primo BOT di prova
""")


# Handle all other messages with content_type 'text' (content_types defaults to ['text'])
 - questa funzione viene eseguita quando si scrive qualsiasi messaggio
@bot.message_handler(func=lambda message: True)
def echo_message(message):
    bot.reply_to(message, 'Ciaoooooooo')


bot.polling()

Adesso il tuo BOT risponderà sempre “ciaoooo” a qualsiasi cosa gli venga scritto.

6. Dai sfogo alla creatività

Adesso hai un tuo BOT che funziona, sta a te decidere cosa fargli fare. Tieni a mente che appena chiudi il terminale il BOT non sarà più in esecuzione, ti consiglio di caricare il tuo codice su un server locale oppure online, io solitamente uso un Raspberry che tengo sempre acceso così che il mio BOT funzioni h24.

7. BOT personalizzati su richiesta

Hai una idea e poco tempo / voglia per svilupparla? Contattami e realizzerò personalmente il tuo BOT Telegram, visita la pagina per saperne di più

Oppure lascia un commento qui sotto. Ti saluto, alla prossima 🙂


2 commenti

anto · 28 Aprile 2021 alle 17:07

scusate se mi intrometto .. sto cercando uno script python per un bot di Telegram, in pratica scarica automaticamente un file pdf dal bot. chi mi aiuti. grazie

    fabiobiffi · 11 Maggio 2021 alle 20:12

    Ciao, se mi fornisci qualche dettaglio in più posso aiutarti 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *