Exemplo n.º 1
0
    async def get(self, ctx, *args):
        # opciones de la funcion autodescriptivas
        parse = argparse.ArgumentParser()
        parse.add_argument("--no-tex", dest="tex", action="store_false")
        parse.add_argument("--no-info", dest="info", action="store_false")
        #parse.add_argument("-s", "--strict", action="store_true")

        message, p = None, ""
        if len(args) == 0:
            # mostramos uno random
            p = b.aleatorio()
            message = await ctx.send(util.show_problem(p))
            if not util.check_rol(ctx): return

        else:
            # obtenemos el filtro (o problema concreto) y buscamos más argumentos
            nombre = False
            if not args[0].startswith('-'):
                nombre = args[0]
                args = args[1:]

        try:
            r = parse.parse_args(args)
            #p = b.aleatorio(nombre, r.strict) if nombre else b.aleatorio()
            strict = any(c.isdigit() for c in nombre)
            p = b.aleatorio(nombre, strict) if nombre else b.aleatorio()
            # si no se encuentran problemas
            if not p:
                await ctx.send("Sin resultados")
                return

            message = await ctx.send(util.show_problem(p, r.tex, r.info))
        except:
            print(sys.exc_info())
Exemplo n.º 2
0
    async def recover(self, ctx, *args):
        if not util.check_rol(ctx):
            await ctx.send("No tienes permisos")
            return

        PDD(
        )  # se asignará v.pdd_problema, y como la tarea() está en bucle, lo pondrá en el canal
Exemplo n.º 3
0
    async def react_add(self, ctx, *args):
        if not util.check_rol(ctx):
            await ctx.send("No tienes permisos")
            return

        args = list(args)
        add_only = False  # no permite quitarse el rol
        if "--add-only" in args:
            add_only = True
            args.remove("--add-only")

        l = len(args)
        if l > 2:
            _id = args[0]
            roles = {}
            for i in range(1, l, 2):
                if i + 1 < len(args):
                    if args[i + 1]:
                        roles[args[i]] = args[i + 1]
                else:
                    await ctx.send(
                        "Hay un emoji que queda sin rol. (>man react add)")
                    return

            if add_only:
                roles["add_only"] = True

            dicc[_id] = roles
            guardar_json()
            await ctx.send("Hecho!")
        else:
            await ctx.send("Argumentos insuficientes. (>man react add)")
Exemplo n.º 4
0
    async def react_list(self, ctx, *args):
        if not util.check_rol(ctx):
            await ctx.send("No tienes permisos")
            return

        info = True
        args = list(args)
        if "--no-info" in args:
            args.remove("--no-info")
            info = False

        if args:
            _id = args[0]
            if _id in dicc:
                await ctx.send(
                    f"Reacciones para {_id}\n" +
                    "\n".join([f"{k}\t{dicc[_id][k]}" for k in dicc[_id]]))
            else:
                await ctx.send(f"No hay reacciones para el mensage *{_id}*")

        elif dicc:
            msg = []
            for k in dicc:
                if info:
                    msg.append(
                        f"Reacciones para *{k}*\n" +
                        "\n".join([f"{_k}\t{dicc[k][_k]}" for _k in dicc[k]]))
                else:
                    msg.append(k)

            await ctx.send("\n\n".join(msg))
        else:
            await ctx.send("No se ha configurado ningún \"reaction role\"")
Exemplo n.º 5
0
    async def pdd_rm(self, ctx, *args):
        # check rols
        if not util.check_rol(ctx, ['admin', 'moderador', 'pdd selección']):
            await ctx.send("No tienes permisos para esta función")
            return

        if args:
            pd.rm(list(args))
            await ctx.send("Hecho!")
        else:
            await ctx.send("No se han especificado problemas")
Exemplo n.º 6
0
    async def _del(self, ctx, *args):
        if not util.check_rol(ctx):
            await ctx.send("Permiso denegado")

        if not args:
            await ctx.send("*del* necesita argumentos. (Ver >man del)")
            return

        # borramos cada archivo
        for x in args:
            b.rm(x)

        await ctx.send(f"Eliminados {len(args)} problemas")
Exemplo n.º 7
0
    async def react_rm(self, ctx, *args):
        if not util.check_rol(ctx):
            await ctx.send("No tienes permisos")
            return

        if args:
            for x in args:
                if x in dicc:
                    del dicc[x]

            guardar_json()
            await ctx.send("Hecho!")
        else:
            await ctx.send("Esta función necesita argumentos (>man react rm)")
