npm.io
1.4.1 • Published 5d agoCLI

@glyria/bot

Licence
Apache-2.0
Version
1.4.1
Deps
5
Size
211 kB
Vulns
0
Weekly
980

glyria.js

The Discord bot framework with a clean DX — built on top of discord.js.

File-based commands, auto-imports, Embed V2 support, and zero boilerplate out of the box.


Quick start

npm install @glyria/bot
npx glyria init

Fill in your .env:

TOKEN=your_bot_token_here

Start your bot:

npm run dev

Why glyria.js?

Zero boilerplate
// src/index.ts — that's it
const client = new GlyriaClient({
  intents: [GatewayIntentBits.Guilds]
})

await client.login()
File-based commands

Drop a file in src/commands/ — it's automatically loaded and registered on Discord.

// src/commands/ping.ts — no imports needed
export default new GlyriaCommand()
  .setName("ping")
  .setDescription("Pong!")
  .execute(async (ctx) => {
    await ctx.reply({ content: "Pong!" })
  })
Subcommands & groups
export default new GlyriaCommand()
  .setName("moderation")
  .setDescription("Moderation commands")
  .addSubCommand((cmd) =>
    cmd
      .setName("ban")
      .setDescription("Ban a user")
      .addUserOption((option) =>
        option.setName("user").setDescription("User to ban").setRequired(true)
      )
      .execute(async (ctx) => { /* handle ban */ })
  )
  .addSubCommandGroup((group) =>
    group
      .setName("config")
      .setDescription("Configuration")
      .addSubCommand((cmd) =>
        cmd
          .setName("logs")
          .setDescription("Configure logs")
          .addBooleanOption((option) =>
            option.setName("enabled").setDescription("Enable logs").setRequired(true)
          )
          .execute(async (ctx) => { /* handle logs config */ })
      )
  )
Embed V2 builder

First-class support for Discord's new Components V2 system:

const embed = new EmbedV2Builder()
  .container({ accentColor: 0x5865F2 })
    .textDisplay("# Hello!")
    .separator({ spacing: "large" })
    .section()
      .textDisplay("Choose your role")
      .buttonAccessory({ label: "Pick", customId: "role_picker", style: "primary" })
    .end()
    .actionRow()
      .button({ label: "Confirm", customId: "confirm", style: "success" })
      .button({ label: "Cancel", customId: "cancel", style: "danger" })
    .end()
  .end()
  .build()

await ctx.reply({ ...embed })
Styled replies
await ctx.g.reply.success("User banned successfully!")
await ctx.g.reply.error("You don't have permission.")
await ctx.g.reply.info("Here are the details...")
Auto-imports

Every glyria.js utility is available globally — no import needed anywhere:

// GlyriaClient, GlyriaCommand, GlyriaEvent, EmbedV2Builder,
// GlyriaBus, createReplyableContext, GatewayIntentBits, Events...
// all available without a single import line

CLI

Command Description
npx glyria init Scaffold a new project
npm run dev Start in dev mode with hot reload
npm run build Compile for production
npm run start Start in production mode
npm run generate Regenerate auto-imports

Configuration

// glyria.config.ts
export default defineGlyriaConfig({
  theme: {
    embedV2: {
      primaryColor: "#5865F2",
      successColor: "#57F287",
      errorColor: "#ED4245",
      footer: {
        text: "My Bot • v1.0"
      }
    }
  }
})

Support


Requirements

  • Node.js 22.x or higher
  • TypeScript 6.x
  • discord.js 14.x (installed automatically)

License

MIT — Glyria

Keywords