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())
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
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)")
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\"")
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")
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")
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)")
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")
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")
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!")
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")
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)")