Cómo organizar una liga de HaxBall en Discord con Spike

Actualizada el 2 de noviembre de 2026 · 10 min de lectura

Una liga de HaxBall en Discord tiene siempre las mismas piezas: equipos, un mercado de pases, un calendario, resultados y una tabla. Esta guía recorre una temporada completa con Spike, en el orden en que conviene configurarla, con los comandos reales y los detalles que suelen generar dudas.

Antes de empezar

  1. 1Crear el mercado/setup-mercado
  2. 2Registrar equipos/add-equipo y abreviaturas
  3. 3TiersOpcional, antes de fichar
  4. 4Fichajes/fichar con el mercado abierto
  5. 5Fixture y resultados/fixture crear y set-resultado
  6. 6Cierre de temporada/reset-mercado
El orden en que conviene configurar una temporada; cada paso tiene su sección en esta guía.

Spike se agrega desde el panel web: inicias sesión con Discord y el panel te muestra los servidores de los que eres dueño o en los que tienes permiso de Administrador o Gestionar servidor, con la opción de invitar al bot. Antes de configurar nada, conviene tener creados en Discord:

  • Un canal de fichajes, donde se publican las solicitudes, y uno de bajas, donde se anuncian las salidas.
  • Un rol de Director Técnico (DT) y, si lo vas a usar, uno de Sub Director Técnico (SubDT).
  • Un rol por equipo. Opcionalmente, un canal propio para cada equipo (ahí llegan los recordatorios de partidos).
  • Un rol de organizador si quieres que otras personas administren la liga sin ser administradoras del servidor.

Si tu comunidad no habla español, cambia el idioma de las respuestas con /language (Español, English o Português). Los nombres de los comandos se escriben siempre en español.

Cada comando tiene un nivel de permiso. En resumen:

QuiénQué puede hacer
AdministradorCrear mercados y equipos, abreviaturas, idioma del bot.
Administrador u OrganizadorAbrir y cerrar el mercado, reiniciarlo, expulsar jugadores, fixture y resultados, transmisiones en vivo y reportes del analizador web en un canal.
Gestionar servidorTiers, plantillas de anuncios y correcciones de estadísticas.
DT / SubDTFichar y dar de baja en su equipo; el DT nombra al SubDT.
TodosRenunciar y consultar estadísticas, tabla y tops.

Jerarquía de roles y permisos del bot

Discord ordena los roles de un servidor en una lista: la jerarquía. Un bot solo puede dar o quitar roles que estén más abajo que el suyo, y solo puede cambiar a miembros cuyo rol más alto también esté más abajo. Por eso Spike puede avisarte que no puede fichar, dar de baja o expulsar a alguien aunque tú sí tengas permiso para hacerlo.

Para arreglarlo, un administrador del servidor debe:

  1. Abrir Ajustes del servidor → Roles.
  2. Arrastrar el rol del bot hacia arriba, por encima de los roles de equipos, DT y SubDT.
  3. Comprobar que ese rol tenga el permiso Gestionar roles.
  4. Repetir la acción en Discord; no hace falta reiniciar ni reinvitar al bot.

Dos casos no se arreglan moviendo el rol del bot:

  • El dueño del servidor: ningún bot puede cambiar sus roles ni su apodo. Si juega, tendrá que ponerse el rol a mano.
  • Roles administrados por otro bot o integración: Discord no deja asignarlos, así que no sirven como rol de equipo.

Para que la abreviatura del equipo aparezca en los apodos, el bot también necesita el permiso Gestionar apodos.

Crear el mercado

En Spike, un mercado es una competición con su propia configuración, sus equipos y sus estadísticas. Un servidor puede tener varios (por ejemplo, Primera y Segunda división) y cada uno funciona por separado. Se crea con /setup-mercado:

/setup-mercado nombre: Liga1 canal_fichajes: #fichajes canal_bajas: #bajas rol_director_tecnico: @DT max_jugadores: 15

Además de esos cinco datos obligatorios puedes indicar el rol de SubDT, el rol de organizador y activar los avisos: recordatorios en el canal de cada equipo 30 minutos antes de un partido del fixture. El límite de jugadores va de 1 a 32 por equipo.

