Getting Started

Introduction

glyria.js is a Discord bot framework built on top of discord.js with a focus on developer experience.

Instead of writing boilerplate over and over, glyria.js lets you focus on what matters — your bot's features.

Why glyria.js?

Zero boilerplate

A minimal bot with discord.js requires dozens of lines of setup. With glyria.js:

// src/index.ts
const client = new GlyriaClient({
    intents: [GatewayIntentBits.Guilds]
})

await client.login()

That's it. Token loading, command registration, interaction routing — all handled automatically.

File-based commands

Drop a file in src/commands/ and it's automatically loaded and registered on Discord. No manual imports, no registration code.

// src/commands/ping.ts
export default GlyriaCommand()
    .setName("ping")
    .setDescription("Pong!")
    .execute(async (ctx) => {
        await ctx.reply({ content: "Pong!" })
    })

Auto-imports

Every glyria.js utility is available globally — no imports needed in your command files.

// no imports required
export default GlyriaCommand()
    .setName("hello")
    .setDescription("Say hello")
    .execute(async (ctx) => {
        await ctx.reply({
            ...new EmbedV2Builder()
                .container({ accentColor: 0x5865F2 })
                .textDisplay("# Hello!")
                .end()
                .build()
        })
    })

Embeds V2 by default

glyria.js ships with a first-class Embed V2 builder — the new Discord component system that most frameworks don't support yet.

How it works

glyria.js sits on top of discord.js as a thin DX layer:

discord.js      →  handles WebSocket, REST, caching
glyria.js       →  file-based commands, auto-imports, builders, CLI
your bot        →  just your features

You always have access to the raw discord.js client if needed — glyria.js never locks you in.

Compatibility

Version
Node.js22.x or higher
discord.js14.x
TypeScript6.x
Copyright © 2026