Come costruire un bot di Telegram di base con Python 3

Python Telegram Bot

Se sei un utente di Telegram, a un certo punto avrai sicuramente avuto una “conversazione” con un chatbot. Con la loro straordinaria personalizzazione, i bot di Telegram offrono una varietà di vantaggi: per automatizzare le attività o semplicemente per divertirsi con i giochi nel tuo gruppo di chat.

Mentre alcuni potrebbero trovare lo sviluppo di un bot un compito arduo, in realtà non lo è. Con la giusta pianificazione, puoi avere un bot di Telegram attivo e funzionante in meno di un’ora! Ecco come creare un semplice bot di Telegram che emetta immagini carine di gatti di Internet quando richiesto.

Iniziare

Per questo tutorial, useremo Python 3, il python-telegram-bot e la libreria delle richieste , e TheCatAPI .

Ogni bot in Telegram ha un token univoco che lo aiuta a comunicare con l’ API Bot per utilizzare l’interfaccia di messaggistica dell’app. Bot API, una delle funzionalità più popolari di Telegram tra gli sviluppatori, ti consente di utilizzare i suoi messaggi come un’interfaccia.

Per ottenere il token, avvia una conversazione con @BotFather che, come suggerisce il nome, è un bot ufficiale che ti consente di creare e personalizzare i tuoi bot. Puoi accedere al bot utilizzando il link indicato o in alternativa cercare “@botfather” su Telegram.

Una volta nella chat, crea il tuo bot digitando il comando / newbot . Continua a impostare il nome e il nome utente del tuo bot (abbiamo deciso di chiamare il nostro @pawsomebot). Successivamente, otterrai un token unico per il tuo bot.

Ora che abbiamo tutti i prerequisiti, è ora di passare alla parte più emozionante!

Installazione di librerie

Se utilizzi Windows, apri il prompt dei comandi e digita i seguenti comandi:

pip install python-telegram-bot
 pip install requests

Se stai usando macOS o Linux, usa invece i seguenti comandi sul tuo terminale. Inoltre in Linux, assicurati di aver effettuato l’accesso come utente con privilegi sudo.

pip3 install python-telegram-bot
 pip3 install requests

Scrivere il programma

Crea una nuova cartella sul tuo computer e aprila nel tuo editor preferito. Crea un nuovo file e chiamalo main.py. Questo file conterrà il codice sorgente del tuo bot.

Ora, importiamo le librerie che abbiamo installato in precedenza insieme ad alcune delle loro funzioni integrate.

from telegram.ext import Updater, CommandHandler
 import requests
 import re

Il flusso del programma da qui in poi è quello di accedere a TheCatAPI, ottenere l’URL di un’immagine casuale e inviare quell’immagine alla chat dell’utente.

Cominciamo con una funzione per ottenere l’URL dell’immagine, che può essere eseguita utilizzando il modulo delle richieste. In questa funzione, carichiamo i dati JSON di un file casuale fornito da TheCatAPI ed estraiamo il suo URL per un uso successivo. Per esaminare il formato dell’oggetto JSON, vai su https://api.thecatapi.com/v1/images/search sul tuo browser. Noterai qualcosa del genere:

[{"breeds":[],"id":"a8c","url":"url.jpg","width":800,"height":533}]

Si noti che l’oggetto JSON è un array che contiene un dizionario. Questo dizionario contiene l’URL con la chiave “url”. Per estrarre l’URL, dobbiamo fare riferimento al primo elemento dell’array e quindi alla chiave pertinente.

def getUrl():
 #obtain a json object with image details
 #extract image url from the json object
 contents = requests.get('https://api.thecatapi.com/v1/images/search')
 url = contents[0]['url']
 return url

Successivamente, dobbiamo inviare questa immagine nella chat di un utente. Per questo, abbiamo bisogno di un URL immagine e dell’ID univoco della chat dell’utente. Creiamo una funzione wrapper per farlo. Innanzitutto, chiamiamo getUrl () . funzione per ottenere l’URL di un’immagine casuale — questo URL cambia ogni volta che il programma itera attraverso la funzione.

Questo è quindi seguito dall’ottenimento dell’ID chat dell’utente destinatario, che definisce la posizione di destinazione del bot per i messaggi e dall’analisi dell’URL tramite la funzione send_photo () incorporata dell’API Bot.