El mercado se crea abierto. Si todavía estás armando equipos y no quieres que empiecen los fichajes, ciérralo con /edit-mercado nombre: Liga1 accion: cerrado y ábrelo el día que arranque el libro de pases. Ten en cuenta que al cerrar un mercado se cancelan las solicitudes de fichaje pendientes. Con /mercados cualquiera puede ver la configuración y el estado de todos los mercados. Todos los comandos están detallados en Mercados y equipos.

Equipos, abreviaturas y límites

Cada equipo es un rol de Discord registrado con /add-equipo. Al registrarlo puedes asignarle un canal propio y un límite de jugadores distinto al del mercado (útil si un equipo juega con plantel reducido). Si hay más de un mercado, tienes que indicar a cuál pertenece. Para cambiar esos datos después está /edit-equipo, y /del-equipo lo quita del mercado sin borrar el rol.

La abreviatura es lo que aparece en el apodo de cada jugador fichado, con el formato «ABR | Nick». Se define con /add-abreviacion (hasta 10 caracteres) y tiene dos modos: todos reescribe los apodos de quienes ya están en el equipo y guardar la aplica solo a los fichajes que vengan. Si la defines antes de abrir el mercado, no necesitas reescribir nada.

Cada DT puede nombrar a un SubDT con /set-subdt: tiene los mismos permisos de fichajes y bajas. Si el equipo ya tenía uno, el reemplazo pide confirmación. Por último, con /plantilla puedes subir un fondo propio para los anuncios de fichajes, bajas, renuncias y expulsiones (PNG, JPG o WEBP de hasta 8 MB, idealmente de 1200 × 500 px).

Tiers para equilibrar planteles

Las tiers son categorías de jugadores con un cupo por equipo. Si defines una tier HT1 con límite 3, ningún equipo puede tener más de tres jugadores HT1: Spike lo valida en cada fichaje y bloquea el que se pase del cupo.

  1. Crear las categorías
    Crea las categorías con /add-tier nombre: HT1 limite: 3.
  2. Asignar jugadores
    Asigna a cada jugador con /set-tier jugador: @usuario tier: HT1 accion: asignar.
  3. Revisar
    Revisa la lista con /tier-list tier: HT1 antes de abrir el mercado.

El orden importa: asigna las tiers antes de que empiecen los fichajes, porque la validación ocurre en el momento de fichar. Las tiers pertenecen a un mercado y sobreviven a un reinicio de temporada. Más detalles en Tiers.

Fichajes, bajas y salidas

El fichaje en Spike es con consentimiento. El DT usa /fichar jugador: @usuario y el bot publica en el canal de fichajes una solicitud con los botones Aceptar y Rechazar. Solo el jugador invitado puede responderla, y la solicitud vence a las 24 horas. Cuando acepta, recibe el rol del equipo, su apodo pasa a «ABR | Nick» y se publica el anuncio animado.

/ficharjugador@lucas
La solicitud que publica Spike en el canal de fichajes: menciona al jugador, muestra quién lo ficha, el equipo y el plantel actual. Solo el jugador mencionado puede pulsar los botones.

El fichaje se bloquea en tres casos:

  • el mercado está cerrado;
  • el plantel ya llegó a su límite de jugadores;
  • el cupo de la tier del jugador en ese equipo está completo.

Las salidas tienen tres caminos, y todas se anuncian en el canal de bajas:

  • /baja: el DT o SubDT saca a un jugador de su equipo. El rol se revoca al instante.
  • /renuncia: el propio jugador se va, con confirmación. No está disponible para el DT o el SubDT, ni para quien tiene varios equipos en el mismo mercado.
  • /expulsar: un administrador u organizador saca a un jugador sin su consentimiento.

Si diriges equipos en más de un mercado, agrega la opción mercado a /fichar, /baja y /set-subdt. Todo está en Fichajes y bajas.

Fixture y resultados

El calendario se genera con /fixture crear mercado: Liga1 fechas: 10. Spike arma un todos contra todos (round-robin): sortea el orden de los equipos, reparte los partidos de cada fecha para que ningún equipo juegue siempre en el primer turno y, si el número de equipos es impar, cada fecha uno queda libre. Hacen falta al menos dos equipos, y se pueden pedir entre 1 y 50 fechas.

Para elegir la cantidad de fechas:

  • Con 8 equipos, 7 fechas son una vuelta completa: todos se enfrentan una vez.
  • Con 7 equipos, una vuelta también son 7 fechas, porque en cada una descansa un equipo.
  • Si pides el doble (14 en esos ejemplos), el calendario sigue con la segunda vuelta y la localía se invierte.

