> For the complete documentation index, see [llms.txt](https://docs.wornoffkeys.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.wornoffkeys.com/commands/autocomplete.md).

# Autocomplete

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

WOKCommands comes with built in autocomplete handling for slash commands. As of now you must provide custom slash command options and not use inferred arguments.

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

```javascript
const { ApplicationCommandOptionType } = require("discord.js");
const { CommandType } = require("wokcommands");

module.exports = {
  description: "Sets your operating system",
  type: CommandType.SLASH,

  options: [
    {
      name: "operating-system",
      description: "The operating system you use",
      type: ApplicationCommandOptionType.String,
      required: true,
      // Required for autocomplete to work
      autocomplete: true,
    },
  ],

  autocomplete: (command, argument, interaction) => {
    // Easier to view the autocomplete functionality with
    // two versions of Windows
    return ["Windows 10", "Windows 11", "Mac", "Linux"];
  },

  callback: ({ text }) => {
    return {
      content: `Your operating system is ${text}`,
      ephemeral: true,
    };
  },
};
```

{% endcode %}
{% endtab %}

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

```typescript
import {
  ApplicationCommandOptionType,
  AutocompleteInteraction,
} from "discord.js";
import { CommandObject, CommandType, CommandUsage } from "wokcommands";
import Command from "wokcommands/src/command-handler/Command";

export default {
  description: "Sets your operating system",
  type: CommandType.SLASH,

  options: [
    {
      name: "operating-system",
      description: "The operating system you use",
      type: ApplicationCommandOptionType.String,
      required: true,
      // Required for autocomplete to work
      autocomplete: true,
    },
  ],

  autocomplete: (
    command: Command,
    argument: string,
    interaction: AutocompleteInteraction
  ) => {
    // Easier to view the autocomplete functionality with
    // two versions of Windows
    return ["Windows 10", "Windows 11", "Mac", "Linux"];
  },

  callback: (options: CommandUsage) => {
    const { text } = options;

    return {
      content: `Your operating system is ${text}`,
      ephemeral: true,
    };
  },
} as CommandObject;
```

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