Introduction
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.js | 22.x or higher |
| discord.js | 14.x |
| TypeScript | 6.x |

