Ir a la guía

Documentación 9.6.24

Instalación paso a paso

Unos 20 minutos desde un servidor vacío hasta tener la protección funcionando y conectada al panel. Cada paso termina con lo que debes comprobar; si una comprobación falla, corrígela antes de seguir.

Antes de empezar#

Asegúrate de tener listo lo siguiente antes de empezar.

  • Una versión actual del servidor de FiveM (artifact) con OneSync activado (set onesync on). La mayoría de las comprobaciones del lado del servidor no funcionan sin OneSync, y el anticheat lo avisa al arrancar.
  • oxmysql instalado y en funcionamiento. El anticheat accede a la base de datos solo a través de oxmysql y nunca pide una contraseña de MySQL aparte.
  • Una cuenta del panel con un plan que incluya descargas.
  • Una copia de seguridad de la base de datos y de la carpeta resources. Si vas a actualizar, guarda también aparte tus carpetas configs, admins, editable, locales y bridge.
  • Una forma de subir archivos al servidor (FTP, el gestor de archivos de txAdmin o escritorio remoto) y una herramienta para ejecutar SQL (HeidiSQL o phpMyAdmin).

1. Añade tu servidor en el panel#

La clave de licencia pertenece a un solo servidor, así que la instalación empieza por definir ese servidor en el panel.

  1. Abre la página Servidores en el panel de cliente y elige Añadir servidor.
  2. Escribe el nombre del servidor y elige el framework (QBCore, Qbox o ESX) y el script de inventario.
  3. En Conexión a la base de datos, deja seleccionado Conectar a través del script. Este modo no necesita contraseña de MySQL ni un puerto público de la base de datos.
  4. Guarda, abre el servidor y copia el valor de la tarjeta Clave de licencia. Si tienes varios servidores, usa la clave propia de cada uno.
  5. Comprobación: el servidor aparece en la lista y has copiado su clave de licencia.

2. Descarga el paquete del servidor#

El paquete se genera para el servidor elegido en el momento de la descarga, así que puede tardar unos segundos.

El paquete contiene tosun-ac (el recurso principal, obligatorio), tosun-ac-guardian (un recurso pequeño que impide que se detenga el anticheat, recomendado) y, si viene incluido, tosun_render (el componente de vídeo de pruebas). La carpeta tosun-ac también contiene INSTALL.sql (un único archivo SQL que crea todas las tablas), KURULUM.txt (una nota breve de instalación) e INTEGRATION.md (la guía para otros scripts).

Descargar un paquete nuevo no actualiza un servidor en marcha. No cambia nada hasta que colocas los archivos y reinicias el recurso.

  1. Ve a la página Descargas del panel.
  2. Elige tu servidor y selecciona Descargar.
  3. Extrae el archivo ZIP en una carpeta de tu equipo.

3. Coloca los archivos#

Crea una carpeta llamada [tosun] dentro de la carpeta resources del servidor. En FiveM, las carpetas entre corchetes solo sirven para agrupar recursos. Copia dentro las carpetas tosun-ac, tosun-ac-guardian y, si viene incluida, tosun_render.

No cambies el nombre de las carpetas. Otros scripts acceden al anticheat como exports['tosun-ac'] y el Guardian vigila el nombre tosun-ac; si lo cambias, se rompen las integraciones y la protección.

No borres archivos dentro de las carpetas. La comprobación de integridad del paquete detecta los archivos que faltan o que se han modificado.

resources/
  [tosun]/
    tosun-ac/
    tosun-ac-guardian/
    tosun_render/

4. Crea las tablas de la base de datos#

El anticheat guarda los baneos, las detecciones, los registros y los ajustes en la base de datos del juego. Crea las tablas en la base de datos a la que se conecta oxmysql, la misma que contiene las tablas de tu framework.

INSTALL.sql no borra tus datos. Las tablas se crean con CREATE TABLE IF NOT EXISTS, así que las que ya existen se quedan como están.

