Di seguito riporto il codice per attivare l’Inline Keyboard all’interno di Telegram. Sinceramente pensavo che fosse più utili/pratica, ma alla fine non mi ha convinto come pensavo. Per questo motivo il codice non è ottimizzato e ho creato tante funzioni quante sono le Inline Keyboard da attivare. Ho anche creato una funzione che contiene molti cicli if per gestire i tasti premuti dall’utente, ma sono sicuro che ci sono modalità più raffinate per gestire questo tipo di input.
=== ATTIVA MAGGIORDOMO ===
Funzione attivare l'Inline Keyboard presente in Telegram.
L'InlineKeyboard visualizza 3 pulsanti
Il pulsante key1 visualizza un sottomenù con altri 2 pulsanti e quello per tornare indietro
Il pulsante key2 visualizza un elenco di anni e il pulsante per tornare indietro
Il pulsante key3 visualizza direttamente un testo
Questa è la funzione base. Ci sono altre funzioni per gestire le risposte dell'utente.
==========================
"""
def attiva_maggiordomo(chat_id):
print("Maggiordomo attivato")
keyboard = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text='Testo key1', callback_data='key1'),
InlineKeyboardButton(text='Testo key2', callback_data='key2'),
InlineKeyboardButton(text='Testo key3', callback_data='key3')]
])
bot.sendMessage(chat_id,"Attivazione del Maggiodomo in corso...",reply_markup=keyboard)
Di seguito riporto le altre funzioni necessarie per attivare e gestire i sotto menù dell’Inline Keyboard. Ricordo che il valore presente nel campo callback_data è quello che viene utilizzato per gestire il flusso all’interno del programma.
def attiva_maggiordomo_key1(chat_id):
print("Maggiordomo KEY1 attivato")
key1_keyboard = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text='Testo key1 sub 1', callback_data='key1_1'),
InlineKeyboardButton(text='Testo key1 sub 2', callback_data='key1_2')],
[InlineKeyboardButton(text='Torna indietro', callback_data='from_key1_back')]
])
bot.sendMessage(chat_id, "Entro nella sezione KEY1...",reply_markup=key1_keyboard)
def attiva_maggiordomo_key2(chat_id):
print("Maggiordomo KEY2 attivato")
key2_keyboard = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text='2016', callback_data='2016')],
[InlineKeyboardButton(text='2017', callback_data='2017')],
[InlineKeyboardButton(text='2018', callback_data='2018')],
[InlineKeyboardButton(text='Torna indietro', callback_data='from_key2_back')]
])
bot.sendMessage(chat_id, "Entro nella sezione KEY2...",reply_markup=key2_keyboard)
def attiva_maggiordomo_key3(chat_id):
print("Maggiordomo KEY3 attivato")
bot.sendMessage(chat_id, "Entro nella sezione KEY3...")
Infine, ecco la funzione per gestire i pulsanti una volta che vengono premuti dall’utente.
def on_callback_query(msg):
query_id, chat_id, query_data = telepot.glance(msg, flavor='callback_query')
print('Callback Query:', query_id, chat_id, query_data)
if query_data=="key1":
attiva_maggiordomo_key1(chat_id)
elif query_data=="key2":
attiva_maggiordomo_key2(chat_id)
elif query_data=="key3":
attiva_maggiordomo_key3(chat_id)
elif query_data == 'from_key1_back':
attiva_maggiordomo(chat_id)
elif query_data == 'from_key2_back':
attiva_maggiordomo(chat_id)
elif query_data == 'from_key3_back':
attiva_maggiordomo(chat_id)
elif query_data == '2016':
bot.sendMessage(chat_id, "Hai scelto l'anno 2016")
elif query_data == '2017':
bot.sendMessage(chat_id, "Hai scelto l'anno 2017")
elif query_data == '2018':
bot.sendMessage(chat_id, "Hai scelto l'anno 2018")
elif query_data == 'key1_1':
bot.sendMessage(chat_id, "Hai premuto il tasto KEY1_1")
elif query_data == 'key1_2':
bot.sendMessage(chat_id, "Hai premuto il tasto KEY1_2")
elif query_data == 'key2_1':
bot.sendMessage(chat_id, "Hai premuto il tasto KEY2_1")
elif query_data == 'key2_2':
bot.sendMessage(chat_id, "Hai premuto il tasto KEY2_2")