Telegram: come creare un BOT con Python - 2 - comandi, keyboard ed emoji

Salve a tutti,
qualche tempo fa avevamo pubblicato una guida per creare un bot su Telegram in python (clicca qui se ancora non l'hai letta). Viste le potenzialità dei bot (noi ce ne siamo fatti svariati per diversi usi), pensavamo fosse carino fare una seconda parte aggiungendo delle funzionalità in più.
Nel primo articolo, avevamo già visto qualche riga di codice per mostrare il funzionamento e l'utilizzo del message loop e dell'handle con l'invio di messaggi e immagini da python verso il client.
Oggi invece vedremo come aggiungere i comandi e i pulsanti e attribuirgli una certa funzionalità e le ormai immancabili emoji.
Creiamo dunque un nuovo bot Telegram come abbiamo già visto in precedenza e facciamoci qualche test 🙂

Prima di procedere però aggiorniamo telepot (se già installato)
sudo pip install telepot --upgrade
oppure se si ha easy_install
easy_install --upgrade telepot

Comandi

I comandi sono delle richieste predefinite che facciamo al bot e hanno la particolarità di avere come primo carattere "/". Un esempio pratico è /newbot che ci è servito su BotFather per creare il nuovo bot.
Vediamo come aggiungerli. Entriamo nella conversazione di BotFather e diamo il comando /mybots. Appariranno tutti i bot che abbiamo creato. Selezioniamo il bot a cui vogliamo aggiungere comandi e poi Edit Bot e infine Edit Commands.
Creiamo due comandi

  • /myip che restituirà l'IP pubblico del server su cui gira il nostro script in python
  • /sendinfo che restituirà le informazioni dell'utente

Per fare ciò inviamo come risposta al bot
myip - Restituisce l'IP pubblico del server
sendinfo - Restituisce le informazioni utente

e riavviamo Telegram per rendere effettive le modifiche

NB: quando si aggiungono comandi in un secondo momento, quelli vecchi vanno comunque riscritti.

Ora che vediamo un po' di codice, ne approfitto per mostrarvi un metodo diverso di impostare il message loop, utile successivamente. Il codice è molto semplice ma ve l'ho commentato per chiarire eventuali dubbi.

Pulsanti (inline Keyboard)

Quando abbiamo modificato i comandi, ci sono apparsi dei pulsanti che ci hanno permesso di selezionare il bot e poi altre impostazioni. Questo strumento prende il nome di inline Keyboard e adesso vediamo come sfruttarlo.
Creiamo due pulsanti per fare le stesse cose dei comandi del paragrafo precedente e un pulsante supplementare che ci restituisce l'ora con un messaggio a comparsa.

Il codice è organizzato in due metodi: on_chat_message che gestisce i messaggi che arrivano dall'utente compresa anche la creazione della keyboard e on_callback_query che permette invece di gestire le risposte dei pulsanti. Per impostare la callback, la aggiungiamo nel main loop in questo modo

Mostriamo brevemente la sintassi per generare la keyboard. L'oggetto per crearla si chiama InlineKeyboardMarkup e come parametro gli passiamo inline_keboard=['''Array di array di InlineKeyboardButton''']. Ogni InlineKeyboardButton ha un valore text che è la label che apparirà nel pulsante e callback_data che è il valore che utilizzeremo per capire, nella funzione on_callback_query, quale dei pulsanti è stato premuto.

È possibile naturalmente impostare il layout dei pulsanti della tastiera. Nel nostro caso avremo un layout di questo tipo

Quindi gli "array di primo livello" rappresentano le righe. Nel nostro esempio infatti si può vedere che abbiamo due righe: la prima con due pulsanti mentre la seconda con uno solo:
[
[InlineKeyboardButton(...),InlineKeyboardButton(...)],
[InlineKeyboardButton(...)]
]

Ecco il codice completo.

Inviando quindi un qualsiasi messaggio, otterremo in risposta la tastiera. Per esercizio potreste provare a creare due comandi che generano due diversi tipi di tastiera 😉

Emoji

Ultima cosina per aggiungere giusto un tocco in più 🙂
Aggiungiamo le emoji ai nostri pulsanti o ai nostri messaggi installiamo l'apposito pacchetto
sudo pip install emoji.

Per mettere l'emoji all'etichetta di un pulsante utilizziamo emoji.emojize. Ad esempio per aggiungere l'emoji dell'orologio al pulsante che ci da l'ora, dovremo sostituire all'apposito campo text dell'InlineKeyboardButton
emoji.emojize('Time :watch:', use_aliases=True)

Tutti gli alias sono reperibili a questo indirizzo
https://www.webpagefx.com/tools/emoji-cheat-sheet/

Al momento è tutto!
Se volete ulteriori info sull'API di Telegram vi consiglio di visitare la documentazione di telepot nonché fonte di questo articolo.
Per richieste e consigli, come sempre, non esitate a lasciarci un commento.

Ingegnere Informatico e Ricercatore se compiace al Prodigioso Spaghetto Volante. Sono uno spartan racer, massimo esperto di serie tv, fotografo amatoriale e appena ne ho l’occasione preparo la valigia e parto

Telegram: come creare un BOT con Python - 2 - comandi, keyboard ed emoji ultima modifica: 2017-05-30T11:04:14+01:00 da Andrea Salvi


Advertisment ad adsense adlogger