Exemplo n.º 8
0
    async def pdd_get(self, ctx, *args):
        if not util.check_rol(ctx, ['admin', 'moderador', 'pdd selección']):
            await ctx.send("No tienes permisos para esta función")
            return

        nombre = ""
        if args: nombre = args[0]

        prob = pd.get(nombre)
        p = random.choice(prob)[0] if prob else []
        p_bd = b.get(p, True)

        if p_bd:
            await ctx.send(util.show_problem(p_bd[0]))
        else:
            await ctx.send("Este no existe en la BD")
Exemplo n.º 9
0
    async def edit(self, ctx, *args):
        # comprobamos permisos
        if not util.check_rol(ctx):
            await ctx.send("No tienes permisos para esta función")
            return

        if len(args) < 3:
            await ctx.send("Argumentos insuficientes")
            return

        if args[0].startswith("-"):
            await ctx.send(
                "ERROR: Escribe el ID del problema a editar (ej: '>edit TDN3 ...')"
            )
            return

        id_problema = args[0]
        args = args[1:]

        # comprobamos los posibles argumentos
        parse = argparse.ArgumentParser()
        parse.add_argument("-a", "--area", nargs='?', default="")
        parse.add_argument("-u",
                           "--user",
                           nargs='?',
                           default=ctx.message.author.display_name)
        parse.add_argument("-f", "--font", nargs='?', default="Sin fuente")
        parse.add_argument("-l", "--link", default="")
        parse.add_argument("-L", "--LIST", default="")
        parse.add_argument("-s", "--solution", default="")
        parse.add_argument("-t", "--tex", nargs="*", default="")

        problema = b.get(id_problema, True)
        if not problema:
            await ctx.send(f"El problema {id_problema} no existe")
            return

        try:
            # probamos añadirlo
            r = parse.parse_args(args)

            output = b.edit(id_problema, r.area, r.link, r.user, r.font,
                            r.solution, " ".join(r.tex))
            await ctx.send(f'Nombre del archivo: *{output}*')
        except:
            await ctx.send("ERROR: Revisa que los argumentos sean correctos")
Exemplo n.º 10
0
    async def pdd_add(self, ctx, *args):
        # check rols
        if not util.check_rol(ctx, ['admin', 'moderador', 'pdd selección']):
            await ctx.send("No tienes permisos para esta función")
            return

        if len(args) < 2:
            await ctx.send(
                "Esta función necesita al menos 2 argumentos (>man pdd-add)")
            return

        if args[0] not in "fmd":  # facil-medio-dificil
            await ctx.send(
                "El primer parámetro debe ser 'f', 'm' o 'd' (>man pdd-add)")
            return

        dif = args[0]
        args = list(args[1:])
        pd.add(args, dif)
        await ctx.send("Hecho!")
Exemplo n.º 11
0
    async def add(self, ctx, *args):
        # comprobamos permisos
        if not util.check_rol(ctx, ['admin', 'moderador', 'pdd selección']):
            await ctx.send("No tienes permisos para esta función")
            return

        if len(args) < 3:
            await ctx.send("Argumentos insuficientes")
            return

        # siempre será >add [campo]
        if args[0].startswith("-"):
            await ctx.send(
                "ERROR: Asigna un campo a este problema (ej: '>add algebra ...')"
            )
            return

        campo = args[0]
        args = args[1:]

        # comprobamos los posibles argumentos
        parse = argparse.ArgumentParser()
        parse.add_argument("-u",
                           "--user",
                           nargs='?',
                           default=ctx.message.author.display_name)
        parse.add_argument("-f", "--font", nargs='?', default="Sin fuente")
        parse.add_argument("-l", "--link", default="")
        parse.add_argument("-L", "--LIST", default="")
        parse.add_argument("-s", "--solution", default="")
        parse.add_argument("-t", "--tex", nargs="*", default="")

        try:
            # probamos añadirlo
            r = parse.parse_args(args)
            output = b.add(campo, r.link, r.user, r.font, r.solution,
                           " ".join(r.tex))
            await ctx.send(f'Nombre del archivo: *{output}*')
        except:
            await ctx.send("ERROR: Revisa que los argumentos sean correctos")
Exemplo n.º 12
0
    async def react_append(self, ctx, *args):
        if not util.check_rol(ctx):
            await ctx.send("No tienes permisos")
            return

        l = len(args)
        if l > 2:
            _id = args[0]
            roles = {}
            for i in range(1, l, 2):
                if i + 1 < len(args):
                    if args[i + 1]:
                        roles[args[i]] = args[i + 1]
                else:
                    await ctx.send(
                        "Hay un emoji que queda sin rol. (>man react append)")
                    return

            dicc[_id] = {**dicc[_id], **roles}  # agregamos
            guardar_json()
            await ctx.send("Hecho!")
        else:
            await ctx.send("Argumentos insuficientes. (>man react append)")