El usuario de base de datos que usa oxmysql necesita permisos CREATE y ALTER sobre esta base de datos. Si tu hosting compartido no los permite, ejecuta tú el SQL desde el panel de control del hosting.

  1. Haz una copia de seguridad de la base de datos.
  2. En HeidiSQL, selecciona la base de datos del juego, abre tosun-ac/INSTALL.sql con File → Load SQL file y ejecútalo (F9). En phpMyAdmin, usa la pestaña Importar.
  3. Si prefieres la línea de comandos, usa el comando de abajo.
  4. Comprueba que ya existen las tablas ts_anticheat, ac_detections y admin_logs.
mysql -u USER -p DATABASE_NAME < INSTALL.sql

5. Añade las columnas que faltan en instalaciones antiguas#

Si vienes de una versión anterior, tus tablas existen, pero puede que les falten columnas nuevas. Si la consola muestra un error como Unknown column 'log_message' in 'field list', haz una copia de seguridad de la base de datos y ejecuta los comandos de abajo. Solo añaden las columnas que faltan y no tocan los datos existentes.

Esta sintaxis es para MariaDB. MySQL 8 no admite IF NOT EXISTS aquí: primero lista las columnas con SHOW COLUMNS FROM admin_logs; y añade solo las que falten con ADD COLUMN.

Si el error continúa, puede que la tabla admin_logs pertenezca a otro script. Envía a soporte la salida de SHOW CREATE TABLE admin_logs;

ALTER TABLE admin_logs
  ADD COLUMN IF NOT EXISTS log_message LONGTEXT NULL,
  ADD COLUMN IF NOT EXISTS log_playerid LONGTEXT NULL,
  ADD COLUMN IF NOT EXISTS log_playername LONGTEXT NULL,
  ADD COLUMN IF NOT EXISTS log_type VARCHAR(20) NOT NULL DEFAULT 'LOG',
  ADD COLUMN IF NOT EXISTS log_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  ADD COLUMN IF NOT EXISTS created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

ALTER TABLE ac_detections
  ADD COLUMN IF NOT EXISTS player_id INT NULL,
  ADD COLUMN IF NOT EXISTS player_name VARCHAR(100) NOT NULL DEFAULT '',
  ADD COLUMN IF NOT EXISTS license VARCHAR(100) NULL,
  ADD COLUMN IF NOT EXISTS steam VARCHAR(50) NULL,
  ADD COLUMN IF NOT EXISTS discord VARCHAR(50) NULL,
  ADD COLUMN IF NOT EXISTS ip VARCHAR(40) NULL,
  ADD COLUMN IF NOT EXISTS detection_type VARCHAR(60) NOT NULL DEFAULT '',
  ADD COLUMN IF NOT EXISTS detail TEXT NULL,
  ADD COLUMN IF NOT EXISTS reason VARCHAR(512) NOT NULL DEFAULT '',
  ADD COLUMN IF NOT EXISTS punishment VARCHAR(10) NOT NULL DEFAULT 'LOG',
  ADD COLUMN IF NOT EXISTS ban_id VARCHAR(20) NULL,
  ADD COLUMN IF NOT EXISTS screenshot VARCHAR(512) NULL,
  ADD COLUMN IF NOT EXISTS config VARCHAR(100) NULL,
  ADD COLUMN IF NOT EXISTS config_key VARCHAR(100) NULL,
  ADD COLUMN IF NOT EXISTS server_id INT NULL,
  ADD COLUMN IF NOT EXISTS created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

6. Configura server.cfg y los ajustes básicos#

Añade las líneas de abajo a server.cfg. Las líneas set deben ir antes de las líneas ensure, porque el recurso lee estos valores al arrancar. oxmysql y tu framework deben arrancar antes que el anticheat.

