コード例 #1
0
    def borrar_busqueda(self, update, context):
        gestorBBDD = GestorBBDD()
        id_telegram = update.message.from_user.id
        opciones = []
        if(gestorBBDD.existeUsuario(id_telegram)):
            print(f"[TELEGRAM] Usuario {id_telegram} quiere borrar búsquedas. ")
            try:
                busquedas = gestorBBDD.recuperarBusquedasUsuario(id_telegram)

                if(len(busquedas) > 0):
                    texto = "¿Qué busqueda quieres borrar?"
                    contador = 1
                    for busqueda in busquedas:
                        texto+=f"\n[{contador}] - {busqueda.keywords} [{busqueda.precio_min},{busqueda.precio_max}]"
                        opciones.append([f"Borrar {contador}"])
                        contador+=1
                    texto+=f"\n Utiliza /cancelar_borrar_busqueda para cancelar el borrado. "
                    keyboard = ReplyKeyboardMarkup(opciones, one_time_keyboard=True)
                    update.message.reply_text(texto, reply_markup=keyboard)
                    return self.STATUS1
                else:
                    update.message.reply_text("No tienes ninguna búsqueda guardada.")
            except:
                update.message.reply_text("No tienes ninguna búsqueda guardada.")

        else:
            update.message.reply_text("No estás registrado. Escribe /registrarse. ")
        return ConversationHandler.END
コード例 #2
0
    def iniciar(self, update, context):
        id_telegram = update.message.from_user.id
        print(f"[TELEGRAM] Usuario {id_telegram} lanza /iniciar. ")
        gestorBBDD = GestorBBDD()
        if(gestorBBDD.existeUsuario(id_telegram) and len(gestorBBDD.recuperarBusquedasUsuario(id_telegram)) > 0):
            if(self.diccionario_scrapers.get(id_telegram) == None):
                usuario = gestorBBDD.recuperarUsuario(id_telegram)
                busquedas_usuario = gestorBBDD.recuperarBusquedasUsuario(id_telegram)
                for busqueda in busquedas_usuario:
                    # Si está activada la autocomparación, borro artículos anteriores
                    # y relleno con los nuevos desde scraperwallapop, de forma que
                    # solo se van comparando los artículos nuevos subidos.
                    if(busqueda.comparar_automaticamente == True):
                        print(f"[TELEGRAM] Borro artículos previos de la búsqueda {busqueda.keywords} del usuario {id_telegram} porque tiene autocomparación. ")
                        gestorBBDD.borrarArticulosBusqueda(busqueda.id_busqueda)

                notificador = Notificador(self.TOKEN)
                tarea = TareaPeriodica(10, ScraperWallapop, usuario, notificador, ejecucion_en_background=False)
                update.message.reply_text("Iniciando scrapeo. ")
                self.diccionario_scrapers[id_telegram] = tarea
                tarea.start()
            else:
                update.message.reply_text("Ya se está scrapeando, utiliza /detener para detener el scrapeo.")

        else:
            update.message.reply_text("Debes tener una cuenta y al menos una búsqueda para iniciar el scrapeo. ")
コード例 #3
0
 def iniciar_registro(self, update, context):
     # Si ya tiene cuenta, no dejo que se registre.
     gestorBBDD = GestorBBDD()
     id_telegram = update.message.from_user.id
     if(gestorBBDD.existeUsuario(id_telegram)):
         update.message.reply_text("Ya tienes una cuenta, no puedes añadir otra. Puedes borrar la previamente introducida con /borrar_cuenta. ")
         return ConversationHandler.END
     # Si no, pido código de invitación.
     else:
         print(f"[TELEGRAM] usuario {id_telegram} empieza a registrarse.")
         update.message.reply_text("Introduce código de invitación o usa /cancelar_registro en cualquier momento para cancelar el registro: ", reply_markup=ForceReply())
         return self.STATUS1
コード例 #4
0
 def start(self, update, context):
     id_telegram = update.message.from_user.id
     nombre_usuario = update.message.from_user.username
     print(f"[TELEGRAM] Usuario {id_telegram} lanza /start. ")
     gestorBBDD = GestorBBDD()
     context.user_data["tiene_cuenta"] = gestorBBDD.existeUsuario(update.message.from_user.id)
     context.user_data["email"] = ""
     context.user_data["password"] = ""
     context.user_data["mensaje"] = ""
     context.user_data["codigo_postal"] = ""
     bienvenida = f'¡Hola {nombre_usuario}! Soy un bot para actualizarte con los nuevos anuncios que se suban en Wallapop. Utiliza /ayuda para ver los comandos disponibles.'
     update.message.reply_text(bienvenida)
