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")