Esempio n. 1
0
def button(bot, update):
    query = update.callback_query
    data = format(query.data).split(",")
    scelta = int(data[0])
    index = int(data[1])
    indexPhoto = 0

    if len(data) > 2:
        indexPhoto = int(data[2])

    if scelta is 1:
        raccomandazione = Recommendation(query.message.chat_id)
        fbRestaurants = raccomandazione.getFacebookRestaurants()
        restaurant = fbRestaurants[index]
        saveRecommendation(query.message.chat_id, restaurant)
        speech = "Hai scelto " + restaurant['name'] + "!"
        bot.edit_message_text(text=speech,
                              chat_id=query.message.chat_id,
                              message_id=query.message.message_id)
        messaggio.sendTelegramMessage(query.message.chat_id, "\\reset")
    if scelta is 2:
        text = messaggio.sendTelegramMessage(query.message.chat_id, "\\reset")
        bot.edit_message_text(text=text,
                              chat_id=query.message.chat_id,
                              message_id=query.message.message_id)

    if scelta is 3:
        esito = getPhoto(bot, query.message.chat_id, query.message.message_id,
                         index, indexPhoto)
        if not esito:
            bot.answer_callback_query(callback_query_id=query.id,
                                      text="Nessuna foto presente")
        else:
            bot.answer_callback_query(query.id)

    if scelta is 4:
        if index >= 0:
            nextRecommendation(bot, query.message.chat_id,
                               query.message.message_id, index)
            bot.answer_callback_query(query.id)

    if scelta is 5:
        bot.answer_callback_query(query.id)

    if scelta is 6:
        esito = getPhoto(bot, query.message.chat_id, query.message.message_id,
                         index, indexPhoto)
        if not esito:
            bot.answer_callback_query(callback_query_id=query.id,
                                      text="Nessuna foto presente")
        else:
            bot.answer_callback_query(query.id)

    if scelta is 7:
        removePhoto(query.message.chat_id)
        returnRestaurant(bot, query.message.chat_id, query.message.message_id,
                         index)
        bot.answer_callback_query(query.id)
Esempio n. 2
0
def recommendation(bot, update, message):
    while '\\end' not in message[0]:
        if message[0] == "":
            message = "a"
        message = [
            messaggio.sendTelegramMessage(update.message.chat.id, message)
        ]
    if "\\end tipologia" in message:
        r = Recommendation(update.message.chat.id)
        b = []
        for t in r.getTopFiveRecommendation():
            text = t.replace("_", " ")
            b.append(text)
        custom_keyboard = [[b[0], b[1]], [b[2], b[3]], [b[4]],
                           ["Non mi interessa"]]
        reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
        sendMessageToUser(bot, update, [
            "Vorresti mangiare qualcosa in particolare?",
            "Puoi scegliere tra i miei consigli oppure specificarmi una tipologia di cucina da te preferita!"
        ], reply_markup)

    elif "\\end time" in message:
        custom_keyboard = [["Pranzo"], ["Cena"], ["Non lo so"]]
        reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
        sendMessageToUser(bot, update,
                          ["Vuoi andare al ristorante a pranzo o a cena?"],
                          reply_markup)

    else:
        reply_markup = telegram.ReplyKeyboardRemove(remove_keyboard=True)
        r = Recommendation(update.message.chat.id)
        sendMessageToUser(bot, update, [
            "Ok, ho bisogno della tua posizione per raccomandarti dei ristoranti"
        ], reply_markup)
Esempio n. 3
0
def firstLocation(bot, update):

    text = messaggio.sendTelegramMessage(update.message.chat.id, "\location")
    text = text.split("\m")
    #estrazione
    #aggiorno recommendation
    #messaggio.sendTelegramMessage(update.message.chat.id,"\\risultati")

    if controllaMessaggio("annullare la raccomandazione", text):
        #print(controllaMessaggio("annullare la raccomandazione", text))
        custom_keyboard = [["Annulla raccomandazione"]]
        reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
        sendMessageToUser(bot, update, text, reply_markup)
    else:
        sendMessageToUser(bot, update, text, None)

    if not controllaMessaggio(
            "Se vuoi che ti consiglio dei ristoranti, devi chiedermelo esplicitamente!",
            text) and not controllaMessaggio("annullare la raccomandazione",
                                             text):

        location = {
            'longitude': str(update.message.location.longitude),
            'latitude': str(update.message.location.latitude)
        }
        saveRecommendationResults(update.message.chat.id, 50, 10)
        recommendation = Recommendation(str(update.message.chat.id))
        recommendation.setLocation(location)
        rFB = ResturantFacebook.RestaurantFacebook()
        rFB.extractForRecommendation(recommendation)
        sendRecommendation(bot, update, recommendation)
