2023-12-21 12:47:24 -06:00
2023-12-21 12:47:02 -06:00
2023-12-15 16:09:13 -06:00
2022-01-24 20:48:18 -06:00
2023-07-29 17:10:19 -05:00
2022-09-28 11:52:25 -05:00
2023-12-15 16:23:39 -06:00
2023-12-15 17:03:23 -06:00
2023-04-11 22:45:45 -05:00
2023-12-21 12:47:24 -06:00
2023-09-09 01:08:16 -05:00
2023-12-15 16:09:13 -06:00
2023-12-15 16:09:13 -06:00
2023-12-15 16:09:13 -06:00

Handlers. Redefined.

A complete, customizable, typesafe, & reactive framework for discord bots

NPM version NPM downloads License MIT docs.rs Lines of code

Why?

  • For you. A framework that's tailored to your exact needs.
  • Lightweight. Does a lot while being small.
  • Latest features. Support for discord.js v14 and all of its interactions.
  • Start quickly. Plug and play or customize to your liking.
  • Switch and customize how errors are handled, logging, and more.
  • works with bun and node out the box!
  • Use it with TypeScript or JavaScript. CommonJS and ESM supported.
  • Active and growing community, always here to help. Join us
  • Unleash its full potential with a powerful CLI and awesome plugins.

📜 Installation

npm install @sern/handler
yarn add @sern/handler
pnpm add @sern/handler

👶 Basic Usage

ping.ts
export default commandModule({
  type: CommandType.Slash,
  //Installed plugin to publish to discord api and allow access to owners only.
  plugins: [publish(), ownerOnly()],
  description: 'A ping pong command',
  execute(ctx) {
    ctx.reply('Hello owner of the bot');
  }
});
modal.ts
export default commandModule({
    type: CommandType.Modal,
    //Installed a plugin to make sure modal fields pass a validation.
    plugins : [
        assertFields({
            fields: { 
                name: /^([^0-9]*)$/ 
            },
            failure: (errors, modal) => modal.reply('your submission did not pass the validations')
        })
    ],
    execute : (modal) => {
        modal.reply('thanks for the submission!');
    }
})
index.ts
import { Client, GatewayIntentBits } from 'discord.js';
import { Sern, single } from '@sern/handler';

//client has been declared previously
//Version 3
await makeDependencies({
    build: root => root
        .add({ '@sern/client': single(() => client)  })
});

//View docs for all options
Sern.init({
	defaultPrefix: '!', // removing defaultPrefix will shut down text commands
	commands: 'src/commands',
	// events: 'src/events' (optional),
});

client.login("YOUR_BOT_TOKEN_HERE");

🤖 Bots Using sern

💻 CLI

It is highly encouraged to use the command line interface for your project. Don't forget to view it.

👋 Contribute

  • Read our contribution guidelines carefully
  • Pull up on issues and report bugs
  • All kinds of contributions are welcomed.
Description
No description provided
Readme MIT 8.4 MiB
Languages
TypeScript 100%