Modules
Reciple utilizes a class based structure for modules. Modules are loaded from the modules directory by default and can be configured in reciple.config.js or reciple.config.ts.
Structure
A module should be an extention of the BaseModule class.
import { BaseModule } from "reciple";
class MyModule extends BaseModule {}
export default new MyModule(); A module instance must be exported as a default in every module files.
Now you’ve created a module, reciple modules contains onEnable, onReady, and onDisable methods that may contain a logic for your module.
onEnable
This method is called when the bot is starting up. Before the client is ready (logged in). You can use this method to setup your module.
import { BaseModule } from "reciple";
class MyModule extends BaseModule {
logger = useLogger();
onEnable() {
this.logger.log("MyModule is enabled!");
}
}
export default new MyModule(); The
useLogger()function is a global helper function that returns a logger instance that is used by reciple.
onReady
This method is called when reciple enabled all modules and when the bot is ready (logged in).
import { BaseModule } from "reciple";
class MyModule extends BaseModule {
logger = useLogger();
onEnable() {
this.logger.log("MyModule is enabled!");
}
onReady() {
this.logger.log("MyModule is ready!");
}
}
export default new MyModule(); onDisable
This method is called when the bot is shutting down. You can use this method to cleanup your module.
import { BaseModule } from "reciple";
class MyModule extends BaseModule {
logger = useLogger();
onEnable() {
this.logger.log("MyModule is enabled!");
}
onReady() {
this.logger.log("MyModule is ready!");
}
onDisable() {
this.logger.log("MyModule is disabled!");
}
}
export default new MyModule(); Module ID
Modules by default are assigned a random snowflake ID. You can set your own module ID by setting the id property in your module.
import { BaseModule } from "reciple";
class MyModule extends BaseModule {
id = "my-module";
}
export default new MyModule(); Folders Structure
When create modules, it should be created inside src folder or subfolder of src. The src folder is the root of your project. The folder structure is used to group modules.
The modules inside
srcwill be built into themodulesfolder using thereciple buildcommand.
mybot
├──
├── src
│ ├── folder1
│ │ └── Module1.ts
│ └── folder2
│ │ └── Module2.ts
│ └── _utils
│ └── utils.ts
├── .env
├── .gitignore
├── nodemon.json
├── package.json
├── reciple.config.js
└── tsconfig.json By default subfolders of
srcthat start with_are ignored. You can use this to create utility modules that are not loaded by reciple.