Aller au contenu principal

Discord

Liaison de comptes, relais de chat, canal console, rapports de bugs et webhooks entre votre serveur et Discord.

Gratuitesv0.13Intégrations
NécessiteTypeWriter0.9Basic extensionPaper1.21.6+facultatifShopsfacultatif

Vue d'ensemble​

Discord connecte votre serveur Minecraft à votre serveur Discord. Tout ce qui part vers Discord utilise un seul objet réutilisable : une destination webhook (l'URL d'un salon Discord, plus un nom et un avatar), déclarée une fois et référencée par chaque fonctionnalité. Pour changer de salon, vous modifiez une seule entrée.

L'extension couvre six usages : la liaison de comptes avec synchronisation des rangs vers les rôles, le relais de chat bidirectionnel, un salon console pour exécuter des commandes serveur depuis Discord, un système de rapports de bugs en jeu, les annonces de transactions de boutique, et des webhooks publiés lorsqu'un fact TypeWriter change. Chaque fonctionnalité est sa propre entrée : vous ne configurez donc que ce que vous utilisez. Discord est facultatif pour le reste de TypeWriter : sans manifest de liaison, aucun bot Discord n'est démarré.

Cette extension s'appelait Community jusqu'à la version 0.9. Les noms d'entrées n'ont pas changé, et les pages écrites avant le renommage sont converties au premier démarrage.

