Saltar al contenido principal

Discord

Vinculación de cuentas, relé de chat, canal de consola, informes de errores y webhooks entre tu servidor y Discord.

Gratuitasv0.13Integraciones
RequiereTypeWriter0.9Basic extensionPaper1.21.6+opcionalShopsopcional

Descripción general​

Discord conecta tu servidor de Minecraft con tu servidor de Discord. Todo lo que va a Discord usa un único objeto reutilizable: un destino de webhook (la URL de un canal de Discord, más un nombre y un avatar), declarado una vez y referenciado por todas las funciones. Para cambiar de canal, editas una sola entrada.

La extensión cubre seis tareas: vinculación de cuentas con sincronización de rangos y roles, retransmisión bidireccional del chat, un canal de consola para ejecutar comandos del servidor desde Discord, un sistema de reportes de errores dentro del juego, anuncios de transacciones de tiendas y webhooks publicados cuando cambia un fact de TypeWriter. Cada función es su propia entrada, así que solo configuras lo que usas. Discord es opcional para el resto de TypeWriter: sin un manifest de vinculación, no se inicia ningún bot de Discord.

Esta extensión se llamó Community hasta la versión 0.9. Los nombres de las entradas no cambiaron, y las páginas escritas antes del cambio de nombre se convierten en el primer inicio.

Características​

  • Destinos de webhook — una entrada por canal de Discord (URL, nombre de usuario, avatar, menciones de rol permanentes), compartida por todas las funciones.
  • Vinculación de cuentas — los jugadores ejecutan un comando para obtener un código, lo escriben en un canal de Discord y sus cuentas quedan vinculadas; los roles de Discord siguen a sus grupos de Minecraft.
  • Sincronización del chat — el chat de Minecraft y los mensajes de entrada y salida van a Discord, y los mensajes de Discord pueden volver al juego.
  • Canal de consola — el staff ejecuta comandos del servidor desde un canal de Discord, con lista de comandos, restricción por rol y un archivo de registro.
  • Reportes de errores — un formulario de diálogo dentro del juego, almacenado con seguimiento de estado, publicado en Discord como embed o como hilo de foro, y gestionable con comandos slash de Discord.
  • Anuncios de tiendas — compras y ventas publicadas en el canal que indica cada tienda (requiere la extensión Shops).
  • Webhooks de facts — un mensaje cuando cambia un fact de TypeWriter, por jugador, por grupo o de forma global.
  • Migración automática — las páginas anteriores a la 0.9 con webhooks integrados se convierten en destinos de webhook.

Instalación​

  1. Crea un webhook de Discord en el canal que quieras: en Discord, Channel settings, Integrations, Webhooks, New Webhook, y copia su URL. Esto basta para webhooks, reportes de errores y chat unidireccional.
  2. Para la vinculación de cuentas, la retransmisión del chat de Discord a Minecraft, el canal de consola y los comandos slash, necesitas además un bot de Discord. Créalo en el Discord Developer Portal, copia su token, invítalo a tu servidor y activa Server Members Intent y Message Content Intent en Bot. La extensión solicita estos intents y no puede conectarse sin ellos.
  3. Asegúrate de que la extensión Basic de TypeWriter está instalada (consulta la documentación de TypeWriter).
  4. Coloca el JAR de Discord en plugins/Typewriter/extensions/ y reinicia el servidor. El JAR ya incluye la librería JDA que usa el bot.
  5. Para los anuncios de tiendas, instala también la extensión Shops.

Los reportes de errores usan las pantallas de diálogo de Paper, que requieren Paper 1.21.6 o posterior.

Primeros pasos​

Vincula cuentas y publica los reportes de errores en el canal de tu staff:

  1. En el panel web de TypeWriter, abre una página de manifest y añade una Webhook Definition. Pega la URL del canal en url y, opcionalmente, un username y un avatarUrl.
  2. Añade un artefacto Discord Link Storage en la misma página: almacena los vínculos y los códigos pendientes.
  3. Añade un Discord Link Manifest. Establece storage con el artefacto, webhook con tu destino, activa bot y rellena botToken y guildId. Establece verificationChannelId con el canal de Discord donde los jugadores escribirán su código.
  4. Opcional: rellena roleMappings para dar roles de Discord según el grupo de Minecraft, por ejemplo minecraftGroup vip y el ID del rol de Discord en discordRoleId.
  5. Añade un artefacto Bug Report Sequence Storage y después un Bug Report Manifest. Establece commandName (por ejemplo bugreport), sequenceStorage, serverName y al menos una entrada en categories, con un input cuya key sea description. En webhook, establece destination con tu destino.
  6. Publica. Un jugador ejecuta /discordlink para obtener un código, lo escribe en el canal de verificación y queda vinculado. Un jugador ejecuta /bugreport para abrir el formulario.

Para obtener el ID de un canal o rol de Discord, activa el Developer Mode en los ajustes avanzados de Discord, haz clic derecho en el canal o rol y elige Copy ID.

Cómo funciona​

