Creating Finalizers

Finalizers are functions run after successful commands, and this is the reason of why all commands must return an Object Promise.

Finalizers have the following syntax:

const { Finalizer } = require('klasa');

module.exports = class extends Finalizer {

	constructor(...args) {
		super(...args, {
			name: 'myFinalizerName',
            enabled: true
        });
	}

	run(msg, mes, start) {
		// This is where you place the code you want to run for your finalizer
	}

	async init() {
		// You can optionally define this method which will be run when the bot starts (after login, so discord data is available via this.client)
	}

};

Configuration

Name Default Type Description
name theFileName string The name of the finalizer
enabled true boolean Whether the finalizer is enabled or not

Arguments:

  • msg: The message object.
  • mes: The value the command returns.
  • start: The time in which the command has been run, by performance.now(), ideal for benchmarking.

Existing finalizers

Klasa has two preinstalled finalizers: commandCooldown and commandlogging.

commandCooldown

This finalizer applies the cooldown from the commands' Command.cooldown (if exists and its value is above 0).

commandlogging

This finalizer, unlike commandCooldown, it's only run if the property cmdLogging of your Klasa's client configs is set to true. It prints in the cmd prompt the command run, where, the user who ran it, and the time it took to process the command.

Further Reading: