# Cooldowns

{% embed url="<https://youtu.be/_67r4wq23BA?t=329>" %}

You can use command cooldowns to ensure your commands are only ran every so often. Each cooldown type requires a string for it's duration and duration type (seconds, minutes, etc)

| Character | Duration | Example |
| --------- | -------- | ------- |
| s         | Seconds  | 30 s    |
| m         | Minutes  | 10 m    |
| h         | Hours    | 5 h     |
| d         | Days     | 3 d     |

There are 4 types of cooldowns:

<table><thead><tr><th width="191">Cooldown Type</th><th>Description</th></tr></thead><tbody><tr><td>perUser</td><td>Applies to a specific user across all guilds and DMs</td></tr><tr><td>perUserPerGuild</td><td>Applies to a specific user in a specific guild</td></tr><tr><td>perGuild</td><td>Applies to all users in a specific guild</td></tr><tr><td>global</td><td>Applies to all users in all guilds</td></tr></tbody></table>

Example of per-user cooldowns:

{% tabs %}
{% tab title="JavaScript" %}
{% code title="daily.js" %}

```javascript
const { CommandType, CooldownTypes } = require("wokcommands");

module.exports = {
  description: "Ping pong command",

  type: CommandType.BOTH,

  cooldowns: {
    type: CooldownTypes.perUser,
    duration: "1 d",
  },

  callback: () => {
    return {
      content: "Pong!",
    };
  },
};
```

{% endcode %}
{% endtab %}

{% tab title="TypeScript" %}
{% code title="daily.ts" %}

```typescript
import { CommandObject, CommandType, CooldownTypes } from "wokcommands";

export default {
  description: "Ping pong command",

  type: CommandType.BOTH,

  cooldowns: {
    type: CooldownTypes.perUser,
    duration: "1 d",
  },

  callback: () => {
    return {
      content: "Pong!",
    };
  },
} as CommandObject;
```

{% endcode %}
{% endtab %}
{% endtabs %}
