Skip to content

Commit 70a7232

Browse files
authored
Add files via upload
1 parent 7bd6abf commit 70a7232

File tree

6 files changed

+224
-0
lines changed

6 files changed

+224
-0
lines changed

Listino.py

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import json
2+
3+
4+
class Listino:
5+
6+
def __init__(self):
7+
self.listino_prezzi = {}
8+
self.listino_ingredienti = {}
9+
10+
with open('listino.json', 'r') as listino_json:
11+
self.listino_prezzi = json.load(listino_json)
12+
13+
with open('ingredienti.json', 'r') as ingredienti_json:
14+
self.listino_ingredienti = json.load(ingredienti_json)
15+
16+
def get_listino(self):
17+
return self.listino_prezzi
18+
19+
def get_price(self, pizza_name):
20+
if pizza_name in self.listino_prezzi.keys():
21+
return self.listino_prezzi[pizza_name]
22+
else:
23+
return '?.??'
24+
25+
def get_ingrediente(self, pizza_name):
26+
if pizza_name in self.listino_ingredienti.keys():
27+
return self.listino_ingredienti[pizza_name]
28+
else:
29+
return ''

Ordine.py

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Ordini:
2+
3+
def __init__(self):
4+
self.ordini = {}
5+
6+
def add_ordine(self, user: str, pizza_name: str):
7+
self.ordini[user] = pizza_name
8+
9+
def rem_ordine(self, user: str):
10+
self.ordini.pop(user, None)
11+
12+
def get_ordini(self):
13+
return self.ordini
14+
15+
def clean(self):
16+
self.ordini.clear()

bot.py

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
import telebot
2+
import random
3+
from Listino import Listino
4+
from Ordine import Ordini
5+
6+
BOT_TOKEN = ''
7+
bot = telebot.TeleBot(BOT_TOKEN)
8+
9+
str_welcome = """Benvenuto nel bot per ordinare le pizze di *Ulisse*'"""
10+
11+
# Inizializzazione dei contenitori
12+
ordinazioni = Ordini()
13+
listino = Listino()
14+
15+
#Response del listino, calcolarla ogni volta fa merda
16+
response_lista = 'Ecco le pizze che puoi ordinare\n\n'
17+
18+
for key in listino.get_listino().keys():
19+
response_lista += '*{pizza}*\t{prezzo}€\n'.format(pizza=key.upper(), prezzo=listino.get_price(key))
20+
response_lista += '**Ingredienti**:{ingredienti}\n\n'.format(ingredienti=listino.get_ingrediente(key))
21+
22+
23+
# Benvenuto
24+
@bot.message_handler(commands=['start', 'Start'])
25+
def subscribe(message):
26+
bot.send_message(id, str_welcome, parse_mode='Markdown') # Serve ad aggiungere la formattazione tipo grassetto
27+
28+
29+
# Metodo per stampare il listino delle pizze
30+
@bot.message_handler(commands=['listapizze', 'listapizza', 'lista_pizze'])
31+
def lista_pizze(message):
32+
33+
# Invio la response
34+
bot.send_message(message.chat.id, response_lista, parse_mode='Markdown')
35+
36+
37+
# Pizza Random per gli indecisi
38+
# Da testare
39+
@bot.message_handler(commands=['randompizza'])
40+
def pizza_random(message):
41+
utente = '{Nome} {Cognome}'.format(Nome=message.from_user.first_name, Cognome=message.from_user.last_name)
42+
# Da sistemare
43+
pizza_name = random.choice(listino.get_listino().keys())
44+
prezzo = listino.get_price(pizza_name)
45+
ordinazioni.add_ordine(utente, pizza_name)
46+
#Creo la risposta da dare all'utente
47+
response = 'Hai ordinato una *{pizza_name}*\nCosto: {prezzo} €\nBella vez' \
48+
.format(pizza_name=pizza_name, prezzo=str(prezzo))
49+
bot.send_message(message.chat.id, response, parse_mode='Markdown')
50+
51+
52+
# Metodo per rimuovere il proprio ordine
53+
@bot.message_handler(commands=["rimuovi"])
54+
def rimuovi_ordine(message):
55+
utente = '{Nome} {Cognome}'.format(Nome=message.from_user.first_name, Cognome=message.from_user.last_name)
56+
ordinazioni.rem_ordine(utente)
57+
bot.send_message(message.chat.id, 'La tua ordinazione è stata *rimossa*', parse_mode='Markdown')
58+
59+
60+
# Metodo per aggiungere una pizza
61+
# Uno manda il comando ordina poi scrive il nome della pizza
62+
@bot.message_handler(commands=["ordina", "Ordina"])
63+
def ordina_pizza(message):
64+
text = bot.reply_to(message, 'Dimmi che pizza vorresti prendere tra quelle del listino')
65+
bot.register_next_step_handler(text, ordina_handler)
66+
67+
68+
def ordina_handler(message):
69+
# Prendo il nome della pizza
70+
pizza_name = message.text.lower()
71+
# Prendo il prezzo dal listino
72+
prezzo = listino.get_price(pizza_name)
73+
# Prendo l'utente
74+
utente = '{Nome} {Cognome}'.format(Nome=message.from_user.first_name, Cognome=message.from_user.last_name)
75+
# Aggiungo l'ordine
76+
ordinazioni.add_ordine(utente, pizza_name)
77+
# Creo la risposta da dare all'utente
78+
response = 'Hai ordinato una *{pizza_name}*\nCosto: {prezzo} €\nBella vez' \
79+
.format(pizza_name=pizza_name, prezzo=str(prezzo))
80+
bot.send_message(message.chat.id, response, parse_mode='Markdown')
81+
82+
83+
# Metodo per completare l'ordine
84+
@bot.message_handler(commands=["completa", "Completa"])
85+
def completa_ordini(message):
86+
response = ''
87+
# Pizza - Numero
88+
totale = {}
89+
90+
# Guardo il numero di pizze
91+
for utente in ordinazioni.get_ordini().keys():
92+
if ordinazioni.get_ordini()[utente] not in totale.keys():
93+
totale[ordinazioni.get_ordini()[utente]] = 1
94+
else:
95+
totale[ordinazioni.get_ordini()[utente]] += 1
96+
97+
# Produco la response
98+
for pizza in totale.keys():
99+
response += 'x{numero} *{pizza}* '.format(numero=totale[pizza], pizza=pizza)
100+
for user in ordinazioni.get_ordini().keys():
101+
if ordinazioni.get_ordini()[user] == pizza:
102+
response += '{user}, '.format(user=user)
103+
response = response[:len(response)-2] + '\n\n'
104+
print(response)
105+
# Rimuovo le ordinazioni
106+
ordinazioni.clean()
107+
108+
if not response:
109+
response = """ Non c'è niente da completare"""
110+
111+
# Invio la response
112+
bot.send_message(message.chat.id, response, parse_mode='Markdown')
113+
114+
115+
# Fa partire il bot
116+
while True:
117+
try:
118+
bot.polling(none_stop=True, timeout=60)
119+
except Exception as ex:
120+
print(ex)