Esempio n. 4
0
def getFeedBack():
    client = MongoClient()
    db = client.usersbot.recommendations
    recommendations = []
    chatids = []
    recs = db.find()
    client.close()

    for r in recs:
        #print(r)
        if len(r['feedback']) == 0:
            if r['chatid'] not in chatids:
                recommendations.append(
                    str(r['chatid'] + "," + str(r['date']) + ",(" +
                        str(r['restaurant']['name'] + ")")))
                chatids.append(r['chatid'])

    print(recommendations)

    for cid in recommendations:
        c = cid.split(",")
        print("GETFeedBacK " + c[1] + " GETFeedBacK " + c[2])
        testo = messaggio.sendTelegramMessage(
            c[0], "GETFeedBacK " + c[1] + " GETFeedBacK " + c[2])
        t = telegram.Bot(token='464290673:AAGKuIqJjSOBKkdKJPoT7RZmRSh9QBqEylw')

        t.send_message(chat_id=cid, text=testo)
        print(testo)
Esempio n. 5
0
def start(bot, update):
    testo = messaggio.sendTelegramMessage(update.message.chat.id, "ciao")
    testo = testo.split("\m")
    for i in range(0, len(testo)):
        bot.send_message(update.message.chat.id, text=testo[i])
        time.sleep(1)
