Reforger OPS

Estado del servidor de Arma Reforger en Discord: avisos y mensaje en vivo

· 5 min de lectura

Casi toda comunidad de Arma Reforger vive en Discord, y las dos preguntas que más se repiten son "¿está caído el server?" y "¿quién está jugando?". Las dos se responden solas con un webhook y una consulta al servidor. Esta guía explica cómo, y qué conviene mandar a qué canal.

Un webhook por canal

Un webhook de Discord es una URL a la que cualquier herramienta puede mandar mensajes sin ser un bot ni pedir permisos. Se crea en Ajustes del canal → Integraciones → Webhooks → Nuevo webhook. La URL es secreta: quien la tenga puede escribir en ese canal, así que no la pegues en público y regenerala si se filtra.

Conviene separar canales, porque el público y el staff no quieren lo mismo:

  • #estado (público): en línea / caído, jugadores conectados, reinicios programados.
  • #avisos-admin (staff): baneos, kicks, teamkills, quién abrió el Game Master, cambios de configuración.
  • #ranking (público, opcional): podio de la temporada.

Saber si el servidor está en línea sin RCON

Para "¿está vivo?" no hace falta RCON. Reforger responde al protocolo Steam Query (A2S) en el puerto del bloque a2s de config.json (17777 por convención): devuelve nombre, escenario, jugadores conectados y máximo. Es la misma consulta que hace el navegador de servidores del juego. Ventajas: es de solo lectura, no gasta la sesión RCON, y funciona aunque RCON esté apagado. Cualquier herramienta de monitoreo de servidores de juego la soporta.

Para no avisar en falso por un paquete perdido, lo sano es declarar "caído" después de dos consultas seguidas sin respuesta, y "de vuelta" con la primera que responde.

Un mensaje de estado que se edita solo

Mejor que un mensaje nuevo cada minuto (que llena el canal) es un solo mensaje fijado que se edita: Discord permite editar mensajes enviados por webhook. El contenido útil para jugadores: 🟢/🔴, jugadores/máximo, escenario, hora del juego, y si hay un mod que lo informe, nombres conectados y FPS del servidor. Así el canal siempre muestra la foto actual y nadie pregunta.

Avisos de moderación

Cada baneo, kick y reinicio debería quedar en el canal del staff con quién lo hizo, a quién (nombre + identity id) y por qué. Es la memoria del equipo: cuando alguien apela un baneo, la respuesta está ahí, no en la cabeza de un admin que ya no está. Como el servidor no guarda el motivo de los baneos (ver cómo banear), el canal de Discord es muchas veces el único registro.

Cómo lo hace Reforger Ops

El panel implementa todo lo de arriba: pegás los webhooks en Integraciones (uno de avisos y, si quieres, otros para estado, ranking y vigilancia), cargás el puerto A2S, y desde ese momento avisa caídas y vueltas, publica y mantiene el mensaje de estado en vivo, manda cada baneo/kick/reinicio con su autor y motivo, y anuncia el podio al cerrar la temporada. Los mensajes salen en el idioma del servidor (español o inglés).

Steam Query no es inmediato, y eso es bueno

La forma estándar de saber si un servidor de Arma Reforger está en línea es Steam Query (A2S) contra su puerto de consulta, 17777 por defecto. El servidor contesta nombre, escenario, jugadores conectados y plazas. Es el mismo mecanismo que usa el buscador de servidores.

Un detalle que ahorra disgustos: no conviene avisar al primer fallo. Una consulta puede perderse por un paquete UDP caído sin que el servidor tenga nada. Consultar cada minuto y esperar dos fallos seguidos antes de dar la alarma es lo que separa un aviso útil de un canal que nadie mira porque grita todo el rato. El precio es enterarse hasta un par de minutos tarde, que para un aviso de caída no cambia nada.

La contrapartida honesta: una caída que se arregla sola en segundos es invisible para este método. Para enterarse de esas hace falta algo dentro del juego que avise cuando la partida vuelve a empezar.

Un mensaje que se actualiza, no cien mensajes

Hay dos formas de tener el estado en Discord y se usan para cosas distintas. Un aviso es un mensaje nuevo por cada cosa que pasa (se cayó, volvió, alguien baneó): sirve para enterarse, y va en un canal del equipo. Un mensaje de estado es uno solo, fijado en un canal público, que se edita cada minuto con los datos de ahora: sirve para mirar, y es lo que quieren los jugadores.

Para el segundo, el truco es guardar el identificador del mensaje al publicarlo y después editarlo en vez de publicar otro. Si el mensaje se borra, la edición falla con un 404 y hay que volver a publicarlo. Sin eso, el canal se llena de estados viejos y deja de servir.

El límite de los webhooks, que se nota el día peor

Un webhook de Discord admite del orden de cinco peticiones cada dos segundos. Suena de sobra hasta el día en que el servidor reinicia con gente dentro y se juntan veinte avisos en el mismo instante: Discord empieza a rechazar, y si quien manda no reintenta, esos avisos se pierden sin dejar rastro — justo los del momento que querías entender.

Lo correcto es poner los avisos en una cola por webhook, dejar pasar una ráfaga corta y respetar el tiempo de espera que Discord devuelve al rechazar. Y que la cola sea por webhook, no global: un canal lento no tiene por qué frenar los avisos de otro servidor.