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 🙂


12 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 🙂

DeleteValue_ · 21 Maggio 2021 alle 10:01

Salve, sarebbe possibile fare dei messagi programmati che vengono inviati ogni ora tipo?, se si come?
grazie della risposta

    fabiobiffi · 22 Maggio 2021 alle 18:51

    Ciao, si sarebbe possibile. Spiegare in un commento come farlo penso sia molto difficile, ti spiego la logica che adotterei io in questo caso (in realtà sarebbe tutto da testare). Praticamente io farei una sorta di ciclo “while” con una condizione sempre a true, dentro il ciclo inserirei il comando per inviare il messaggio e subito dopo una funzione “sleep” con il tempo che desidero. Così facendo il BOT continuerebbe a lavorare in loop intervallato dal tempo che decidi di impostare. Spero si sia capito un po’ cosa intendo :).
    In ogni caso se poi hai ulteriore bisogno scrivimi pure una mail o usa i metodi di contatto presenti nel sito.

ReuPi · 16 Giugno 2021 alle 10:34

Scusate il disturbo, sto cercando di capire come si crea un bot telegram che modifichi automaticamente i link che li mando, mi spiego meglio. Vorrei poter mandare un link di Amazon a questo bot che automaticamente crei un offerta telegram pronta da mandare su un canale delle offerte
Es. Io mando questo link: https://amzn.to/3gqizMm
E lui mi risponde mandandomi:

ASUS TUF Gaming VG259Q, Monitor Gaming 25” (24.5”) FHD (1920×1080) IPS, 1ms, Refresh rate 144Hz, DP, HDMI, Super Narrow Bezel, FreeSync & G-Sync Compatible, Low Blue Light, Flicker Free

-> In offerta a 239,99€ (da 349,99€)
~ https://amzn.to/3gqizMm

Purtroppo non so se è realizzabile visto che devo ancora iniziare a programmare 😅

    fabiobiffi · 17 Giugno 2021 alle 18:53

    il bot in se non è complicato da realizzare, purtroppo se non hai mai programmato potrebbe risultare difficile. fammi sapere se hai bisogno di aiuto.

      ReuPi · 18 Giugno 2021 alle 09:16

      Purtroppo credo sia meglio aspettare che io impari a programmare a scuola prima di addentrarmi in questo mondo, ho provato ad aprire un editor di testo e non sapevo proprio da cosa iniziare o cosa fare 😅

ReuPi · 18 Giugno 2021 alle 09:18

Credo mi convenga aspettare di imparare a programmare a scuola 😅 ho aperto un editor di testo e non sapevo nemmeno da dove iniziare, purtroppo per me è ancora un mondo sconosciuto questo

    ReuPi · 18 Giugno 2021 alle 09:19

    Per sbaglio ho mandato un altro commento invece di rispondere 🤭

Toni · 5 Ottobre 2021 alle 10:26

Non mi funziona ottengo questo errore:

@bot.message_handler(func=lambda message: True)
AttributeError: ‘TeleBot’ object has no attribute ‘message_handler’

Roberto Dalle Nogare · 10 Ottobre 2021 alle 13:48

Non capisco come caricare il codice sul bot, io ho già il bot fatto e il codice scritto, ma come glielo carico sul bot??

    fabiobiffi · 11 Ottobre 2021 alle 20:57

    Cosa intendi con “come lo carico sul bot?” il codice è il tuo bot.

Lascia un commento

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