Guide

Replyable Context

Envoyez des réponses stylisées instantanément avec ctx.g.reply.

Vue d'ensemble

glyria.js enveloppe tout objet Discord répondable (interactions, messages) avec une propriété g qui expose des méthodes de réponse stylisées prêtes à l'emploi.

Au lieu de construire un embed manuellement à chaque fois, vous avez accès à des one-liners :

await ctx.g.reply.success("Utilisateur banni avec succès !")
await ctx.g.reply.error("Vous n'avez pas la permission de faire ça.")

Utilisation

createReplyableContext est disponible dans les handlers d'événements et enveloppe tout objet Discord répondable :

// src/events/messageCreate.ts
export default new GlyriaEvent()
    .setEvent(Events.MessageCreate)
    .setHandler(async (message) => {
        if (message.author.bot) return

        const ctx = createReplyableContext(message)

        if (message.content === "!ping") {
            await ctx.g.reply.success("Pong!")
        }
    })

Méthodes de réponse

Toutes les méthodes acceptent une string et retournent une promesse.

MéthodeCouleurPréfixe
.primary(content)#5865F2 (blurple)aucun
.secondary(content)#4F545C (gris)aucun
.success(content)#57F287 (vert)
.warning(content)#FEE75C (jaune)⚠️
.error(content)#ED4245 (rouge)
.info(content)#5DADE2 (bleu)ℹ️

Chaque méthode construit automatiquement un Embed V2 avec la couleur d'accentuation correspondante.

Personnaliser les couleurs

Remplacez les couleurs par défaut dans glyria.config.ts :

export default defineConfig({
    theme: {
        embedV2: {
            primaryColor: "#7289DA",
            successColor: "#43B581",
            warningColor: "#FAA61A",
            errorColor: "#F04747",
            infoColor: "#00B0F4",
            secondaryColor: "#747F8D",
        }
    }
})
Les couleurs sont définies en chaînes hexadécimales — glyria.js les convertit en nombres en interne.

Dans les commandes slash

createReplyableContext fonctionne avec tout objet répondable — y compris les interactions de commandes slash :

export default new GlyriaCommand()
    .setName("ban")
    .setDescription("Bannir un utilisateur")
    .addUserOption((option) =>
        option.setName("user").setDescription("Utilisateur à bannir").setRequired(true)
    )
    .execute(async (interaction) => {
        const ctx = createReplyableContext(interaction)

        try {
            // ... logique de ban
            await ctx.g.reply.success("Utilisateur banni avec succès !")
        } catch {
            await ctx.g.reply.error("Impossible de bannir cet utilisateur.")
        }
    })

Dans les événements de messages

export default new GlyriaEvent()
    .setEvent(Events.MessageCreate)
    .setHandler(async (message) => {
        if (message.author.bot) return

        const ctx = createReplyableContext(message)

        if (message.content.startsWith("!ping")) {
            await ctx.g.reply.success("Pong!")
        }
    })
Copyright © 2026