El envío usa un webhook, sin bot. Recibir desde Discord requiere el bot, que se configura únicamente en el Discord Link Manifest. Sin un bot activado, la retransmisión del chat de Discord a Minecraft, el canal de consola y los comandos slash de reportes de errores no hacen nada.

Un destino vacío o desactivado es la forma normal de no enviar nada. Una referencia a un destino que ya no existe se registra como Destination '…' not found; message dropped.

Configuración​

La extensión se configura en el panel web. Los datos de vinculación y los reportes de errores se almacenan en las entradas de artefacto que creas. Además, escribe lo siguiente:

ArchivoContenido
logs/discord-console.logComandos ejecutados desde el canal de consola (relativo a la raíz del servidor; la ruta es un campo de la entrada).
backup/community-webhook-v1/Copia de seguridad de las páginas reescritas por la migración desde Community, en la carpeta de Typewriter.

Migración desde Community​

Las páginas escritas antes de la 0.9 guardaban el webhook dentro de cada manifest. En el primer inicio, la extensión crea una Webhook Definition por cada destino distinto, apunta los manifests hacia ella y antes hace una copia de seguridad de cada página reescrita. Después te pide que ejecutes /typewriter reload una vez.

Comandos​

Los comandos siguientes los registran las entradas de manifest. Sus nombres son campos de esas entradas; se muestran los valores por defecto.

ComandoDescripción
/discordlinkGenera un código de verificación, o repite el pendiente. Solo jugadores.
/discordlink unlinkElimina el vínculo y los roles de Discord asociados.
/bugreportAbre la selección de categoría y después el formulario del reporte.
/bugreport mineLista tus propios reportes.
/bugreport list [player]Lista los reportes, opcionalmente los de un jugador. Requiere el permiso de administrador.
/bugreport status <reportId> <statusId>Cambia el estado de un reporte. Requiere el permiso de administrador.
/bugreport delete <reportId>Elimina un reporte. Requiere el permiso de administrador.

Con discordCommands activado, el manifest de reportes de errores registra también un comando slash en tu servidor de Discord, con el nombre de commandName, con list, status y delete. Solo pueden usarlo los administradores de Discord o los miembros con un rol de discordAdminRoleIds.

Registrar estos comandos slash sustituye a los demás comandos slash que este bot tenga en el servidor.

Permisos​

Todos los permisos son campos de las entradas y se pueden cambiar. Valores por defecto:

PermisoConcede
discordlink.notifyRecibir un mensaje cuando un jugador vincula una cuenta (notifyPermission; vacío lo desactiva).
bugreport.notifyRecibir un mensaje cuando se envía un reporte (notifyPermission).
bugreport.adminUsar /bugreport list, status y delete (adminPermission).
group.<group>Coincide con una asignación de rol: la primera asignación cuyo grupo se cumple es el rol de Discord del jugador (groupPermissionFormat).

Entradas​

9 entradas, generadas a partir del código fuente de la extensión.

Eventos1
Comandos2
Artefactos2
Manifiestos4

Solución de problemas​

El bot no se conecta. La consola muestra Failed to connect Discord Bot o Discord Bot is disabled or token is missing. Comprueba que bot está activado con el botToken correcto y que los intents Server Members y Message Content están activados en el Developer Portal. El guildId debe ser el ID del servidor: si es incorrecto, verás guild not found.

/discordlink dice que la vinculación no está configurada. No hay ningún Discord Link Manifest en una página publicada. La consola muestra discord_link_manifest not found; Discord link is disabled.

El código escrito en Discord se ignora. Los jugadores deben escribir solo el código, exactamente codeLength letras o dígitos, en el canal indicado en verificationChannelId. El bot reacciona con una marca de verificación o una cruz. Se rechaza un código que ha caducado (codeValidityMinutes) o una cuenta de Discord que ya está vinculada. Un jugador ya vinculado también se rechaza, salvo que autoOverwriteExistingLink esté activado.

El comando de reportes de errores dice que no hay categorías. categories está vacío por defecto. Añade al menos una categoría. Un reporte solo se acepta cuando su input title o description está rellenado, y el formulario añade el input title por sí mismo, así que añade un input con la clave description para el mensaje.

Discord rechaza los reportes de errores. threadNameTemplate está pensado para canales de foro. Si tu destino es un canal de texto normal, vacía la plantilla. La consola muestra Webhook '…' rejected with HTTP … con el motivo.

Los comandos de consola no hacen nada. El canal de consola necesita el bot, y el ID de canal en discordChannelId debe coincidir. Un comando bloqueado recibe una reacción de prohibido y un miembro no autorizado, una cruz. Por defecto, commandList es una lista negra que contiene stop, restart y reload; cambia a blacklistIsWhitelist y restringe allowedRoles para una configuración más segura.

Las ventas de tiendas no se anuncian. Necesitas un Shop Notification Manifest (sin él, no se envía nada), y la definición de la tienda debe indicar el destino en su notificationWebhookId, usando el ID de tu entrada Webhook Definition. La extensión Shops debe estar instalada.

Extensiones relacionadas​

  • Shops — sus tiendas indican la Webhook Definition que anuncia sus transacciones.