Skip to content

Cooldown Basics

paige edited this page Aug 30, 2023 · 8 revisions

Cooldowns can either be from specific commands or global if you set a global cooldown

Parts

  • onCooldown Boolean: If the command is on cooldown or not for the user
  • cooldownType String: Either "commandCooldown" if the cooldown is from a command or "globalCooldown" if the cooldown is global
  • cooldown Object: Info about the cooldown

Cooldown Properties

  • data Set: Where users on cooldown are stored
  • active Boolean: If the cooldown is active or not
  • time Number: How long the cooldown is in seconds
  • relative String: A relative unix timestamp for the cooldown time
  • raw Number: A raw unix timestamp for the cooldown time
  • handle Function: Adds users to the cooldown
  • fetch Function: Checks if a user is on cooldown or not
{
    onCooldown: Boolean, // if the command is on cooldown
    cooldownType: String, // type of cooldown

    cooldown: {
        data: Set, // stores the users on cooldown
        active: Boolean, // if the cooldown is active
        time: Number, // how long the cooldown is

        relative: String, // relative unix timestamp
        raw: Number, // raw unix timestamp

        handle: Function, // handler
        fetch: Function // fetcher
    },

}

Global Cooldown

global cooldowns are cooldowns that apply to all commands that don't already have cooldowns

// command has no cooldown
wc.command("a", action)


// command has a cooldown so the global cooldown isn't applied
wc.command({ name: "b", cooldown: "10s"}, action)


// sets the global cooldown to 5 seconds
wc.setCooldown("5s")

Examples

command cooldown

wc.command( {name: "ping", cooldown: "5s"}, async (ctx, cmd) => {
    if (cmd.onCooldown) {
        return ctx.reply(`You can use this command again in ${cmd.cooldown.relative}`);
    }
    
    ctx.reply("Ping! Command is not on cooldown!");
});

global cooldown

wc.setCooldown("5s")
Clone this wiki locally