Sustituye qb-core por el recurso de tu framework (qbx_core o es_extended). Añade la línea de tosun_render solo si tu paquete lo incluye.

tosun_ac_license es el único ajuste obligatorio. La conexión de datos del panel y la edición de saldos de personajes conectados vienen activadas por defecto, así que no añadas líneas para ellas. Las líneas antiguas set tosun_db_bridge_enabled y set tosun_db_bridge_money_write se ignoran a partir del paquete 9.6.14 y puedes borrarlas. Los paquetes anteriores siguen necesitando esas líneas para activar la conexión, así que descarga el paquete actual desde el panel.

Ajustes opcionales: tosun_ac_panel_key (Ajustes del sitio → Clave API del AntiCheat; si está vacío, el anticheat busca esta clave por sí mismo en la base de datos) y tosun_ac_central_token (un token con el componente fivem de la página Tokens de API del AC; si está vacío, se usa la clave del panel).

Usa solo set para la licencia y las claves. setr envía el valor a los jugadores y sets lo publica en la lista pública de servidores. No pongas claves en configs/anticheat_config.lua, porque ese archivo también se envía a los jugadores. En lugar de server.cfg, puedes usar la tabla credentials de configs/anticheat_server.lua, que solo se carga en el servidor; si ambos están rellenos, manda server.cfg.

  • ts.Framework.framework: déjalo en "auto"; QBCore, Qbox y ESX se detectan automáticamente. Si la detección falla, pon "qb", "qbox", "esx" o "standalone".
  • ts.punishType: usa 'LOG' el primer día para que solo se registren las detecciones y cambia a 'BAN' cuando las hayas revisado en el panel.
  • ts.Debug: déjalo en false. Si está activado, se detecta a todo el mundo, incluido el staff.
  • Deja vacíos los campos webPanelKey, Central.token y licenseLock.licenseKey.
set onesync on

set tosun_ac_license "YOUR_LICENSE_KEY"

ensure oxmysql
ensure qb-core
# ... tus otros recursos de framework e inventario ...
ensure tosun_render
ensure tosun-ac
ensure tosun-ac-guardian

7. Da permisos al staff#

El staff queda exento de las detecciones y puede abrir el menú de administración dentro del juego. La forma recomendada son los permisos ACE en server.cfg.

tosun.admin cubre el menú de administración y la exención; tosunac.admin permite ejecutar tosunac_setup desde dentro del juego. Sustituye el valor de license por el tuyo.

Otra opción es añadir identificadores license:, steam: o discord: a la lista Admins de tosun-ac/admins/anticheat_admins.lua, o dar el permiso desde el panel.

Quien solo es admin de txAdmin queda exento de las detecciones, pero no puede abrir el menú dentro del juego; para el menú hace falta uno de los métodos anteriores.

Abre el menú en el juego con /ts o /tsmenu, o pulsa F7. Puedes cambiar la tecla con ts.AdminMenu.openKeyControl.

add_ace group.admin tosun.admin allow
add_ace group.admin tosunac.admin allow
add_principal identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx group.admin

8. Primer arranque y comprobación#

En la primera instalación, reinicia el servidor completo y no solo el recurso, para que los problemas de orden de arranque aparezcan enseguida.

  1. Reinicia el servidor y busca errores de tosun-ac en rojo en la consola.
  2. Ejecuta tosunac_doctor en la consola del servidor; muestra los ajustes arriesgados o en conflicto.
  3. Ejecuta tosunac_db_status para la conexión de datos del panel y tosunac_integration para las conexiones con otros scripts.
  4. Busca la línea [AC-Guardian] Aktif en la consola.
  5. Si estás seguro de que el servidor está limpio, ejecuta tosunac_setup. Primero busca backdoors y después añade los recursos limpios y los eventos del servidor a la lista de permitidos. No lo ejecutes si sospechas que hay un recurso infectado: da por fiable el estado actual.
  • El servidor aparece en línea en el panel y el número de jugadores se actualiza.
  • Al entrar con una cuenta de staff, /ts abre el menú.
  • Aparecen líneas nuevas en la sección de registros del panel.
  • Tras 10-15 minutos de juego con una cuenta normal, el panel no muestra detecciones inesperadas.
