Saltar al contenido
Blog

Logs de FiveM: dónde fallan los webhooks de Discord y qué usar

Los logs con webhooks de Discord chocan con límites, no se buscan por jugador y pierden los adjuntos. Cómo registrar con ox_lib y convertirlo en pruebas.

Por Termi

5 min de lectura
  • Logs
  • ox_lib
  • Discord
  • Evidence
En esta página

La mayoría de los servidores de FiveM registran igual: un canal de Discord por categoría, como dinero, muertes y comandos de admin, y una URL de webhook en cada script. El primer mes funciona. Luego llega una apelación de ban por algo de hace tres semanas, y alguien baja por miles de embeds buscando una sola licencia. Esta guía explica dónde falla el registro en Discord, cómo enviar logs estructurados con ox_lib y cómo convertirlos en pruebas que puedas enseñar al jugador.

Dónde falla el registro en Discord

  • Límites de frecuencia. Discord limita la velocidad a la que un webhook puede publicar. En una tarde con mucha gente, con cada transferencia, muerte y movimiento de objeto registrados, las peticiones vuelven con 429 Too Many Requests, y un script que no reintenta pierde esa línea.
  • Sin vista por jugador. Para encontrar todo lo de un jugador hay que buscar en cada canal por separado y recomponer el orden a mano.
  • Los adjuntos caducan. Las capturas publicadas por un webhook reciben enlaces firmados que dejan de funcionar fuera de Discord, así que un enlace copiado en un ticket se rompe.
  • Cualquiera con la URL puede publicar. La URL de un webhook funciona como una contraseña. Si está en un script del cliente, los jugadores pueden leerla y publicar lo que quieran en tu canal de logs.
  • Todo el que lee lo ve todo. Los permisos de un canal son todo o nada, así que un moderador en prueba que puede leer el canal de dinero ve todos los identificadores registrados ahí.

Envía logs estructurados con ox_lib

ox_lib, que la mayoría de los servidores ESX, QBCore y Qbox ya usan, tiene un logger del lado del servidor. Una llamada donde ocurre la acción sustituye a una petición de webhook:

server.lua
RegisterNetEvent('bank:transfer', function(to, amount)
    local src = source
    if not Bank.transfer(src, to, amount) then return end
    lib.logger(src, 'money.transfer', ('sent $%d to %s'):format(amount, to), 'amount:' .. amount, 'to:' .. to)
end)

Los argumentos son el ID de servidor del jugador, un nombre de evento, un mensaje y cuantas etiquetas clave:valor quieras. ox_lib añade por sí solo el nombre y los identificadores del jugador a cada línea, agrupa las líneas en lotes y las envía al servicio indicado en un convar:

server.cfg
set ox:logger "fivemanage"
set fivemanage:key "fd_live_…"
set fivemanage:dataset "city"

ox_lib incluye tres servicios: Datadog, Grafana Loki y Fivemanage. Fivemanage guarda los logs 15 días en el plan gratuito y en el de 8 $, 90 días en Pro por 24 $ y 180 días en Network por 79 $.

Envíalos a FiveDock

FiveDock acepta tal cual los lotes que envía el logger de Fivemanage de ox_lib. ox_lib guarda esa dirección en una línea de imports/logger/providers/fivemanage.lua. Apúntala a FiveDock y usa un token de API de FiveDock con el scope logs:write como fivemanage:key:

ox_lib/imports/logger/providers/fivemanage.lua
endpoint = 'https://api.fivedock.dev/api/logs/batch',

Actualizar ox_lib reemplaza ese archivo, así que vuelve a cambiar la línea después de cada actualización o guárdala en tu propia copia de ox_lib.

Cada línea llega a la Black Box con la licencia, el ID de Discord y el nombre del jugador. Al lado está todo lo que el agente de FiveDock registra por su cuenta: errores de scripts, reportes desde el juego y capturas.

De los logs a las pruebas

En Metro, la Black Box convierte esas líneas en una cronología por jugador: todas las líneas registradas de una licencia, desde la conexión hasta la transferencia y la captura, en orden y al segundo. Un botón convierte un tramo en un paquete de pruebas, un enlace que puedes darle al jugador que acabas de banear.

La búsqueda abarca a todos los jugadores, por licencia, matrícula o palabra, y puedes guardar una búsqueda que haces cada noche. Las alertas de economía vigilan las mismas líneas en todos los planes: una transferencia por encima de un umbral, o dinero ganado demasiado rápido, se publica en Discord. En Metro la alerta también hace una copia de seguridad en ese segundo, y las alertas de objetos duplicados detectan el mismo número de serie en dos inventarios.

El enmascarado por rol de Metro mantiene las direcciones reales y los datos de pago lejos de los aprendices, algo que un canal de Discord no puede hacer.

Cuánto tiempo guardar los logs

Las apelaciones suelen llegar en unas semanas tras un ban. Guarda al menos 30 días, que es lo que ofrece FiveDock City por 12 € al mes. Free guarda 7 días, y Metro 90 días más un archivo.

Comparado con Fivemanage

Fivemanage guarda los logs más tiempo por el dinero: 90 días en Pro por 24 $, 180 días en Network. Un plan de FiveDock incluye además alojamiento de archivos, copias de seguridad de la base de datos, reportes y cuentas de staff, así que compara la factura completa. Nuestra comparativa de alojamiento pone ambos lado a lado.

Preguntas frecuentes

¿Cómo registro las acciones de los jugadores en un servidor de FiveM?

Llama a lib.logger de ox_lib en el script de servidor donde ocurre la acción, con el ID de servidor del jugador, un nombre de evento y un mensaje. ox_lib añade los identificadores del jugador y envía lotes al servicio definido en ox:logger. FiveDock acepta el formato de Fivemanage de ox_lib y archiva cada línea bajo el jugador, así que el staff puede leer el historial de un jugador en orden.

¿Sirven los webhooks de Discord para los logs de FiveM?

Como canal de avisos para un servidor pequeño, sí. Como registro se quedan cortos: los webhooks tienen límites de frecuencia, los enlaces de los adjuntos caducan, nada muestra a un jugador a través de varios canales, y cualquiera que encuentre la URL de un webhook puede publicar en él.

¿Cuánto tiempo debe guardar los logs un servidor de FiveM?

Al menos lo que dure tu plazo de apelación, normalmente de dos a cuatro semanas. 30 días bastan para la mayoría de los servidores. Guarda 90 si gestionas solicitudes de reembolso o investigaciones largas.

¿Puedo usar el logger de ox_lib sin Fivemanage?

Sí. Pon ox:logger en datadog o loki para esos servicios, o deja fivemanage y cambia su dirección por la de FiveDock, que acepta los mismos lotes.

Todos los artículos