Guide

Commandes

Créez et organisez des commandes slash avec GlyriaCommand.

Vue d'ensemble

Les commandes dans glyria.js sont basées sur les fichiers. Chaque fichier dans src/commands/ est automatiquement chargé et enregistré sur Discord au démarrage — aucune inscription manuelle nécessaire.

Chaque fichier de commande exporte une instance GlyriaCommand par défaut :

// src/commands/ping.ts
export default new GlyriaCommand()
  .setName("ping")
  .setDescription("Pong!")
  .execute(async (ctx) => {
    await ctx.reply({ content: "Pong!" })
  })
GlyriaCommand est disponible globalement — aucun import nécessaire.

Options

Ajoutez des options typées à votre commande avec les méthodes add*Option :

export default new GlyriaCommand()
  .setName("hello")
  .setDescription("Dire bonjour à quelqu'un")
  .addUserOption((option) =>
    option
      .setName("user")
      .setDescription("L'utilisateur à saluer")
      .setRequired(true)
  )
  .addStringOption((option) =>
    option
      .setName("message")
      .setDescription("Un message personnalisé")
      .setRequired(false)
  )
  .execute(async (ctx) => {
    await ctx.reply({ content: "Bonjour!" })
  })

Types d'options disponibles

MéthodeType
addStringOptionTexte
addIntegerOptionNombre entier
addNumberOptionNombre décimal
addBooleanOptionVrai / Faux
addUserOptionUtilisateur Discord
addRoleOptionRôle Discord

Chaque option expose :

MéthodeDescription
.setName(name)Nom de l'option (minuscules, sans espaces)
.setDescription(desc)Description de l'option
.setRequired(bool)Si l'option est obligatoire

Sous-commandes

Regroupez des actions liées sous une seule commande avec .addSubCommand() :

export default new GlyriaCommand()
  .setName("moderation")
  .setDescription("Commandes de modération")
  .addSubCommand((cmd) =>
    cmd
      .setName("ban")
      .setDescription("Bannir un utilisateur")
      .addUserOption((option) =>
        option
          .setName("user")
          .setDescription("Utilisateur à bannir")
          .setRequired(true)
      )
      .addStringOption((option) =>
        option
          .setName("reason")
          .setDescription("Raison du bannissement")
          .setRequired(false)
      )
      .execute(async (ctx) => {
        // gérer le ban
      })
  )
  .execute(async (ctx) => {
    // gérer la commande de base
  })

Groupes de sous-commandes

Pour une organisation plus poussée, regroupez des sous-commandes avec .addSubCommandGroup() :

export default new GlyriaCommand()
  .setName("moderation")
  .setDescription("Commandes de modération")
  .addSubCommand((cmd) =>
    cmd
      .setName("ban")
      .setDescription("Bannir un utilisateur")
      .addUserOption((option) =>
        option
          .setName("user")
          .setDescription("Utilisateur à bannir")
          .setRequired(true)
      )
      .addStringOption((option) =>
        option
          .setName("reason")
          .setDescription("Raison du bannissement")
          .setRequired(false)
      )
      .execute((ctx) => {
        console.log("commande ban")
      })
  )
  .addSubCommandGroup((group) =>
    group
      .setName("config")
      .setDescription("Commandes de configuration")
      .addSubCommand((cmd) =>
        cmd
          .setName("logs")
          .setDescription("Configurer les logs")
          .addBooleanOption((option) =>
            option
              .setName("enabled")
              .setDescription("Activer les logs")
              .setRequired(true)
          )
          .execute(async (ctx) => {
            const embed = new EmbedV2Builder()
              .container({ accentColor: 0x5865F2 })
                .textDisplay("Configuration des logs mise à jour !")
                .separator({ spacing: "large" })
                .section()
                  .textDisplay("Désactiver les logs")
                  .buttonAccessory({ label: "Désactiver", style: "link", url: "https://discord.com" })
                .end()
                .actionRow()
                  .button({ label: "Activer", style: "link", url: "https://discord.com" })
                .end()
              .end()
              .build()

            await ctx.reply({ ...embed })
          })
      )
  )
  .execute((ctx) => {
    ctx.reply({ content: "Commande de modération exécutée !" })
  })

Cela génère la structure de commandes Discord suivante :

/moderation ban <user> [reason]
/moderation config logs <enabled>

Organisation des fichiers

Les sous-dossiers dans src/commands/ servent uniquement à l'organisation — chaque fichier, peu importe sa profondeur, est automatiquement chargé.

src/commands/
  ping.ts
  moderation/
    ban.ts
    kick.ts
  config/
    advanced/
      logs.ts
Gardez un seul GlyriaCommand par fichier. Utilisez les sous-commandes et groupes de sous-commandes pour regrouper les actions liées.
Copyright © 2026