tosunac_doctor
tosunac_db_status
tosunac_integration
tosunac_setup

9. Comprueba la conexión de datos del panel#

Esta conexión viene activada por defecto. No tienes que añadir ninguna línea a server.cfg ni activarla en el panel. Los usuarios autorizados del panel pueden ver los datos de jugadores, personajes, inventarios, vehículos, baneos y detecciones cuando lo necesiten. La base de datos no se copia y tu contraseña de MySQL se queda en tu servidor. La conexión solo lee datos; la única excepción es la edición de saldos de personajes conectados, que se describe más abajo.

Cada página devuelve 25 registros, se ejecuta una sola solicitud a la vez y cada respuesta ocupa como máximo 64 KB. Mientras está inactiva, la conexión no ejecuta consultas en la base de datos del juego. Se admiten las tablas estándar de QBCore, Qbox y ESX; las tablas personalizadas no se mapean automáticamente.

La edición de saldos también viene activada por defecto. Solo pueden usarla los usuarios del panel con el rol de administrador o propietario (permiso de economía). No suma al saldo: fija el total de efectivo o banco en el valor que introduces. El personaje debe estar conectado. Si el saldo actual esperado no coincide, la solicitud se rechaza con stale_balance y no cambia nada. El panel muestra un resumen de confirmación antes de enviarla y cada solicitud se guarda en el registro de auditoría. Una solicitud con resultado incierto nunca se reintenta automáticamente; comprueba el saldo dentro del juego antes de volver a intentarlo.

Para el control manual avanzado, añade set tosun_db_bridge_manual "1" a server.cfg. Entonces tosun_db_bridge_enabled y tosun_db_bridge_money_write se leen de server.cfg como antes, y cada uno queda desactivado salvo que lo pongas en "1". Si activaste a propósito el espejo completo antiguo (ts.panelMirror.enabled = true en configs/anticheat_config.lua), la conexión se queda desactivada automáticamente para que el espejo siga funcionando.

El sitio web de su comunidad usa la misma conexión. Sin ajustes de base de datos del juego, las páginas Jugadores, Baneos y Detecciones leen del servidor de juego; no hace falta usuario de MySQL ni un puerto de base de datos abierto. En Base de datos y puente → «Sitio web de la comunidad solo con la licencia» se explica qué muestra este modo y cuándo conviene añadir la conexión SQL directa opcional.

  1. En el panel, abre Servidores → tu servidor → la tarjeta Tosun Connect. Mientras el recurso está en marcha, la tarjeta debería mostrar Connection ready (Conexión lista).
  2. También puedes comprobar la conexión con tosunac_db_status en la consola del servidor.
  3. Para desactivar la conexión en un servidor, elige Disable connection (Desactivar conexión) en la misma tarjeta. Así se detienen todas las lecturas y ediciones de saldo de ese servidor. Puedes volver a activarla desde la misma tarjeta.

10. Haz compatibles tus otros scripts#

Los scripts que teletransportan jugadores, dan armas o congelan jugadores pueden parecer trampas si no avisan al anticheat. Estos son los casos más comunes y cómo resolverlos:

Cualquier script puede llamar a MarkTeleport. AllowWeapon y SetExempt dan exenciones amplias, así que solo se aceptan desde recursos de confianza. Añade los nombres de los scripts que los usan, separados por comas, y conserva los nombres que ya estén en la lista.

  • Teletransporta a un jugador (casa, garaje, cárcel, hospital): llama a exports['tosun-ac']:MarkTeleport(src) justo antes de mover al jugador.
  • Abre un menú corto que congela al jugador (ropa, barbería): exports['tosun-ac']:MarkTeleport(src, 15000).
  • Da un arma sin ponerla en el inventario (arena, paintball): exports['tosun-ac']:AllowWeapon(src, "WEAPON_PISTOL", ms). Necesita un recurso de confianza.
  • Necesita que un jugador quede totalmente exento durante un tiempo (cinemática, respawn personalizado): exports['tosun-ac']:SetExempt(src, ms, "reason"). Necesita un recurso de confianza.
