Ancora grazie agli amici del sito http://www.allafinedelpalo.it/ per il codice sulla lettura dei codice QR code che ho copiato dal loro post e che ho applicato all’interno del mio bot.

Pubblico anche le 3 immagini che contengono i codici QR che vengono riconosciuti dal bot. Non sono altro che 3 immagini che contengono le stringhe qrcode1, qrcode2 e qrcode3.

Quando viene inviata una immagine nella chat, il bot prova a controllare se nell’immagine è presente un QR code e legge il contenuto. Confronta il testo contenuto nel QR code con le 3 variabili definite a livello di programma e così definite:

   QRCODE1="qrcode1"
   QRCODE2="qrcode2"
   QRCODE3="qrcode3"

Il bot, nella sua versione base, non fa altro che visualizzare il testo riconosciuto e comunicare se coincide con il valore di una delle 3 variabili.

Se il bot non riconosce nessun codice QR valido, visualizza un messaggio all’utente. E’ meglio stampare il codice QR e utilizzare la fotocamera dello smartphone per caricare l’immagine del QR code, perchè se si fotografa il codice QR dallo schermo del computer, il bot fa fatica a riconoscere correttamente il contenuto dell’immagine (forse i pixel disturbano l’identificazione).

Ecco il codice della funzione completa:

    === LEGGI_QR_CODE ===
    Funzione per analizzare l'immagine passata al BOT nella chat
    e cerca se il testo presente nel QR code coincide con il testo
    definito nelle 3 variabili di programma con lo scopo di
    effettuare delle scelte sulla base del contenuto del QR code.
    =====================
    """
    def leggi_QR_code(bot,chat_id,msg):
        bot.sendMessage(chat_id, 'Ricerca dei QR Code in corso...')
        raw_img = BytesIO()
        bot.download_file(msg['photo'][-1]['file_id'], raw_img)
        img = Image.open(raw_img)
        qrcodes = decode(img)

        if len(qrcodes) > 0:
            for code in qrcodes:
                print("Il contenuto del QR code è:", qrcodes)
                qr_string=str(code.data)
                qr_string_unicode=qr_string[2:-1]

                bot.sendMessage(chat_id, "Il QRCode contiene il testo: " + qr_string_unicode)
                if qr_string_unicode==QRCODE1:
                    bot.sendMessage(chat_id, "Trovato il QRCODE1")
                elif qr_string_unicode==QRCODE2:
                    bot.sendMessage(chat_id, "Trovato il QRCODE2")
                elif qr_string_unicode==QRCODE3:
                    bot.sendMessage(chat_id, "Trovato il QRCODE3")

        else:
            bot.sendMessage(chat_id, "Non ho trovato QRCode nella foto...")
        return