ingredienti.json

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"margherita": "pomodoro, fior di latte, olio e basilico",
3+
"marinara" : "pomodoro, aglio, origano, olio e basilico",
4+
"bufalina" : "pomodoro,bufala,olio e basilico",
5+
"piennolo dop": "bufala campana DOP, pomodori del Piennolo DOP, olio e basilico",
6+
"filetto": "pomodorini, fior di latte, olio e basilico",
7+
"salsiccia": "pomodoro, fior di latte, salsiccia, olio e basilico",
8+
"vesuvia": "pomodoro, fior di latte,salame piccante, ricotta, olio e basilico",
9+
"4 stagioni": "pomodoro, fior di latte, salame dolce, funghi,prosciutto cotto, carciofini, olive, olio e basilico",
10+
"4 formaggi": "formaggi misti, fior di latte, olio e basilico",
11+
"parmigiana": "pomodoro, fior di latte, prociutto cotto, melenzane, grana, olio e basilico",
12+
"tedesca": "pomodoro, fior di latte, wurstel, patate, olio e basilico",
13+
"casereccia": "pomodoro, fior di latte, pancetta, rucola, grana a scaglie, olio e basilico",
14+
"friarielli": "provola, salsiccia, friarielli, olio e basilico",
15+
"diavola": "pomodoro, fior di latte, salame piccante, olive nere, olio e basilico",
16+
"tricolore": "provola, friarielli, pomodorini, olio e basilico",
17+
"montanara": "provola, funghi porcini, prociutto crudo,olio e basilico",
18+
"suina": "pomodoro, fior di latte, salame piccante, wurstel, salsiccia, olio e basilico",
19+
"rustica 2": "pomodoro, bufala, pancetta, grana, pepe, e basilico",
20+
"mimosa": "panna, fior di latte, cotto, mais, olio e basilico",
21+
"fresca": "piada con all'uscita rucola, pomodorini, bufala, tonno, olive, olio e basilico",
22+
"bismarck": "pomodoro, fior di latte, cotto, uovo, olio e basilico",
23+
"calzone napoletano": "pomodoro, fior di latte, ricotta, prosciutto cotto(oppure salame dolce),grana, pepe, olio e basilico",
24+
"calzone contadino": "pomodoro, fior di latte, ricotta,prosciutto cotto, funghi, carciofi olio e basilico",
25+
"calzone vegetariano": "pomodoro, fior di latte, verdure miste, olio e basilico",
26+
"panino boscaiolo": "fior di latte, funghi, speck e olive",
27+
"panino parma": "fior di latte e prosciutto crudo"
28+
29+
}

listino.json

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"margherita": 4,
3+
"marinara" : 3.50,
4+
"bufalina" :6,
5+
"piennolo dop": 8,
6+
"filetto" :5,
7+
"salsiccia" :5,
8+
"vesuvia" :5.50,
9+
"4 stagioni" :6.50,
10+
"4 formaggi" :6.60,
11+
"parmigiana" :6,
12+
"tedesca": 5.50,
13+
"casereccia": 7.50,
14+
"friarielli": 7.50,
15+
"diavola": 5.50,
16+
"tricolore": 7,
17+
"montanara": 8,
18+
"suina": 8,
19+
"mimosa": 6,
20+
"rustica 2":8,
21+
"fresca" :7.50,
22+
"bismarck": 5.50,
23+
"calzone napoletano" :6.50,
24+
"calzone contadino": 6,
25+
"calzone vegetariano": 6.50,
26+
"panino boscaiolo": 6.50,
27+
"panino parma": 5.50
28+
29+
}

requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pyTelegramBotAPI

0 commit comments

Comments
 (0)