set tosun_ac_trusted_resources "my-clothing,my-housing,my-arena"

11. Actualización#

Actualiza durante un mantenimiento y conserva tus propios ajustes.

Si tu clave del panel estaba antes en anticheat_config.lua, puede que se haya enviado a los jugadores. Crea una clave nueva en el panel y actualiza también server.cfg; actualizar no revoca las claves antiguas.

  1. Descarga el paquete nuevo desde el panel.
  2. Haz una copia de seguridad de la carpeta tosun-ac del servidor y guarda aparte tus cambios en las carpetas configs, admins, editable, locales y bridge.
  3. Borra las carpetas antiguas tosun-ac, tosun-ac-guardian y tosun_render y pon las nuevas en su lugar. Si copias encima de las carpetas antiguas, se quedan archivos que ya se eliminaron.
  4. Vuelve a poner tus propios ajustes. Para conservar las líneas añadidas en la nueva versión, pasa solo los valores que cambiaste en vez de sustituir el archivo entero.
  5. Si las notas de la versión mencionan cambios en la base de datos, repite los pasos 4 y 5.
  6. Reinicia el servidor y repite las comprobaciones del paso 8.

12. Solución de problemas#

Los síntomas más comunes y cómo resolverlos:

Cuando pidas soporte, incluye el número de versión (version en fxmanifest.lua), el error completo de la consola y la salida de tosunac_doctor. Nunca compartas tu licencia ni tus claves API; soporte no te las pedirá.

  • Unknown column '…' in 'field list': las tablas son de una versión anterior. Ejecuta el SQL del paso 5.
  • Table '…' doesn't exist: INSTALL.sql no se importó o se importó en la base de datos equivocada. Impórtalo en la base de datos a la que se conecta oxmysql.
  • Errores de oxmysql y el anticheat se detiene en el primer segundo: pon ensure oxmysql por encima de ensure tosun-ac.
  • Aviso de licencia no válida: se puso la licencia de otro servidor, la línea set va después de ensure o se usó setr. Vuelve a copiar la licencia desde la tarjeta del servidor correcto.
  • El menú de administración no se abre: la persona solo es admin de txAdmin. Añade las líneas ACE del paso 7 y vuelve a entrar.
  • Se detecta a un jugador inocente: abre la detección en el panel para ver qué comprobación saltó y añade la llamada del paso 10 al script relacionado. Mientras tanto, pon el castigo de esa comprobación en LOG en el panel.
  • El servidor aparece desconectado en el panel: lee la salida de tosunac_doctor; si tosun_ac_panel_key está configurado, asegúrate de que coincide con la clave del panel.
  • No se puede descargar el paquete: lee el aviso de la página Descargas; puede que tu plan no incluya descargas o que el servidor no se haya añadido.

Primer acceso como propietario del sitio#

Seleccione su sitio alquilado en TosunDev y abra la administración. Si no ha iniciado sesión, se solicita acceso y después se vuelve a la administración. Para registro por correo use el correo y la contraseña vigentes al crear el sitio; cambios posteriores pueden no sincronizarse automáticamente.

  1. Confirme que dirección y alquiler corresponden al mismo sitio.
  2. Compruebe inicio de sesión y retorno a la administración correcta en una ventana privada.
  3. Vincule su propio servidor FiveM; contraseña web, licencia y contraseña MySQL son distintas.
  4. Use recuperación de cuenta y verificación de propiedad, nunca una contraseña compartida de administrador.