Fonctionnalités​

  • Destinations webhook — une entrée par salon Discord (URL, nom d'utilisateur, avatar, mentions de rôles permanentes), partagée par toutes les fonctionnalités.
  • Liaison de comptes — les joueurs exécutent une commande pour obtenir un code, le saisissent dans un salon Discord, et leurs comptes sont liés ; les rôles Discord suivent leurs groupes Minecraft.
  • Synchronisation du chat — le chat Minecraft et les messages de connexion/déconnexion vont vers Discord, et les messages Discord peuvent revenir dans le jeu.
  • Salon console — le staff exécute des commandes serveur depuis un salon Discord, avec une liste de commandes, une restriction par rôle et un fichier de journal.
  • Rapports de bugs — un formulaire de dialogue en jeu, stocké avec suivi de statut, publié sur Discord sous forme d'embed ou de fil de forum, et gérable depuis les commandes slash de Discord.
  • Annonces de boutique — achats et ventes publiés dans le salon que chaque boutique désigne (nécessite l'extension Shops).
  • Webhooks de facts — un message lorsqu'un fact TypeWriter change, par joueur, par groupe ou globalement.
  • Migration automatique — les pages antérieures à la 0.9 avec des webhooks intégrés sont converties en destinations webhook.

Installation​

  1. Créez un webhook Discord dans le salon voulu : dans Discord, Paramètres du salon, Intégrations, Webhooks, Nouveau webhook, puis copiez son URL. Cela suffit pour les webhooks, les rapports de bugs et le chat à sens unique.
  2. Pour la liaison de comptes, le relais de chat de Discord vers Minecraft, le salon console et les commandes slash, il vous faut aussi un bot Discord. Créez-le dans le Discord Developer Portal, copiez son token, invitez-le sur votre serveur, et activez le Server Members Intent et le Message Content Intent dans Bot. L'extension demande ces intents et ne peut pas se connecter sans eux.
  3. Assurez-vous que l'extension Basic de TypeWriter est installée (voir la documentation TypeWriter).
  4. Placez le JAR de Discord dans plugins/Typewriter/extensions/ et redémarrez le serveur. Le JAR contient déjà la bibliothèque JDA utilisée pour le bot.
  5. Pour les annonces de boutique, installez aussi l'extension Shops.

Les rapports de bugs utilisent les écrans de dialogue de Paper, qui nécessitent Paper 1.21.6 ou plus récent.

Premiers pas​

Liez les comptes et publiez les rapports de bugs dans votre salon du staff :

  1. Dans le panel web TypeWriter, ouvrez une page manifest et ajoutez une Webhook Definition. Collez l'URL du salon dans url, et éventuellement un username et un avatarUrl.
  2. Ajoutez sur la même page un artefact Discord Link Storage : il stocke les liaisons et les codes en attente.
  3. Ajoutez un Discord Link Manifest. Définissez storage sur l'artefact, webhook sur votre destination, activez bot, et renseignez botToken et guildId. Définissez verificationChannelId sur le salon Discord où les joueurs saisiront leur code.
  4. Facultatif : renseignez roleMappings pour attribuer des rôles Discord selon le groupe Minecraft, par exemple minecraftGroup vip et l'ID du rôle Discord dans discordRoleId.
  5. Ajoutez un artefact Bug Report Sequence Storage, puis un Bug Report Manifest. Définissez commandName (par exemple bugreport), sequenceStorage, serverName, et au moins une entrée dans categories, avec un champ de saisie dont la key est description. Dans webhook, définissez destination sur votre destination.
  6. Publiez. Un joueur exécute /discordlink pour obtenir un code, le saisit dans le salon de vérification, et il est lié. Un joueur exécute /bugreport pour ouvrir le formulaire.

Pour obtenir l'ID d'un salon ou d'un rôle Discord, activez le mode développeur dans les paramètres avancés de Discord, puis faites un clic droit sur le salon ou le rôle et choisissez Copier l'identifiant.

Fonctionnement​

L'envoi utilise un webhook, sans bot. La réception depuis Discord nécessite le bot, qui n'est configuré que dans le Discord Link Manifest. Sans bot activé, le relais de chat de Discord vers Minecraft, le salon console et les commandes slash de rapports de bugs ne font rien.

Une destination vide ou désactivée est la façon normale de ne rien envoyer. Une référence à une destination qui n'existe plus est journalisée sous la forme Destination '…' not found; message dropped.

Configuration​

L'extension se configure dans le panel web. Les données de liaison et les rapports de bugs sont stockés dans les entrées d'artefacts que vous créez. En plus de cela, elle écrit :

FichierContenu
logs/discord-console.logCommandes exécutées depuis le salon console (relatif à la racine du serveur ; le chemin est un champ de l'entrée).
backup/community-webhook-v1/Sauvegarde des pages réécrites par la migration depuis Community, dans le dossier Typewriter.

Migration depuis Community​

Les pages écrites avant la 0.9 stockaient le webhook dans chaque manifest. Au premier démarrage, l'extension crée une Webhook Definition par destination distincte, y fait pointer les manifests, et sauvegarde d'abord chaque page réécrite. Elle vous demande ensuite d'exécuter /typewriter reload une fois.

Commandes​

Les commandes ci-dessous sont enregistrées par les entrées manifest. Leurs noms sont des champs de ces entrées ; les valeurs par défaut sont indiquées.

CommandeDescription
/discordlinkGénère un code de vérification, ou répète celui en attente. Joueurs uniquement.
/discordlink unlinkSupprime la liaison et les rôles Discord associés.
/bugreportOuvre la sélection de catégorie, puis le formulaire de rapport.
/bugreport mineListe vos propres rapports.
/bugreport list [player]Liste les rapports, éventuellement ceux d'un seul joueur. Nécessite la permission admin.
/bugreport status <reportId> <statusId>Change le statut d'un rapport. Nécessite la permission admin.
/bugreport delete <reportId>Supprime un rapport. Nécessite la permission admin.

Avec discordCommands activé, le manifest de rapports de bugs enregistre aussi une commande slash dans votre serveur Discord, nommée comme commandName, avec list, status et delete. Seuls les administrateurs Discord, ou les membres ayant un rôle dans discordAdminRoleIds, peuvent l'utiliser.

L'enregistrement de ces commandes slash remplace les autres commandes slash que ce bot possède dans le serveur.

Permissions​

Toutes les permissions sont des champs des entrées et peuvent être modifiées. Valeurs par défaut :

PermissionAutorise
discordlink.notifyRecevoir un message lorsqu'un joueur lie un compte (notifyPermission ; vide, il est désactivé).
bugreport.notifyRecevoir un message lorsqu'un rapport est soumis (notifyPermission).
bugreport.adminUtiliser /bugreport list, status et delete (adminPermission).
group.<group>Correspond à une association de rôle : la première association dont le groupe est validé donne son rôle Discord au joueur (groupPermissionFormat).

Entrées​

9 entrées, générées depuis la source de l'extension.

Événements1
Commandes2
Artefacts2
Manifestes4

Dépannage​

Le bot ne se connecte pas. La console affiche Failed to connect Discord Bot ou Discord Bot is disabled or token is missing. Vérifiez que bot est activé avec le bon botToken et que les intents Server Members et Message Content sont activés dans le Developer Portal. Le guildId doit être l'ID du serveur : s'il est erroné, vous voyez guild not found.

/discordlink indique que la liaison n'est pas configurée. Il n'y a pas de Discord Link Manifest sur une page publiée. La console affiche discord_link_manifest not found; Discord link is disabled.

Le code saisi sur Discord est ignoré. Les joueurs doivent saisir uniquement le code, composé d'exactement codeLength lettres ou chiffres, dans le salon défini dans verificationChannelId. Le bot réagit avec une coche ou une croix. Un code expiré (codeValidityMinutes), ou un compte Discord déjà lié, est refusé. Un joueur déjà lié est également refusé, sauf si autoOverwriteExistingLink est activé.

La commande de rapport de bug indique qu'il n'y a pas de catégories. categories est vide par défaut. Ajoutez au moins une catégorie. Un rapport n'est accepté que si son champ title ou description est rempli, et le formulaire ajoute lui-même le champ title : ajoutez donc un champ avec la clé description pour le message.

Les rapports de bugs sont rejetés par Discord. threadNameTemplate est destiné aux salons de forum. Si votre destination est un salon textuel normal, videz le modèle. La console affiche Webhook '…' rejected with HTTP … avec la raison.

Les commandes console ne font rien. Le salon console nécessite le bot, et l'ID de salon dans discordChannelId doit correspondre. Une commande bloquée reçoit une réaction « sens interdit » et un membre non autorisé une croix. Par défaut, commandList est une liste noire contenant stop, restart et reload ; passez à blacklistIsWhitelist et restreignez allowedRoles pour une configuration plus sûre.

Les ventes de boutique ne sont pas annoncées. Il vous faut un Shop Notification Manifest (sans lui, rien n'est envoyé), et la définition de la boutique doit nommer la destination dans son notificationWebhookId, en utilisant l'ID de votre entrée Webhook Definition. L'extension Shops doit être installée.

Extensions associées​

  • Shops — ses boutiques désignent la Webhook Definition qui annonce leurs transactions.