Skip to content

Commit

Permalink
Add option to skip validation and transformation for autocomplete
Browse files Browse the repository at this point in the history
  • Loading branch information
Rodentman87 committed Jun 30, 2022
1 parent d8b870d commit c267956
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 40 deletions.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand All @@ -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"
}
}
11 changes: 9 additions & 2 deletions src/SlashCommandBase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,11 +165,13 @@ export class SlashCommand<T extends OptionsDataArray> {
): Promise<CommandOptionsObject<T> | string[]>;
async validateAndTransformOptions(
interaction: AutocompleteInteraction,
skipRequiredCheck: boolean
skipRequiredCheck: boolean,
skipValidationAndTransformation: boolean
): Promise<CommandOptionsObject<T>>;
async validateAndTransformOptions(
interaction: CommandInteraction | AutocompleteInteraction,
skipRequiredCheck = false
skipRequiredCheck = false,
skipValidationAndTransformation = false
): Promise<CommandOptionsObject<T> | string[]> {
const errors: string[] = [];
const values: Record<string, ReturnType<typeof getDataForType>> = {};
Expand All @@ -188,6 +190,11 @@ export class SlashCommand<T extends OptionsDataArray> {
continue;
}

if (skipValidationAndTransformation) {
values[option.name] = value;
continue;
}

// Check if the option has a validator
let isValid = true;
if (
Expand Down
11 changes: 10 additions & 1 deletion src/SlashasaurusClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -191,6 +196,7 @@ export class SlashasaurusClient extends Client<true> {
private pageMap = new Map<string, PageMapStorage>();
// eslint-disable-next-line @typescript-eslint/no-explicit-any
private modalMap = new Map<string, TemplateModal<any, any>>();
private skipAutocompleteValidationAndTransformation: boolean;
logger?: Logger;
chatCommandMiddleware = new Pipeline<CommandRunFunction<[]>>();
autocompleteMiddleware = new Pipeline<AutocompleteFunction<[]>>();
Expand All @@ -212,6 +218,8 @@ export class SlashasaurusClient extends Client<true> {
);
this.storePageState = options.storePageState ?? defaultPageStore;
this.getPageState = options.getPageState ?? defaultPageGet;
this.skipAutocompleteValidationAndTransformation =
options.skipValidationAndTransformationForAutocomplete ?? false;
this.on('interactionCreate', this.handleInteractionEvent);
}

Expand Down Expand Up @@ -902,7 +910,8 @@ export class SlashasaurusClient extends Client<true> {
} else {
const optionsObj = await command.validateAndTransformOptions(
interaction,
true
true,
this.skipAutocompleteValidationAndTransformation
);
const focused = interaction.options.getFocused(true);
const autocompleteFn = command.autocompleteMap.get(focused.name);
Expand Down
73 changes: 39 additions & 34 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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==
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand All @@ -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"
Expand Down

0 comments on commit c267956

Please sign in to comment.