Copiar la licencia Tosun del servidor correcto#

Abra Servidores en TosunDev, seleccione su servidor FiveM y copie su licencia Tosun AC. tac_live_ no es la licencia Cfx.re, sv_licenseKey, el token de Discord ni la clave API del panel.

  1. Sustituya YOUR_SERVER_LICENSE entre las comillas en server.cfg.
  2. Coloque tosun_ac_license antes de ensure tosun-ac; use set, nunca setr ni sets.
  3. Como alternativa, rellene credentials.licenseKey en configs/anticheat_server.lua. Un convar no vacío tiene prioridad.
  4. No publique la licencia en capturas, chat, shared config ni archivos del cliente.
set tosun_ac_license "YOUR_SERVER_LICENSE"
# Alternative: configs/anticheat_server.lua
# credentials.licenseKey = "YOUR_SERVER_LICENSE"

Un único SQL en la base correcta#

tosun-ac/INSTALL.sql es el único punto de importación del nuevo ZIP. No importe otra copia antigua del mismo esquema. Corresponde a la base del juego utilizada por FiveM/oxmysql, no a la base de cuentas y temas del sitio alquilado. Las columnas antiguas faltantes se reparan antes de insertar valores predeterminados; se conservan bloqueos y ajustes propios.

  1. Haga una copia de la base del juego y confirme su nombre.
  2. Importe solo INSTALL.sql en HeidiSQL/phpMyAdmin o indique explícitamente la base en mysql.
  3. tosunac_db_check comprueba una consulta; tosunac_db_status muestra el puente. El puente está activo por defecto y no requiere ninguna línea en server.cfg. enabled=false es correcto en modo manual (set tosun_db_bridge_manual "1") sin tosun_db_bridge_enabled "1", o si el espejo completo antiguo (ts.panelMirror.enabled = true en configs/anticheat_config.lua) se activó a propósito; una licencia no crea la conexión MySQL.
  4. La conexión del panel (Tosun Connect) y la edición de saldo en línea están activas por defecto. No añada tosun_db_bridge_enabled ni tosun_db_bridge_money_write a server.cfg; desde el paquete 9.6.14 las líneas antiguas se ignoran y pueden borrarse (los paquetes anteriores las siguen necesitando hasta que instale el paquete actual). Solo los usuarios del panel con rol admin u owner pueden fijar saldos: el personaje debe estar conectado, el saldo esperado debe coincidir (si no, stale_balance y no cambia nada), el panel muestra un resumen para confirmar antes de enviar, cada solicitud queda en el registro de auditoría y un resultado incierto nunca se reintenta automáticamente; revise antes el saldo en el juego. Fija el total, no suma. Para desactivar toda la conexión en un servidor (se detienen todas las lecturas del panel y todas las ediciones de saldo): Panel → Servidores → el servidor → tarjeta Tosun Connect → Disable connection; puede volver a activarla desde la misma tarjeta. Guarde la contraseña del juego únicamente en el servidor.
mysql -u YOUR_DB_USER -p YOUR_GAME_DATABASE < tosun-ac/INSTALL.sql

# txAdmin console:
tosunac_db_check
tosunac_db_status

Del ZIP al inicio en txAdmin#

Coloque tosun-ac, tosun-ac-guardian y tosun_render al mismo nivel dentro de resources, cada uno con fxmanifest.lua en su raíz. discord-bot es una aplicación Node.js. El nuevo manifiesto Render declara únicamente gta5; no conserve common junto con gta5.

  1. Mantenga mysql_connection_string; inicie oxmysql y el framework/inventario existentes antes de Render, AC y Guardian.
  2. Ejecute refresh en txAdmin y siga el orden indicado. Se admite el alias tosun-render; la carpeta sigue siendo tosun_render.
  3. tosun_render_status debe indicar started y archivos disponibles. Pruebe también la captura con un jugador.
  4. Revise el primer error y compruebe la dependencia, carpeta o licencia del servidor seleccionado.