def sendImage(bot, update):
 url = getUrl()
 chat_id = update.message.chat_id
 bot.send_photo(chat_id=chat_id, image=url)

Per saperne di più sulle varie funzioni integrate dell’API Bot e su come funzionano, sentiti libero di consultare la documentazione ufficiale di Telegram dopo questo tutorial.

Infine, creiamo una funzione che controlli il funzionamento complessivo del bot. Questa funzione — convenzionalmente chiamata main () — è dove inviamo una richiesta HTTP all’API del bot utilizzando il token ottenuto all’inizio del tutorial e quindi definiamo come sarà l’interazione dell’utente del bot. In un caso semplice come il nostro, ciò significa essenzialmente avviare il bot e chiamare la funzione sendImage () quando richiesto dall’utente.

def main():
 updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
 #call sendImage() when the user types a command in the telegram chat
 updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
 #start the bot
 updater.start_polling()
 updater.idle()
 if __name__ == '__main__':
 main()

Il tuo programma finale dovrebbe assomigliare a questo:

from telegram.ext import Updater, CommandHandler
 import requests
 import re
 def getUrl():
 #obtain a json object with image details
 #extract image url from the json object
 contents = requests.get('https://api.thecatapi.com/v1/images/search')
 url = contents[0]['url']
 return url
 def sendImage(bot, update):
 url = getUrl()
 chat_id = update.message.chat_id
 bot.send_photo(chat_id=chat_id, image=url)
 def main():
 updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
 #call sendImage() when the user types a command in the telegram chat
 updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
 #start the bot
 updater.start_polling()
 updater.idle()
 if __name__ == '__main__':
 main()

Il tuo Bot Telegram

Congratulazioni! Hai costruito il tuo bot antistress che invia immagini open source dei gatti più carini di Internet su richiesta. Prova a eseguire il tuo programma e digita / meow nella chat del tuo bot per attivarlo.

Sebbene possa essere un semplice bot con funzionalità limitate, mostra quanto sia potente l’ecosistema di sviluppo dei bot di Telegram. Puoi aggiungere un numero qualsiasi di subroutine e funzionalità complesse per migliorare la funzionalità del tuo bot: il cielo è il limite. Per saperne di più sui fantastici bot di Telegram che i contributori hanno creato nel corso degli anni, controlla il nostro elenco di utili bot di Telegram .

Puoi anche trovare una varietà di programmi su licenza open source per i bot di Telegram su piattaforme come GitHub. La maggior parte delle licenze open source ti consente di utilizzare, studiare, scaricare o modificare il codice sorgente di un programma.

Ospita il tuo bot di Telegram online

Ora che hai il tuo bot attivo e funzionante, prova a chiudere main.py sul tuo PC e usa il bot sulla tua app di messaggistica di Telegram. Risponde ancora al comando / meow ? No, non è così.

Come principiante, potresti essere confuso sul motivo per cui main.py sul tuo PC deve essere attivo e funzionante quando hai già creato un bot in esecuzione su Internet. La ragione di ciò è che il programma utilizza il PC come server locale per inviare richieste HTTP alle API utilizzate in questo programma.

Pertanto, dover eseguire il programma ogni volta che si desidera utilizzare l’app non è né fattibile né conveniente. Per risolvere questo problema, dobbiamo rimuovere la dipendenza del bot dal tuo dispositivo

Un modo per farlo è utilizzare un circuito stampato (PCB) a basso costo, come Raspberry Pi , per configurare il proprio server web e utilizzarlo per eseguire il programma. Ha gli stessi vantaggi di eseguire il programma sul PC senza i costi di mantenerlo acceso tutto il giorno e la notte poiché i PCB tendono ad avere un’impronta energetica significativamente inferiore.

In alternativa, puoi anche distribuire il tuo programma nel cloud. Vai a una piattaforma di hosting di app web come Heroku, AWS, Google Cloud o Microsoft Azure e scegli un abbonamento più adatto alle tue esigenze. Ti consigliamo di scegliere una prova o un abbonamento gratuiti e aggiornarli man mano che aumenti la portata o l’ambito del tuo programma.