|
| 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) |
0 commit comments