mirror of
https://github.com/sern-handler/handler
synced 2026-06-06 01:16:55 +00:00
* style: prettier line feed changes
* style: prettier line feed changes
* feat: prototyping module manager
* feat: removing unused types
* feat: update location of module typings
* revert: port back to original interaction type checkers
* revert: port back to original interaction type checkers
* revert: remove unneeded type predicates
* feat: moving modules to its own contained class
* feat: getting global plugins some typings and adding contracts
* chore: fixing up and cleaning code
* feat: adding ModuleConfiguration helper fn and default module manager
* feat: solidifying contract
* revert: delete files
* chore: saving for later
* feat: prototyping module manager
* feat: removing unused types
* feat: update location of module typings
* revert: port back to original interaction type checkers
* revert: port back to original interaction type checkers
* revert: remove unneeded type predicates
* feat: moving modules to its own contained class
* feat: getting global plugins some typings and adding contracts
* chore: fixing up and cleaning code
* feat: adding ModuleConfiguration helper fn and default module manager
* feat: solidifying contract
* revert: delete files
* chore: saving for later
* feat: more merge conflicts
* feat: starting from scratch, add new typings
* feat: refactor ScopedPlugin typing
* feat: strengthening contracts
* chore: edit eslint
* feat: add addDependencies
* feat: add iti di
* feat: constfn util
* revert: delete old files
* remove: ModuleConfiguration
* feat: add sanity checker
* feat: add new error and update dependency
* feat: add sanity check for iti
* feat: add function helpers for di
* feat: add POC for sern di IOC
* feat: refactor DependenciesMap
* revert: remove old code
* feat: refactor makeDependencies fn
* chore(deps): update dependency @typescript-eslint/parser to v5.36.1 (#127)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency @typescript-eslint/eslint-plugin to v5.36.1 (#126)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* docs: Fix the code example (#128)
* chore(deps): update dependency @typescript-eslint/eslint-plugin to v5.36.2 (#130)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: xxDeveloper <77380166+Murtatrxx@users.noreply.github.com>
* chore(deps): update dependency @typescript-eslint/parser to v5.36.2 (#131)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: xxDeveloper <77380166+Murtatrxx@users.noreply.github.com>
* feat: allow constructable modules (#133)
* Update readFile.ts
* Update userDefinedEventsHandling.ts
* Update readyHandler.ts
* fix: ts error
Co-authored-by: Jacob Nguyen <76754747+jacoobes@users.noreply.github.com>
Co-authored-by: xxDeveloper <77380166+Murtatrxx@users.noreply.github.com>
* revert: feat of allow constructable modules (#138)
Revert "feat: allow constructable modules (#133)"
This reverts commit 03936eb2ea.
* feat: update CODEOWNERS
* feat: classmodules@arcs (#143)
* feat: add class based commands
* docs: add deprecation warnings
* feat: add deprecation warnings
* feat: add more deprecation warnings
* feat: add prototype ClassModule abstract class
* feat: add EventModuleClass prototype, change names
* feat: more flexible contract
* feat: EventExecutable
* fix: typo
* feat: made abstract classes because of defaults
* fix: typings
* feat: update Context typings, update to djs v15
* chore: update typescript dependency
* chore: bump version
* chore: update ignore
* chore: prettier
* docs: change readme to be docusaurus compliant
* chore(main): release 1.2.0 (#145)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(autocomplete): now support multiple autocomplete options (#147)
* chore(main): release 1.2.1 (#148)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* feat: update location of module typings
* feat: getting global plugins some typings and adding contracts
* feat: adding ModuleConfiguration helper fn and default module manager
* feat: solidifying contract
* feat: removing unused types
* feat: update location of module typings
* feat: moving modules to its own contained class
* feat: getting global plugins some typings and adding contracts
* feat: solidifying contract
* revert: delete files
* chore: saving for later
* feat: more merge conflicts
* feat: starting from scratch, add new typings
* feat: strengthening contracts
* feat: add sanity check for iti
* feat: refactor DependenciesMap
* feat: adding POC back
* docs: add some deprecation warnings
* feat: remove client and sernEmitter
* feat: rebase global_services
* chore: oops rebase pkgjson fix
* fix: typings
* feat: iti update and getting di working
* feat: adding contracts and default provider
* feat: update typings and change logger
* fix: MapDeps typings and useContainer typings
* feat: moving handlers to 2.0
* feat: injecting crash handler
* feat: alpha logging injection?
* feat: injecting modulemanager in interactionhandler
* fix: typos and fixups
* fix: typos and fixups
* feat: moduleManager injection
* fix: crash on no module
* feat: i think optional dependencies work
* feat: add more optional support
* feat: make exclusion optional
* perf: simplify typings and reduce compile time
* fix: some typings adjustment, deprecating a field
* perf: simplifying plugin typings
* feat: remove addExternal
* feat: more simplifying typings
* perf: allow any and interfacify some types
* revert: remove horrendous Override type
* revert: delete interaction type predicates
* fix: unchecked cast to EventEmitter
* perf: remove unneeded creation of instance members
* feat: init test dir
* refactor: rename fn and short circuit name fn
* refactor: insert function
* feat: starting event module onEvent plugins and log payload
* feat: basic eventmodule event plugins?
* refactor: DRY
* feat: unify warning typing
* fix: typings
* feat: more progress on new eventModules
* feat: event modules with plugins!!?!?
* feat: making sernEmitter create default!!, readjust typings
* feat: inject sernEmitter emits and catch possible errors
* feat: add optionality to Logger dep type
* feat: context upgrade, fix circular emissions, crap ton of shit
* feat!: Module -> AnyModule, Added new SelectMenuInteractions, Changed some CommandType names
* feat: rudimentary onClick handler
* feat!: rename select menu command types, no distinguishing between text and alias
* docs: adding docs
* fix: forgot to change
* fix: logging undefined
* revert: remove spreadparams
* feat: export useContainerRaw function and fix smol bug
* feat: add iti DI disposeAll on crash
* fix: deferred execute
* feat!: rename BasePlugin -> Plugin
* feat: commandplugins for event modules, ill test later
* refactor: rename
* refactor: remove import
* feat: add deprecation warnings
* feat: update documentation comments
* perf: static'ify command plugin and event plugin typings
* refactor: remove redundant assignment
* feat: switch to pnpm
* chore: update pnpm lock
* fix: errors crashing and completing subscription
* feat: update example
* fix: overriding dependencies no matter what
* fix: bad rxjs docs
* refactor: destructuring
* feat: update typings for addDisposer
* feat: update packageManager field in package.json
* feat: grammar
Co-authored-by: jacoobes <jacobnguyend@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: xxDeveloper <77380166+Murtatrxx@users.noreply.github.com>
Co-authored-by: Arcs <73959934+HighArcs@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Evo <85353424+EvolutionX-10@users.noreply.github.com>
115 lines
3.2 KiB
Markdown
115 lines
3.2 KiB
Markdown
<div align="center">
|
|
<img src="https://raw.githubusercontent.com/sern-handler/.github/main/banner.png" width="900px" />
|
|
</div>
|
|
|
|
<h1 align="center">Handlers. Redefined.</h1>
|
|
<h4 align="center">A customizable, batteries-included, powerful discord.js framework to streamline bot development.</h4>
|
|
|
|
<div align="center" styles="margin-top: 10px">
|
|
<img src="https://img.shields.io/badge/open-source-brightgreen" />
|
|
<a href="https://www.npmjs.com/package/@sern/handler"><img src="https://img.shields.io/npm/v/@sern/handler?maxAge=3600" alt="NPM version" /></a>
|
|
<a href="https://www.npmjs.com/package/@sern/handler"><img src="https://img.shields.io/npm/dt/@sern/handler?maxAge=3600" alt="NPM downloads" /></a>
|
|
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-brightgreen" alt="License MIT" /></a>
|
|
<a href="https://sern.dev"><img alt="docs.rs" src="https://img.shields.io/docsrs/docs" /></a>
|
|
<img alt="Lines of code" src="https://img.shields.io/badge/total%20lines-2k-blue" />
|
|
</div>
|
|
|
|
|
|
## 📜 Installation
|
|
|
|
```sh
|
|
npm install @sern/handler
|
|
```
|
|
|
|
```sh
|
|
yarn add @sern/handler
|
|
```
|
|
|
|
```sh
|
|
pnpm add @sern/handler
|
|
```
|
|
|
|
## 👀 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)`
|
|
|
|
```js
|
|
// 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)`
|
|
|
|
```js
|
|
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](https://github.com/sern-handler/templates) for TypeScript examples and more.
|
|
|
|
## 💻 CLI
|
|
|
|
It is **highly encouraged** to use the [command line interface](https://github.com/sern-handler/cli) for your project. Don't forget to view it.
|
|
|
|
## 🔗 Links
|
|
|
|
- [Official Documentation and Guide](https://sern.dev)
|
|
- [Support Server](https://sern.dev/discord)
|
|
|
|
## 👋 Contribute
|
|
|
|
- Read our contribution [guidelines](./.github/CONTRIBUTING.md) carefully
|
|
- Pull up on [issues](https://github.com/sern-handler/handler/issues) and report bugs
|
|
- All kinds of contributions are welcomed.
|
|
|
|
## 🚈 Roadmap
|
|
|
|
You can check our [roadmap](https://github.com/sern-handler/roadmap) to see what's going to be added or patched in the future.
|