· 4 years ago · Jun 03, 2021, 09:50 PM
1import telebot
2from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
3import firebase_admin
4from firebase_admin import credentials
5from firebase_admin import db
6
7
8# Inizializza Telebot
9#API App Beta
10API_TOKEN = '1609350352:AAF2CW-1pMBGqveh2FNZMislMXzn1_aN0ag'
11bot = telebot.TeleBot(API_TOKEN)
12
13# Inizializza Firebase
14# Fetch the service account key JSON file contents
15cred = credentials.Certificate('FirebaseSDK.json')
16# Initialize the app with a service account, granting admin privileges
17firebase_admin.initialize_app(cred, {
18 'databaseURL': 'https://pqlbeta-default-rtdb.firebaseio.com/'
19})
20# As an admin, the app has access to read and write all data, regradless of Security Rules
21ref = db.reference('/')
22
23
24@bot.message_handler(commands=['inventario'])
25def handle_command_adminwindow(message):
26 # aggiungi una colonna per ogni 7 elementi in matrice
27 rootInventory = ref.child("inventario").get()
28 userPool = []
29 userId = message.from_user.id
30 items = []
31 for i in rootInventory:
32 userPool.append(i)
33 print(f"userId = {userId}")
34 userId = f"{userId}"
35 if userId in userPool:
36 print("Utente trovato, inizio a listare gli oggetti presenti")
37 refItems = ref.child("inventario").child(userId).get()
38 for i in refItems:
39 items.append(i)
40 nitem = len(items)
41 print(f"\nTotale quantità oggetti presenti: {nitem}")
42 while(nitem%7!=0):
43 nitem += 1
44 print(f"\narrotondamento quantità per suddivisione in colonne: {nitem}")
45 print(f"{nitem} / 7 =")
46 ncol = nitem / 7
47 ncol = int(ncol)
48 print(f"{ncol}")
49 #carica query con i nuovi dati
50 show_info(message, ncol, items)
51
52def show_info(message, ncol, items):
53 # Lista oggetti scaricati dall'inventario in cloud, pronti al confronto per l'associazione per tipo elemento
54 markup = InlineKeyboardMarkup()
55 listFruits = ["mela", "banana", "fragole", "Ciliegie", "lampone", "mirtillo"]
56
57
58 while ncol != 1:
59 # inserisci nuova colonna
60 row = []
61 for i in range(0, len(items)):
62 if items[i] in listFruits:
63 row.append(InlineKeyboardButton(text=items[i], callback_data=f"cb_fruit"))
64 else:
65 row.append(InlineKeyboardButton(text=items[i], callback_data=f"cb_other"))
66 # finisce la colonna ricomincia dall'inizio
67 markup.row(*row)
68 ncol -= 1
69 bot.send_message(message.chat.id, 'Inventario', reply_markup=markup)
70
71
72@bot.callback_query_handler(func=lambda call: True)
73def callback_query(call):
74 if call.data == "cb_fruit":
75 bot.answer_callback_query(call.id, "È stato selezionato un frutto")
76 elif call.data == "cb_other":
77 bot.answer_callback_query(call.id, "È stato selezionato altro")
78
79
80
81bot.polling()