Jacob Nguyen 33f14467ec feat!: simpler plugins (#193)
* 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
2023-01-26 12:06:04 -06:00
2022-08-29 07:12:33 +05:30
2023-01-26 12:06:04 -06:00
2022-12-28 14:40:19 -06:00
2022-01-24 20:48:18 -06:00
2022-09-28 11:52:25 -05:00
2022-08-29 07:12:33 +05:30
2022-12-31 13:50:44 -06:00
2022-05-30 20:54:23 +03:00
2023-01-26 12:06:04 -06:00
2023-01-26 12:06:04 -06:00
2023-01-26 12:06:04 -06:00
2022-08-29 07:12:33 +05:30
2022-08-29 07:12:33 +05:30
2022-08-29 07:12:33 +05:30
2022-12-28 14:40:19 -06:00

Handlers. Redefined.

A customizable, batteries-included, powerful discord.js framework to streamline bot development.

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

📜 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.

👋 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.

Description
No description provided
Readme MIT 8.4 MiB
Languages
TypeScript 100%