Module Structure

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 src will be built into the modules folder using the reciple build command.

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 src that start with _ are ignored. You can use this to create utility modules that are not loaded by reciple.