Autocomplete
Bu içerik henüz dilinizde mevcut değil.
Autocomplete is a special interaction which can happen on multiple options can be suggested for a single command. We’ve implemented this functionality using a simple tree search algorithm within a nested options tree.
Example
In this example, the option list will autocomplete with the cheeses gouda, parmesan, and harvarti.
1export default commandModule({2 type: CommandType.Slash,3 description: "show me cheese",4 options: [5 {6 name: "list",7 type: ApplicationCommandOptionType.String,8 description: "pick a cheese to show",9 required: true,10 autocomplete: true,11 command: {12 execute: (ctx) => {13 // focus can be used to refine the options14 const focus = ctx.options.getFocused();15 ctx.respond(16 ["gouda", "parmesan", "harvarti"].map((cheese) => ({17 name: cheese,18 value: cheese,19 })),20 );21 },22 },23 },24 ],25 execute: (ctx, [, args]) => {26 const cheese = args.getString("list", true);27 ctx.reply("selected cheese " + cheese);28 },29});Using Focus
The focus object refines the options. For example, if the user types g, the focus object will be g.
We can filter cheeses based on the focus object, and return only the cheeses that start with the focus object.
You can do a lot more with the focus object, such as performing API calls, or implementing a fuzzy search.
1export default commandModule({2 type: CommandType.Slash,3 description: "show me cheese",4 options: [5 {6 name: "list",7 type: ApplicationCommandOptionType.String,8 description: "pick a cheese to show",9 required: true,10 autocomplete: true,11 command: {12 onEvent: [],13 execute: (ctx) => {14 const focus = ctx.options.getFocused();15 ctx.respond ["gouda", "parmesan", "harvarti"]16 .filter((cheese) => cheese.startsWith(focus))17 .map((cheese) => ({ name: cheese, value: cheese })));18 },19 },20 },21 ],22 execute: (ctx) => {23 const cheese = ctx.options.getString("list", true);24 ctx.reply("selected cheese");25 },26});