コード例 #5
0
 def borrar_cuenta(self, update, context):
     gestorBBDD = GestorBBDD()
     id_telegram = update.message.from_user.id
     print(f"[TELEGRAM] Usuario {id_telegram} va a borrar su cuenta. ")
     if (gestorBBDD.existeUsuario(id_telegram)):
         texto = "Se borrará tu cuenta y todas las búsquedas y artículos guardados asociados. Esta acción no se puede deshacer. ¿Estás seguro de que quieres continuar?"
         reply_keyboard = [["Si"], ["No"]]
         keyboard = ReplyKeyboardMarkup(reply_keyboard,
                                        one_time_keyboard=True)
         update.message.reply_text(texto, reply_markup=keyboard)
         return self.STATUS1
     else:
         update.message.reply_text(
             "Debes haberte registrado para poder borrar tu cuenta.")
         return ConversationHandler.END
コード例 #6
0
 def add_busqueda(self, update, context):
     gestorBBDD = GestorBBDD()
     id_telegram = update.message.from_user.id
     if (gestorBBDD.existeUsuario(id_telegram)):
         print(
             f"[TELEGRAM] Usuario {id_telegram} comienza a registrar búsqueda. "
         )
         self.iniciar_diccionario_busqueda(update, context)
         update.message.reply_text(
             "Introduce las keywords de tu búsqueda o utiliza en cualquier momento /cancelar_add_busqueda para cancelar.",
             reply_markup=ForceReply())
         return self.STATUS1
     else:
         update.message.reply_text(
             "Necesitas registrarte para poder añadir una búsqueda. Usa /registrarse ."
         )
コード例 #7
0
    def recoge_codigo_postal_probar_credenciales(self, update, context):
        codigo_postal = update.message.text
        id_telegram = update.message.from_user.id
        correcto = False
        print(f"[TELEGRAM] Usuario {id_telegram} mete codigo postal: {codigo_postal}.")
        try:
            ccaa = int(codigo_postal[:2])
            if(ccaa in range(1,53) and len(codigo_postal) == 5):
                correcto = True
        except:
            pass

        if(not(correcto)):
            update.message.reply_text("Código postal incorrecto. Registro cancelado. ")
            return ConversationHandler.END
        else:
            context.user_data["codigo_postal"] = codigo_postal

        # Si introduce cuenta de wp, pruebo credenciales.
        if(context.user_data["tiene_cuenta"]):
            texto = "Código postal guardado. Vamos a probar tu cuenta. Esto puede durar unos segundos..."
            update.message.reply_text(texto)
            usuario = Usuario(update.message.from_user.id,
                              context.user_data["email"],
                              context.user_data["pass_wallapop"],
                              context.user_data["codigo_postal"],
                              context.user_data["mensaje_wallapop"])
            bot = TestCredenciales(usuario, ejecucion_en_background=True)
            if(bot.probarCredenciales()):
                # Registro al usuario en la BBDD
                gestorBBDD = GestorBBDD()
                gestorBBDD.insertarUsuario(usuario)

                # Muestro datos guardados.
                texto = f"""Credenciales correctos. Cuenta guardada:
                - Email: {context.user_data["email"]}
                - Password: {context.user_data["pass_wallapop"]}
                - Mensaje automático: {context.user_data["mensaje_wallapop"]}
                - Código postal: {context.user_data["codigo_postal"]}
                """
                update.message.reply_text(texto)

                # Logueo
                id_telegram = update.message.from_user.id
                if(gestorBBDD.existeUsuario(usuario.id_telegram)):
                    print(f"[TELEGRAM] Usuario {id_telegram} registrado con éxito.")
            else:
                update.message.reply_text("Credenciales erróneos. Registro cancelado y datos borrados. ")
                self.limpiar_datos(context)
        # Si no tiene cuenta
        else:
            # Solo le inserto en la bbdd
            usuario = Usuario(update.message.from_user.id,
                              None,
                              None,
                              context.user_data["codigo_postal"],
                              None)
            gestorBBDD = GestorBBDD()
            gestorBBDD.insertarUsuario(usuario)
            update.message.reply_text("Registrado como usuario sin cuenta en la BBDD.")
            print(f"[TELEGRAM] Usuario {id_telegram} registrado como usuario sin cuenta con éxito.")
        return ConversationHandler.END