Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

137
Vistas
Detectar si el miembro tiene un rol

Estoy construyendo un bot de Discord, más específico, un comando rolecolor. Hice una versión de este comando, que funcionó. El único problema fue que era extremadamente ineficiente, tardó como 5 minutos en responder. Esto se debió a que había muchas declaraciones 'if' y otras cosas que el bot tenía que verificar antes de ejecutar algo. El archivo tenía más de 129 000 líneas y todo mi programa de edición estaba retrasado. Ahora tengo un nuevo plan, que probablemente sea mucho más eficiente:

El bot verifica si un miembro tiene algún rol que comience con "SRC -". SRC significa color del rol del servidor, solo un nombre que tiene cada rol que se dedica a ser cosmético. Todos mis nombres de rol de color comienzan con "SRC - nombre ". Si detecta alguno, elimínelo. Espere este proceso y luego agregue el nuevo color. Tengo como 205 roles para los colores. PUEDO simplemente hacer:

 message.guild.members.cache .get(user.id) .roles.remove(roleone); message.guild.members.cache .get(user.id) .roles.remove(roletwo);

Esto funciona, pero de nuevo, ineficiente. Discord no es tan rápido eliminando y agregando roles. Cuando realicé una prueba, no me dio ningún error. A pesar de esto, pensé que algo andaba mal porque mis roles no cambiaban. Cuando estaba ejecutando una depuración y verifiqué nuevamente, los roles finalmente se actualizaron. Solo toma un tiempo antes de actualizar. Me gustaría tener esto más eficiente. Aquí hay algunos ejemplos de código:

Adición de funciones, después de la eliminación de funciones:

 if (args[0] === "1") { message.guild.members.cache .get(user.id) .roles.add(roleone); message.channel.send(errmsg); console.log(logmsg); else if (args[0] === "2") //etc

Entonces, mi pregunta es, ¿alguien sabe cómo detectar si el miembro tiene roles que comienzan con name , de modo que solo se puedan eliminar esos roles?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

.remove() toma un RoleResolvable , Array of RoleResolvable s o una Collection de RoleResolvable s. Puedes filtrar los roles y pasarlo

 const member = message.guild.members.resolve(user.id) const roles = member.roles.cache.filter(r => r.name.startsWith(`SRC -`)) await member.roles.remove(roles) // remove all roles from the member that start with "SRC -"
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda