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éthode | Type |
|---|---|
addStringOption | Texte |
addIntegerOption | Nombre entier |
addNumberOption | Nombre décimal |
addBooleanOption | Vrai / Faux |
addUserOption | Utilisateur Discord |
addRoleOption | Rôle Discord |
Chaque option expose :
| Méthode | Description |
|---|---|
.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.