Esempio n. 6
0
def message(bot, update):

    #estraggo il messaggio inviato dall'utente
    messaggioUtente = update.message.text
    if messaggioUtente == "Non mi interessa":
        messaggioUtente = "\\next ristorante"
    if messaggioUtente == "Non lo so":
        messaggioUtente = "\\next cena"
    if messaggioUtente == "Annulla raccomandazione":
        messaggioUtente = "\\reset"
    print("user: "******"bot: " + rispostaBot)
    rispostaBot = rispostaBot.split("\m")

    casoBase = True

    #controlli per inserire o rimuovere bottoni
    if controllaMessaggio("annullare la raccomandazione", rispostaBot):
        #print(1)
        #print(controllaMessaggio("annullare la raccomandazione", rispostaBot))
        custom_keyboard = [["Annulla raccomandazione"]]
        reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
        sendMessageToUser(bot, update, rispostaBot, reply_markup)
        casoBase = False

    if controllaMessaggio("Raccomandazione annullata", rispostaBot):
        removeRecommendation(update.message.chat.id)
        reply_markup = telegram.ReplyKeyboardRemove(remove_keyboard=True)
        sendMessageToUser(bot, update, rispostaBot, reply_markup)
        casoBase = False

    if controllaMessaggio("raccomandazione2", rispostaBot):
        recommendation(bot, update, messaggioUtente)
        casoBase = False
    if controllaMessaggio('Grazie del giudizio! Buona Giornata!', rispostaBot):
        t = messaggio.sendTelegramMessage(update.message.chat.id,
                                          "Fine raccomandazione")
        print("feedback salvato:" + t)
        reply_markup = telegram.ReplyKeyboardRemove(remove_keyboard=True)

        sendMessageToUser(bot, update, rispostaBot, reply_markup)
        casoBase = False
    #if controllaMessaggio('',rispostaBot):
    if controllaMessaggio('uomo o una donna', rispostaBot):
        uomo_keyboard = telegram.KeyboardButton(text="uomo")
        donna_keyboard = telegram.KeyboardButton(text="donna")
        custom_keyboard = [[uomo_keyboard], [donna_keyboard]]
        reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
        sendMessageToUser(bot, update, rispostaBot, reply_markup)
        casoBase = False

    if controllaMessaggio('Perfetto!', rispostaBot):
        reply_markup = telegram.ReplyKeyboardRemove(remove_keyboard=True)
        sendMessageToUser(bot, update, rispostaBot, reply_markup)
        casoBase = False

    if controllaMessaggio('con che mezzo ti muovi di solito', rispostaBot):
        automobile_keyboard = telegram.KeyboardButton(text="automobile")
        ciclomotore_keyboard = telegram.KeyboardButton(text="ciclomotore 50")
        moto_keyboard = telegram.KeyboardButton(text="moto")
        bicicletta_keyboard = telegram.KeyboardButton(text="bicicletta")
        mezzi_keyboard = telegram.KeyboardButton(text="mezzi pubblici")
        custom_keyboard = [[automobile_keyboard, bicicletta_keyboard],
                           [moto_keyboard, ciclomotore_keyboard],
                           [mezzi_keyboard]]
        reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
        sendMessageToUser(bot, update, rispostaBot, reply_markup)
        casoBase = False

    if controllaMessaggio('Ottimo,abbiamo terminato!', rispostaBot):
        reply_markup = telegram.ReplyKeyboardRemove(remove_keyboard=True)
        sendMessageToUser(bot, update, rispostaBot, reply_markup)
        casoBase = False

    if controllaMessaggio('che lavoro fai', rispostaBot):
        impiegato_keyboard = telegram.KeyboardButton(text="impiegato")
        disoccupato_keyboard = telegram.KeyboardButton(
            text="lavoratore autonomo")
        lavoratore_aut_keyboard = telegram.KeyboardButton(text="disoccupato")
        casalinga_keyboard = telegram.KeyboardButton(text="casalinga")
        studente_keyboard = telegram.KeyboardButton(text="studente")
        militare_keyboard = telegram.KeyboardButton(text="corpo militare")
        pensionato_keyboard = telegram.KeyboardButton(text="pensionato")
        altro_keyboard = telegram.KeyboardButton(text="altro")
        custom_keyboard = [[impiegato_keyboard, disoccupato_keyboard],
                           [casalinga_keyboard, pensionato_keyboard],
                           [militare_keyboard, studente_keyboard],
                           [lavoratore_aut_keyboard, altro_keyboard]]
        reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
        sendMessageToUser(bot, update, rispostaBot, reply_markup)
        casoBase = False

    if controllaMessaggio('1 a 10', rispostaBot):
        keyboard1 = telegram.KeyboardButton(text="1")
        keyboard2 = telegram.KeyboardButton(text="2")
        keyboard3 = telegram.KeyboardButton(text="3")
        keyboard4 = telegram.KeyboardButton(text="4")
        keyboard5 = telegram.KeyboardButton(text="5")
        keyboard6 = telegram.KeyboardButton(text="6")
        keyboard7 = telegram.KeyboardButton(text="7")
        keyboard8 = telegram.KeyboardButton(text="8")
        keyboard9 = telegram.KeyboardButton(text="9")
        keyboard10 = telegram.KeyboardButton(text="10")

        custom_keyboard = [[keyboard1, keyboard2, keyboard3],
                           [keyboard4, keyboard5, keyboard6],
                           [keyboard7, keyboard8, keyboard9], [keyboard10]]
        reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
        sendMessageToUser(bot, update, rispostaBot, reply_markup)
        casoBase = False

    if controllaMessaggio("\\end time", rispostaBot):
        custom_keyboard = [["Pranzo"], ["Cena"], ["Non lo so"]]
        reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
        sendMessageToUser(bot, update,
                          ["Vuoi andare al ristorante a pranzo o a cena?"],
                          reply_markup)
        casoBase = False

    if controllaMessaggio("ho bisogno della tua posizione", rispostaBot):
        reply_markup = telegram.ReplyKeyboardRemove(remove_keyboard=True)
        sendMessageToUser(bot, update, rispostaBot, reply_markup)
        casoBase = False


# messaggio normale
    if casoBase:
        sendMessageToUser(bot, update, rispostaBot, None)