Crea un bot de Discord que monitorice un servidor de Minecraft
En este tutorial crearás un bot pequeño con discord.js que consulta un servidor de Minecraft y mantiene un único embed de Discord con su estado. Solo edita el mensaje cuando algo cambia, así que no llena el canal con actualizaciones repetidas.
El bot usa GET /service-instances/{id}/resources y GET /service-instances/{id}/external-access de la referencia de la API. Las convenciones que comparten todas las llamadas están en Usar la API de Zaroz.
Qué hace el bot terminado
Consulta un servicio cada 60 segundos.
Muestra el estado general y el del servicio principal de Minecraft.
Incluye la dirección pública cuando la API la devuelve.
Cambia de color según esté funcionando, arrancando, detenido o fallando.
Encuentra su mensaje anterior después de reiniciarse y lo edita.
Muestra errores de la API en el mismo embed sin revelar el token.
Para alojarlo como servicio de Bot de Discord en Zaroz, sube package.json, package-lock.json e index.js, configura las cinco variables en el entorno del servicio y usa npm start como comando de inicio. No subas .env.
5. Comprueba el mínimo privilegio
El bot debe poder leer GET /service-instances/{id}/resources, pero POST /service-instances/{id}/restart debe devolver 403. Es lo esperado: una integración pública de estado no debería poder reiniciar el servidor.
Si más adelante añades un comando de reinicio, concede services.power solo a este servicio, limita el comando de Discord a roles de confianza y registra quién lo ejecutó.
Solución de problemas
El embed muestra HTTP 401
Sustituye un token caducado o revocado. Comprueba que copiaste el token completo y que el valor del entorno no contiene comillas.
El embed muestra HTTP 403
Concede services.read para este servicio exacto. El propietario también debe seguir pudiendo ver el servicio.
Crea un mensaje nuevo tras cada reinicio
Concede Read Message History y mantén el mensaje de estado entre los 50 más recientes del canal.
No aparece la dirección
La API solo incluye una dirección cuando el provision principal expone una. El monitor de estado sigue funcionando sin ella.
¿Cada cuánto debería consultar?
Sesenta segundos es un buen valor. El ejemplo impone un mínimo de 15 segundos. Consulta la referencia OpenAPI antes de aumentar el volumen de peticiones.