API Reference

GlyriaBus

Un bus d'événements typé avec support des middlewares.

Vue d'ensemble

GlyriaBus est un bus d'événements pub/sub (publication/abonnement) typé avec support des middlewares. Il vous permet de faire communiquer les différentes parties de votre bot entre elles sans les coupler.


```text
File created successfully: GlyriaBus_FR.md

```ts
// src/utils/useBus.ts
type BotEvents = {
  userBanned: [guildId: string, userId: string, reason: string]
  levelUp: [userId: string, level: number]
}

export const useBus = new GlyriaBus<BotEvents>()

GlyriaBus est disponible globalement — aucun import n'est nécessaire. Définissez votre bus dans src/utils/ et il sera auto-importé partout.

Constructeur

new GlyriaBus<Events>()

Paramètre de type

Events est un objet (record) associant les noms des événements aux types de leur contenu (sous forme de tuples) :

type Events = {
  userBanned: [guildId: string, userId: string]
  levelUp: [userId: string, level: number]
}

Méthodes

.on(event, listener)

Enregistre un écouteur (listener) pour un événement. Retourne une fonction de désinscription.

const stop = useBus.on("userBanned", (guildId, userId) => {
  console.log(`${userId} a été banni de ${guildId}`)
})

// plus tard
stop()
ParamètreTypeDescription
eventkeyof EventsNom de l'événement
listenerListener<Events[K]>Gestionnaire recevant les données de l'événement

Retourne () => void — appelez cette fonction pour supprimer l'écouteur.


.use(event, middleware)

Enregistre un middleware pour un événement. Les middlewares s'exécutent avant les écouteurs et doivent appeler next() pour poursuivre la chaîne.

useBus.use("userBanned", async (guildId, userId, next) => {
  console.log(`[middleware] bannissement reçu`)
  await next()
})
ParamètreTypeDescription
eventkeyof EventsNom de l'événement
middlewareMiddleware<Events[K]>Gestionnaire avec next comme dernier argument

.emit(event, ...args)

Émet un événement avec des arguments typés. Exécute tous les middlewares et écouteurs dans l'ordre.

await useBus.emit("userBanned", guildId, userId, reason)
ParamètreTypeDescription
eventkeyof EventsNom de l'événement
...argsEvents[K]Données typées de l'événement

Retourne Promise<void>


.off(event, middleware)

Supprime un middleware spécifique pour un événement.

useBus.off("userBanned", myMiddleware)

.clear(event)

Supprime tous les écouteurs et middlewares pour un événement.

useBus.clear("userBanned")

Types

Middleware<T>

type Middleware<T extends any[]> = (
  ...args: [...ctx: T, next: NextFunction]
) => any | Promise<any>

Listener<T>

type Listener<T extends any[]> = (...ctx: T) => any | Promise<any>

NextFunction

type NextFunction = () => void | Promise<void>

Chaîne de middlewares

Les middlewares et les écouteurs s'exécutent dans leur ordre d'enregistrement. Le fait de ne pas appeler next() interrompt la chaîne — les middlewares et écouteurs suivants ne seront pas exécutés.

useBus.use("levelUp", async (userId, level, next) => {
  if (level < 5) return // s'arrête ici, l'écouteur ne s'exécutera jamais
  await next()
})

useBus.on("levelUp", (userId, level) => {
  console.log(`${userId} a atteint le niveau ${level}`)
})
Copyright © 2026