Command properties

This page assumes you have a basic bot running using WOKCommands as seen here.

A command's file name will become the executable name of the command. Additional aliases can be set.

Object properties

All commands are exported as objects who have properties to dictate the command's functionality. Here is a complete list of all current properties available to you:

module.exports = {
    // REQUIRED
    // This function will be invoked when users run this command
    callback: ({
        // An instance of your bot's client
        client,
        // An instance of WOKCommands
        instance,
        // The message used for legacy commands. This is null
        // if the user ran this command as a slash command
        message,
        // The interaction used for slash commands. This is null
        // if the user ran this command as a legacy commands
        interaction,
        // Each argument sent with this command. For legacy commands
        // each word is treated as an argument
        args,
        // All of the arguments joined together into one string
        text,
        // The guild where this command was ran
        guild,
        // The memebr who ran this command
        member,
        // The user who ran this command
        user,
        // The channel where this command was ran
        channel,
        // A method run cancel a cooldown
        cancelCooldown,
        // A method to update a cooldown experation date
        updateCooldown,
    }) => {
        // TODO: Return an object or string that will be sent in
        // either message.reply or interaction.reply
        // depending on how the user ran this command
    },
    
    // REQUIRED
    // What type of command this is. Options:
    // LEGACY
    // SLASH
    // BOTH
    type: CommandType.BOTH,
    
    // A method that is invoked when the command is first registered
    // Perfect for pulling information from a database
    init: (client, instance) => {},
    
    // REQUIRED IF THIS COMMAND IS A "SLASH" OR "BOTH" TYPE
    // Sets the description for this command
    description: "Add your description here",
    
    // What other aliases should this command have as a legacy command
    aliases: [],
    
    // If this command should only be registered for test servers
    testOnly: false,
    
    // If this command should only be ran within guilds/servers
    guildOnly: false,
    
    // If this command should only be ran by bot owners/developers
    // NOTE: This has nothing to do with guild/server owners
    ownerOnly: false,
    
    // What build in Discord permissions are required to use this command
    permissions: [],
    
    // If this slash command should be defered. Options:
    // "ephemeral" // Creates an ephemeral reply that is deferred
    // true // Creates a publicly visible reply that is deferred
    // false // Default value
    deferReply: false,
    
    // Customize how cooldowns work for this command
    cooldowns: {
        // Custom error message for this command
        errorMessage: "Please wait {TIME}",
        
        // You MUST select ONE of the following:
        // Applies a cooldown to a specific user over all guilds and DMs
        perUser: 10, // Example of 10 seconds
        // Applies a cooldown to a specific user in a specific guild
        perUserPerGuild: "10 s", // Example of 10 seconds
        // Applies a cooldown to all users in a specific guild
        perGuild: "10 h", // Example of 10 hours
        global: "1 d", // Example of 1 day
    },
    
    // What the minimum amount of arguments are. Used for legacy commands
    // or slash commands when you don't provide an options array
    minArgs: 0,
    
    // What the maximum amount of arguments are. Used for legacy commands
    // or slash commands when you don't provide an options array.
    // -1 = unlimited arguments
    maxArgs: -1,
    
    // The message to be sent if the user doesn't provide the correct syntax
    correctSyntax: "Correct syntax: {PREFIX}{COMMAND} {ARGS}",
    
    // The exact arguments the user is expecting to enter. This is used for
    // the "{ARGS}" in the "correctSyntax". If you do not provide an options
    // array then your slash command arguments are created using this string.
    // Example for an "!add 5 10" command:
    // expectedArgs: "[num1] [num2]"
    // Another syntax:
    expectedArgs: "<num1> <num2>",
    
    // An array of https://discord.js.org/#/docs/discord.js/main/typedef/ApplicationCommandOption
    options: [],
    
    // This function is invoked when autocomplete is ran in this command.
    // To enable autocomplete pass in an options array with "autocomplete: true"
    autocomplete: (command, argument, instance) => {
        // TODO: Return an array of strings
    },
    
    // If message.reply() vs message.channel.send() should be used for
    // legacy commands
    reply: true,
    
    // Delete this command as both a legacy and slash command
    // This will delete the "testOnly" or "global" version of this slash
    // command. For example: testOnly = true && delete = true then this slash
    // command will be deleted in the test servers only. However testOnly = false
    // means the global slash command will be deleted.
    delete: false
}

Last updated

Was this helpful?