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