Cuando un bot añade automáticamente nuevos roles a tu servidor de Discord, las posiciones de tus roles organizados manualmente pueden cambiar de forma inesperada. Esta deriva rompe las jerarquías de permisos y puede hacer que los comandos de moderación o el acceso a los canales dejen de funcionar correctamente. La causa principal es que Discord asigna la posición más alta disponible a un rol recién creado de forma predeterminada, empujando todos los roles existentes un puesto hacia abajo. Este artículo explica exactamente por qué ocurre la deriva de roles y proporciona una solución paso a paso para restaurar y bloquear el orden de tus roles.
Puntos clave: Prevenir la deriva de roles causada por bots
- Ajustes del servidor > Roles > Arrastrar para reordenar: Restaura manualmente la jerarquía correcta después de que un bot añada roles.
- Comando de configuración del bot /role create position: Algunos bots aceptan un parámetro de posición para colocar los nuevos roles debajo de los existentes.
- Usa un bot o script dedicado para ordenar roles automáticamente: Herramientas como Role Saver o scripts personalizados del servidor pueden detectar y revertir cambios de posición.
Por qué se desplazan las posiciones de los roles de Discord tras la creación de roles por un bot
Discord asigna una posición numérica a cada rol. La posición 0 es el rol más alto, justo debajo del propietario del servidor. Cuando creas un rol manualmente, Discord lo coloca en la parte superior de la lista existente de forma predeterminada. Los bots que crean roles a través de la API hacen lo mismo: llaman a guild.createRole() sin especificar una posición, y Discord inserta automáticamente el nuevo rol en la posición 0. Esto desplaza cada rol existente un puesto hacia abajo, rompiendo cualquier jerarquía de permisos que hayas configurado cuidadosamente.
Por ejemplo, si tu rol de moderador está en la posición 3 y tu rol de miembro está en la posición 4, un bot que añade un nuevo rol empuja el rol de moderador a la posición 4 y el rol de miembro a la posición 5. Si el rol de moderador tenía permiso para expulsar miembros, ahora se sitúa por debajo del rol de miembro en la jerarquía, y el permiso de expulsión puede dejar de aplicarse como se esperaba. Esta deriva no es un error. Es el comportamiento predeterminado de la API de Discord cuando no se especifica una posición.
La solución implica dos acciones: reordenar manualmente los roles después de que se ejecute el bot, y configurar el bot para colocar los nuevos roles en una posición específica. Algunos bots admiten un parámetro position en su comando de creación de roles. Otros no lo hacen, lo que requiere una solución alternativa usando un bot de gestión de roles o un script programado.
Pasos para solucionar y prevenir la deriva de posiciones de roles
- Identifica los roles que se desplazaron
Abre tu servidor y revisa la lista de roles en Ajustes del servidor > Roles. Busca roles que aparezcan por encima de roles por debajo de los cuales deberían estar. Por ejemplo, si el rol @everyone está por encima de un rol de personal, eso es un indicador de deriva. Anota el orden correcto que necesitas: el rol más alto primero, el rol más bajo al final. - Reordena manualmente los roles arrastrándolos
En Ajustes del servidor > Roles, haz clic y mantén presionado el controlador de seis puntos en el lado izquierdo del nombre de un rol. Arrastra el rol a su posición correcta en la lista. Suelta el ratón. Repite para cada rol desplazado. Esto restaura la jerarquía de inmediato. Todos los permisos y el acceso a los canales vuelven a su comportamiento previsto. - Comprueba el comando de creación de roles del bot en busca de un parámetro de posición
Abre la documentación del bot o escribe/helpen un canal donde el bot responda. Busca un parámetro llamadopositionoindex. Ejemplo:/role create name: "trial-mod" position: 5. Si el bot lo admite, usa este parámetro para colocar los nuevos roles debajo de todos los roles existentes. Esto evita la deriva por completo. - Si el bot no admite un parámetro de posición, usa un bot de gestión de roles
Instala un bot como Role Saver o Auto Roles. Estos bots se pueden configurar para ejecutar una comprobación programada cada pocos minutos. Cuando detectan un rol que está fuera de lugar, lo devuelven a su posición guardada. Sigue la guía de configuración del bot para guardar una instantánea de tu orden de roles actual y habilitar la autocorrección. - Crea un script personalizado del servidor usando webhooks de Discord o un bot autoalojado
Si tienes experiencia en programación, escribe un script que escuche el eventoguildRoleCreate. El script lee la posición del nuevo rol y la compara con una lista almacenada. Si el nuevo rol no está en la posición prevista, el script llama arole.setPosition()para moverlo. Aloja el script en un servicio en la nube gratuito o en una Raspberry Pi. Esto te da control total sobre la colocación de roles. - Prueba la solución haciendo que el bot cree un rol de prueba
Pide al bot que cree un rol ficticio. Después de crearlo, revisa Ajustes del servidor > Roles para confirmar que el nuevo rol aparece al final de la lista o en la posición que especificaste. Si se desplazó, repite el paso 2 y verifica de nuevo la configuración del bot.
Si los roles de Discord siguen desplazándose después de aplicar la solución principal
El bot crea roles en posiciones aleatorias
Algunos bots, especialmente los personalizados o mal programados, asignan una posición aleatoria al crear un rol. La única solución fiable es dejar de usar ese bot para la creación de roles o modificar su código fuente. Si no puedes modificar el bot, usa un bot de gestión de roles que reordene los roles cada 30 segundos. Esto anula rápidamente la colocación aleatoria.
La deriva de roles ocurre solo después de una interrupción del servidor o una actualización de la API de Discord
Discord cambia ocasionalmente cómo se almacenan los roles internamente. Después de una actualización de la API, las posiciones de los roles pueden restablecerse al orden alfabético o al orden de creación. Esto es poco frecuente pero está documentado. Para prepararte, exporta tu lista de roles como un archivo JSON usando un bot como Dyno. Si ocurre una deriva, importa el orden guardado para restaurar las posiciones al instante.
El bot añade roles más rápido de lo que el bot de gestión de roles puede reordenarlos
Si un bot crea 50 roles en un segundo, un bot de gestión de roles que comprueba cada 30 segundos puede no detectar todas las derivas antes de que se rompan los permisos. Solución: aumenta la frecuencia de comprobación del bot de gestión de roles a cada 5 segundos, o usa un bot que procese roles por lotes. Como alternativa, crea los roles de uno en uno con un retraso entre cada creación.
Reordenación manual vs. ordenación automática por bot vs. script personalizado
| Elemento | Reordenación manual | Ordenación automática por bot | Script personalizado |
|---|---|---|---|
| Tiempo de configuración | Instantáneo | 10 minutos | 2 horas o más |
| Esfuerzo continuo | Repetir después de cada creación de rol por el bot | Ninguno | Ninguno después del despliegue |
| Costo | Gratis | Bot gratuito o suscripción de pago | Gratis si es autoalojado |
| Fiabilidad | 100% precisa pero depende de la persona | Alta, depende del tiempo de actividad del bot | Muy alta, control total |
La reordenación manual es la solución más rápida cuando la deriva ya ha ocurrido. La ordenación automática por bot es la mejor prevención a largo plazo para servidores con creación frecuente de roles por bots. Los scripts personalizados ofrecen el mayor control, pero requieren habilidades técnicas para configurarlos y mantenerlos.
La deriva de roles después de la creación de roles por un bot se debe a que Discord coloca los nuevos roles en la parte superior de la jerarquía de forma predeterminada. Puedes solucionarlo de inmediato arrastrando los roles de nuevo a su orden en Ajustes del servidor > Roles. Para prevenir futuras derivas, configura el bot para que use un parámetro position o instala un bot de gestión de roles que corrija automáticamente las posiciones. Para una prevención avanzada, escribe un script personalizado que escuche los nuevos roles y los mueva a una posición predefinida. Prueba tu configuración con un rol ficticio para confirmar que la solución funciona antes de depender de ella en producción.