Si el mercado ya tenía fixture, Spike pide confirmación antes de reemplazarlo. Como el orden se sortea, generar de nuevo da otro calendario: publícalo antes de la primera fecha y no lo regeneres a mitad de torneo. Con /fixture ver cualquiera lo consulta fecha por fecha.

Los resultados se cargan con /fixture set-resultado, indicando el ID del partido, los goles del local y del visitante y el estado: jugado, suspendido o aplazado. Cada vez que se registra un resultado, la tabla del mercado se recalcula desde cero con todos los partidos jugados (3 puntos por victoria, 1 por empate). Por eso, si usas el fixture, corrige los resultados ahí: un ajuste manual con /setteamstat se pierde en el siguiente recálculo.

Desde la sección Partidos del panel también puedes cargar resultados y ponerle día y hora a cada partido. Esa hora es la que usan los avisos: si el mercado los tiene activos y el equipo tiene canal propio, Spike avisa 30 minutos antes de cada partido pendiente. Más en Partidos y replays.

Sección Partidos del panel de Spike: fecha 2 de 4 con tres partidos jugados, cada uno con local, visitante, marcador, día y hora y la etiqueta Jugado.
La sección Partidos del panel: navegas fecha por fecha y cada partido muestra marcador, día y hora y estado.

Estadísticas, tabla y replays

Spike lleva por jugador goles (G), asistencias (A), G+A, MVPs, vallas invictas (CS), autogoles (OG) y partidos jugados (PJ), y por equipo el récord completo. Los comandos de consulta están abiertos a todos:

  • /stats-jugador: ficha del jugador, con equipo actual, tier e historial de fichajes.
  • /stats-equipo: partidos, victorias, empates, derrotas, goles y puntos de un equipo.
  • /top stat: goles: ranking paginado (goles, asistencias, mvps, cs, og, partidos o gmasa).
  • /tabla: la tabla de posiciones como imagen, con diferencia de gol y últimos cinco resultados.
  • /compare: dos jugadores lado a lado.

Para cargar datos que no pasaron por el bot, /setstat suma o reemplaza valores de un jugador. Las replays se analizan en el analizador web (reemplaza al antiguo comando /analyze): marcador, posesión, tiros, línea de goles, reproductor, mapas de calor y red de pases, y detecta partidos por mitades. Con «Enviar a Discord», un administrador u organizador publica el reporte del partido en un canal del servidor; la guía Cómo analizar una replay de HaxBall lo explica paso a paso.

Para seguir un partido en directo, /live activar con el enlace de la sala transmite en el canal el inicio y el final, cada gol con su minuto y asistencia y el marcador final. Si indicas el mercado, las estadísticas se suman solas. La sala tiene que estar activa y ser pública, y la transmisión dura como máximo una hora o hasta /live detener. Las métricas están en Estadísticas.

Panel web y cierre de temporada

Buena parte de lo anterior también se gestiona desde el panel web, que agrupa las secciones en Competición (Partidos y Tabla), Estadísticas (Tops, Comparador y Replay Stats), Mercados (Mercados, Plantillas e Historial) y Equipos (Equipos, Tiers y Jugadores). Para la comunidad existe además una página pública por mercado, que se ve sin iniciar sesión: /share/ID-del-servidor abre el primer mercado y /share/ID-del-servidor/Liga1 uno en particular. Muestra los partidos por fecha, la tabla y los tops de goles, asistencias, G+A, MVPs y vallas invictas. El ID del servidor se copia desde Discord con el modo desarrollador activado.

Al terminar la temporada no hace falta configurar todo de nuevo. /reset-mercado borra los datos y conserva la configuración, los roles, los canales y las tiers. Puedes elegir qué reiniciar: estadísticas, equipos e historial de fichajes van por separado, así que puedes, por ejemplo, empezar la temporada nueva con las estadísticas en cero y los mismos equipos. /del-mercado, en cambio, elimina el mercado con todos sus datos y no se puede deshacer; los roles y canales de Discord quedan intactos.

Si algo no funciona como esperas, /help muestra el uso de cada comando y /bug envía un reporte al equipo de Spike (uno cada 5 minutos). Ver Misceláneos.

Más guías

Cómo organizar una liga de HaxBall en Discord con Spike · Spike