diff --git a/package.json b/package.json index c4037f5..a9cc493 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "slashasaurus", - "version": "0.10.2", + "version": "0.10.3", "main": "dist/index.js", "types": "dist/index.d.ts", "license": "MIT", @@ -26,8 +26,8 @@ "url": "https://github.com/Rodentman87/slashasaurus.git" }, "dependencies": { - "@discordjs/builders": "^0.14.0-dev.1652702621-5e9b757", - "@discordjs/rest": "^0.5.0-dev.1652702640-5e9b757", + "@discordjs/builders": "^0.15.0", + "@discordjs/rest": "^0.5.0", "discord-api-types": "^0.33.0" } } diff --git a/src/SlashCommandBase.ts b/src/SlashCommandBase.ts index c91990f..1e55a7a 100644 --- a/src/SlashCommandBase.ts +++ b/src/SlashCommandBase.ts @@ -165,11 +165,13 @@ export class SlashCommand { ): Promise | string[]>; async validateAndTransformOptions( interaction: AutocompleteInteraction, - skipRequiredCheck: boolean + skipRequiredCheck: boolean, + skipValidationAndTransformation: boolean ): Promise>; async validateAndTransformOptions( interaction: CommandInteraction | AutocompleteInteraction, - skipRequiredCheck = false + skipRequiredCheck = false, + skipValidationAndTransformation = false ): Promise | string[]> { const errors: string[] = []; const values: Record> = {}; @@ -188,6 +190,11 @@ export class SlashCommand { continue; } + if (skipValidationAndTransformation) { + values[option.name] = value; + continue; + } + // Check if the option has a validator let isValid = true; if ( diff --git a/src/SlashasaurusClient.ts b/src/SlashasaurusClient.ts index 4ab1efa..970219b 100644 --- a/src/SlashasaurusClient.ts +++ b/src/SlashasaurusClient.ts @@ -142,6 +142,11 @@ export interface SlashasaurusClientOptions { * were last interacted with. The default is 30 seconds. */ pageTtl?: number; + + /** + * Whether or not to skip validating and transforming options for autocomplete handlers. Defaults to false. + */ + skipValidationAndTransformationForAutocomplete?: boolean; } interface LogFn { @@ -191,6 +196,7 @@ export class SlashasaurusClient extends Client { private pageMap = new Map(); // eslint-disable-next-line @typescript-eslint/no-explicit-any private modalMap = new Map>(); + private skipAutocompleteValidationAndTransformation: boolean; logger?: Logger; chatCommandMiddleware = new Pipeline>(); autocompleteMiddleware = new Pipeline>(); @@ -212,6 +218,8 @@ export class SlashasaurusClient extends Client { ); this.storePageState = options.storePageState ?? defaultPageStore; this.getPageState = options.getPageState ?? defaultPageGet; + this.skipAutocompleteValidationAndTransformation = + options.skipValidationAndTransformationForAutocomplete ?? false; this.on('interactionCreate', this.handleInteractionEvent); } @@ -902,7 +910,8 @@ export class SlashasaurusClient extends Client { } else { const optionsObj = await command.validateAndTransformOptions( interaction, - true + true, + this.skipAutocompleteValidationAndTransformation ); const focused = interaction.options.getFocused(true); const autocompleteFn = command.autocompleteMap.get(focused.name); diff --git a/yarn.lock b/yarn.lock index bfe99ef..a95d729 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,39 +14,39 @@ ts-mixer "^6.0.1" tslib "^2.3.1" -"@discordjs/builders@^0.14.0-dev.1652702621-5e9b757": - version "0.14.0-dev.1652702621-5e9b757" - resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-0.14.0-dev.1652702621-5e9b757.tgz#0d7e8e3fa8e0a041eea74e1003322c5ad97e6dbf" - integrity sha512-bWVuvLfYNkK5ph5E6sa/knDfmXQAdMKf0ncO6hbPnBOTlqwrZ70T6DMjhYx6IcqdFNf2PMcKTgMdLX+3XZTn7g== +"@discordjs/builders@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-0.15.0.tgz#f76318f2de0b057c21bb25bb010ef2317039793d" + integrity sha512-w1UfCPzx2iKycn6qh/f0c+PcDpcTHzHr7TXALXu/a4gKHGamiSg3lP8GhYswweSJk/Q5cbFLHZUsnoY3MVKNAg== dependencies: - "@sapphire/shapeshift" "^3.0.0" + "@sapphire/shapeshift" "^3.1.0" "@sindresorhus/is" "^4.6.0" - discord-api-types "^0.32.1" + discord-api-types "^0.33.3" fast-deep-equal "^3.1.3" ts-mixer "^6.0.1" - tslib "^2.3.1" + tslib "^2.4.0" "@discordjs/collection@^0.6.0": version "0.6.0" resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.6.0.tgz#ee9c7b349a61d081fcdbda36df4187e575510952" integrity sha512-Ieaetb36l0nmAS5X9Upqk4W7euAO6FdXPxn3I8vBAKEcoIzEZI1mcVcPfCfagGJZSgBKpENnAnKkP4GAn+MV8w== -"@discordjs/collection@^0.7.0-dev": - version "0.7.0-dev.1652702622-5e9b757" - resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.7.0-dev.1652702622-5e9b757.tgz#e0e83563c983e2d9fbed11a5c4557c33aea330f4" - integrity sha512-846Aq5V/diKb5dHNGMOd67PR4L2V0ZJOb7UiDguO/nHHnraPuu8XknYMF46P8ElA7gXMX/nq83gd6eDBHoJXvA== +"@discordjs/collection@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.7.0.tgz#1a6c00198b744ba2b73a64442145da637ac073b8" + integrity sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA== -"@discordjs/rest@^0.5.0-dev.1652702640-5e9b757": - version "0.5.0-dev.1652702640-5e9b757" - resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-0.5.0-dev.1652702640-5e9b757.tgz#a25dc091ddd440797bb46d5fed0cd6633b768103" - integrity sha512-2KpNaaWCCRQu7JEkHzz2TnM7fejLiT9FtY3E4SEbU9jOuNkC1NuszIymLW8BcwbGzA8/EOutlGNuoV4LqPik0A== +"@discordjs/rest@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-0.5.0.tgz#dc5bd68e33bf8dd1cf08cf3c55b2901deb92eb5d" + integrity sha512-S4E1YNz1UxgUfMPpMeqzPPkCfXE877zOsvKM5WEmwIhcpz1PQV7lzqlEOuz194UuwOJLLjQFBgQELnQfCX9UfA== dependencies: - "@discordjs/collection" "^0.7.0-dev" + "@discordjs/collection" "^0.7.0" "@sapphire/async-queue" "^1.3.1" - "@sapphire/snowflake" "^3.2.1" - discord-api-types "^0.32.1" - tslib "^2.3.1" - undici "^5.2.0" + "@sapphire/snowflake" "^3.2.2" + discord-api-types "^0.33.3" + tslib "^2.4.0" + undici "^5.4.0" "@eslint/eslintrc@^1.3.0": version "1.3.0" @@ -108,12 +108,12 @@ resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-2.2.0.tgz#9c1221b538fd0f966766158176c686a3a5c98490" integrity sha512-UEnKgMlQyI0yY/q+lCMX0VJft9y86IsesgbIQj6e62FBYSaMVr+IaMNpi4z45Q14VnuMACbK0yrbHISNqgUYcQ== -"@sapphire/shapeshift@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.0.0.tgz#53a35bedcacbc9d4c566c12610598d27b51d04e1" - integrity sha512-LTVj/a70UDzjOFaViMGpVzSzKYD2pBk0TmZIHnBf4vnytV7TK/L6XVN6hslq7R+qwRZyL/mzIldu6mAV6r7vzA== +"@sapphire/shapeshift@^3.1.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.2.0.tgz#f26298ed472e73ee89e0a164c9f98305676bf101" + integrity sha512-asNgE5Ooil2/oGIAj6vZMoUc2ZFED0TGYD7jwvZsjHPQZBEh9ITj94ca4bCgiCR1s2ER/UjzykH+5wE3ebVZnQ== -"@sapphire/snowflake@^3.2.1": +"@sapphire/snowflake@^3.2.2": version "3.2.2" resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.2.2.tgz#faacdc1b5f7c43145a71eddba917de2b707ef780" integrity sha512-ula2O0kpSZtX9rKXNeQMrHwNd7E4jPDJYUXmEGTFdMRfyfMw+FPyh04oKMjAiDuOi64bYgVkOV3MjK+loImFhQ== @@ -380,16 +380,16 @@ discord-api-types@^0.31.1: resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.31.2.tgz#8d131e25340bd695815af3bb77128a6993c1b516" integrity sha512-gpzXTvFVg7AjKVVJFH0oJGC0q0tO34iJGSHZNz9u3aqLxlD6LfxEs9wWVVikJqn9gra940oUTaPFizCkRDcEiA== -discord-api-types@^0.32.1: - version "0.32.1" - resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.32.1.tgz#c468ec31a1ac2565673619ba1e0d35f01d339a65" - integrity sha512-/ewl0CPYT5xjOC+SJ7wADJKjtpZfiiUaYXOP/Ns54lnBcv4Xqa4iKSqRF/w1fjiUvWTYN9W8UuOiyCHtmu5fJw== - discord-api-types@^0.33.0: version "0.33.0" resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.33.0.tgz#4c20b3a85b6d78ce71954a506e98b98ac3105661" integrity sha512-RS1dMM6xuMhdHwQJ0T+XuCD7v1tKnyZ89Eq6q/DbOJWMbIh3ihgAzDhcF70QsFCtk9a5Gn9XU29S7eoEXuwQ5w== +discord-api-types@^0.33.3: + version "0.33.5" + resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.33.5.tgz#6548b70520f7b944c60984dca4ab58654d664a12" + integrity sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg== + discord.js@^13.7.0: version "13.7.0" resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-13.7.0.tgz#5172f7f5d816e2c7296015d335b54e46968d9c67" @@ -983,6 +983,11 @@ tslib@^2.3.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -1007,10 +1012,10 @@ typescript@4.5.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== -undici@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.2.0.tgz#18c5bd59f8f1b1ed8dcc9dca2f754c44ec994059" - integrity sha512-XY6+NS3WH9b3TKOHeNz2CjR+qrVz/k4fO9g3etPpLozRvULoQmZ1+dk9JbIz40ehn27xzFk4jYVU2MU3Nle62A== +undici@^5.4.0: + version "5.5.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.5.1.tgz#baaf25844a99eaa0b22e1ef8d205bffe587c8f43" + integrity sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw== uri-js@^4.2.2: version "4.4.1"