mirror of
https://github.com/sern-handler/handler
synced 2026-06-06 01:16:55 +00:00
* feat: experimental plugin changes * more refactors and name changes * feat: update name usage and update dispatchers.ts * fix:naming * feat: slightly safer typings than any[] * fix: forgot to destructure arguments * feat: add special function * fix: typings * feat: SUPER SIMPLIFY!!! * refactor: move promisifiedPlugins closer to call site * refactor: typings * refactor: typings * refactor: consolidate resolving initplugins into one function * refactor: better types * revert: remove unneeded function * revert: remove unneeded function * feat: dispatch work, simplify * feat: move some observableHandling function to operators for clarity * feat: simplify and document * feat: simplifying sern and docs * fix: typings * docs: clarity of function name * docs: add documentation for executeModule * feat: contextArgs overloads * docs: found out why * fix: typings * feat: shorten operators signature * refactor: switch to correct convention * refactor: take(1) -> first() * refactor: revert * refactor: safer typings (less any) and more accurate typings * style: prettier and short type aliases * fix: typings * fix: typings * docs: add deprecations * refactor: organization and moving stuff * pretty: prettey * docs: describe file * chore: update dependencies and version * docs: fix link for docasaurus * refactor: using a more appropriate operator function for closing an observable on crash * fix!: changing single and many * refactor: typings and simplifying composeRoot * fix: re-add logger into handleError * docs: comment * docs: new section * feat: help mitigate breaking changes * feat: help mitigate breaking changes * feat: help mitigate breaking changes and function overloads * feat: deprecate instead of remove * feat: partial remove and deprecate old symbols * revert: trying to accommodate old plugins is too difficult * docs: add many as deprecated * docs: update * feat: partial backwards compatability * refactor: renaming, docs, and exports more clean * refactor: context got a lot simpler * refactor: imports * docs: explain methods
3.6 KiB
3.6 KiB
Handlers. Redefined.
A customizable, batteries-included, powerful discord.js framework to streamline bot development.
📜 Installation
npm install @sern/handler
yarn add @sern/handler
pnpm add @sern/handler
Why?
- Most handlers don't support discord.js 14.7+
- Customizable commands
- Plug and play or customize to your liking
- Embraces reactive programming for consistent and reliable backend
- Customizable logger, error handling, and more
- Active development and growing community
👀 Quick Look
- Support for discord.js v14 and all interactions
- Hybrid commands
- Lightweight and customizable
- ESM, CommonJS and TypeScript support
- A powerful CLI and awesome community-made plugins
👶 Basic Usage
index.js (CommonJS)
// Import the discord.js Client and GatewayIntentBits
const { Client, GatewayIntentBits } = require('discord.js');
// Import Sern namespace
const { Sern } = require('@sern/handler');
// Our configuration file
const { defaultPrefix, token } = require('./config.json');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMembers,
GatewayIntentBits.GuildMessages
]
});
export const useContainer = Sern.makeDependencies({
build: root => root
.add({ '@sern/client': single(client) })
.add({ '@sern/logger': single(new DefaultLogging()) })
});
//View docs for all options
Sern.init({
defaultPrefix: '!', // removing defaultPrefix will shut down text commands
commands: 'src/commands',
// events: 'src/events' (optional),
containerConfig : {
get: useContainer
}
});
client.login(token);
ping.js (CommonJS)
const { CommandType, commandModule } = require('@sern/handler');
exports.default = commandModule({
name: 'ping',
description: 'A ping pong command',
type: CommandType.Slash,
execute(ctx) {
ctx.reply('pong!');
}
});
See our templates for TypeScript examples and more.
💻 CLI
It is highly encouraged to use the command line interface for your project. Don't forget to view it.
🔗 Links
👋 Contribute
- Read our contribution guidelines carefully
- Pull up on issues and report bugs
- All kinds of contributions are welcomed.
🚈 Roadmap
You can check our roadmap to see what's going to be added or patched in the future.