set tosun_ac_license "YOUR_SERVER_LICENSE"

ensure oxmysql
# Start your existing framework/inventory here.
ensure tosun_render
ensure tosun-ac
ensure tosun-ac-guardian

# txAdmin console:
tosun_render_status
tosunac_doctor
tosunac_db_check
tosunac_db_status

Comprobar permisos y revocación#

ACE, identificadores de administradores y permisos del panel se verifican en el servidor. all no es un identificador ni concede permiso. allowedIds admite license:..., discord:... o fivem:... completos de los identificadores del jugador.

  1. Conceda solo lo necesario a un administrador de prueba.
  2. Retire el permiso del panel y pruebe con el mismo jugador; el nuevo sondeo predeterminado ronda cinco segundos.
  3. Compruebe también permisos independientes ACE/admins.lua. La telemetría de jugadores conectados no concede acceso.
  4. Un jugador normal debe permanecer bloqueado; use datos de prueba para acciones sensibles.
ts.AdminMenu.allowedIds = {
    "license:YOUR_EXACT_PLAYER_IDENTIFIER",
    "discord:YOUR_DISCORD_USER_ID"
}
# Examples are placeholders, not grants.

Instalar el bot Discord como servicio separado#

discord-bot funciona con Node.js, no con ensure. Cree su propia aplicación en Discord Developer Portal y obtenga Application ID, Guild ID e identificadores de roles/canales. Mantenga el token en un archivo de entorno privado.

La cuenta de base del sitio está restringida por defecto al localhost del proveedor. Un bot en otra máquina FiveM no obtiene acceso automático. Use un servicio administrado en el host del sitio o una conexión privada aprobada solo para su cuenta. Nunca use root del proveedor ni exponga MySQL públicamente. Verifique por separado los comandos antiguos que consultan tablas del juego.

Como propietario, guarda token, Client ID y Guild ID en Administración del sitio → Bot de Discord. Descarga el archivo privado con Download private bot setup y guárdalo como .env en tu carpeta del bot. Contiene claves sólo del sitio elegido, a diferencia del ejemplo vacío del ZIP. No lo compartas ni lo subas al control de versiones.

  1. Instale una versión LTS compatible de Node.js 22 o superior; prepare los ejemplos con el instalador.
  2. Invite con los ámbitos bot y applications.commands y permisos necesarios.
  3. Configure la base del sitio y la API HTTPS. La clave privada de comandos se comparte solo entre este bot y sitio; no es la licencia ni la clave principal SaaS.
  4. Ejecute npm run doctor antes de iniciar. Compruebe luego estado conectado y roles; doctor no inicia sesión en Discord.
cd discord-bot
sh setup.sh
# Configure the private .env and site bot settings first.
npm run doctor
npm start

Evitar análisis innecesarios tras reiniciar#

En cada arranque se comprueban huellas SHA256 del contenido. Los recursos sin cambios en archivos o reglas reutilizan resultados autenticados en el KVP del servidor, sin repetir análisis costosos de firmas y eventos. Los cambios en archivos, excepciones o reglas invalidan el análisis correspondiente. Las huellas siguen leyendo archivos; no se garantiza un valor fijo de resmon.

  1. Conserva la caché KVP durante actualizaciones normales; los registros dañados o no verificables se analizan de nuevo.
  2. El catálogo inicial recoge nombres literales de eventos Lua/JS. Los nombres dinámicos, archivos ilegibles o escrow y DLL no se certifican como completamente analizados.
  3. La instalación automática manual espera al análisis de seguridad. No aprueba recursos incompletos, sospechosos, modificados o con tiempo agotado.
  4. Prueba acceso de jugadores, juego normal y acciones administrativas en un servidor de pruebas; evalúa resmon junto con jugadores y carga del framework.