From bae9615cb72c06666d3958ae3b92283cc447e477 Mon Sep 17 00:00:00 2001 From: S222em Date: Fri, 13 May 2022 14:11:37 +0200 Subject: [PATCH] feat: Add support for modals, and fix some other stuff --- package-lock.json | 186 +++++++++++------- package.json | 2 +- src/handlers/AutocompleteHandler.ts | 3 +- src/handlers/ComponentHandler.ts | 4 +- src/handlers/InteractionCommandHandler.ts | 3 +- src/handlers/MessageCommandHandler.ts | 12 +- src/lib/structures/Component.ts | 1 + .../contexts/AutocompleteContext.ts | 2 +- src/lib/structures/contexts/CommandContext.ts | 2 +- .../structures/contexts/ComponentContext.ts | 6 +- src/lib/structures/contexts/Context.ts | 4 +- 11 files changed, 136 insertions(+), 89 deletions(-) diff --git a/package-lock.json b/package-lock.json index b599ef47c..f398f5cab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ "@typescript-eslint/eslint-plugin": "5.23.0", "@typescript-eslint/parser": "5.23.0", "conventional-changelog-cli": "2.2.2", - "discord.js": "13.6.0", + "discord.js": "13.7.0", "eslint": "8.15.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-import": "2.26.0", @@ -554,30 +554,35 @@ } }, "node_modules/@discordjs/builders": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.11.0.tgz", - "integrity": "sha512-ZTB8yJdJKrKlq44dpWkNUrAtEJEq0gqpb7ASdv4vmq6/mZal5kOv312hQ56I/vxwMre+VIkoHquNUAfnTbiYtg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.13.0.tgz", + "integrity": "sha512-4L9y26KRNNU8Y7J78SRUN1Uhava9D8jfit/YqEaKi8gQRc7PdqKqk2poybo6RXaiyt/BgKYPfcjxT7WvzGfYCA==", "dev": true, "dependencies": { - "@sindresorhus/is": "^4.2.0", - "discord-api-types": "^0.26.0", - "ts-mixer": "^6.0.0", - "tslib": "^2.3.1", - "zod": "^3.11.6" + "@sapphire/shapeshift": "^2.0.0", + "@sindresorhus/is": "^4.6.0", + "discord-api-types": "^0.31.1", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.1", + "tslib": "^2.3.1" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=16.9.0" } }, + "node_modules/@discordjs/builders/node_modules/discord-api-types": { + "version": "0.31.2", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.31.2.tgz", + "integrity": "sha512-gpzXTvFVg7AjKVVJFH0oJGC0q0tO34iJGSHZNz9u3aqLxlD6LfxEs9wWVVikJqn9gra940oUTaPFizCkRDcEiA==", + "dev": true + }, "node_modules/@discordjs/collection": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.4.0.tgz", - "integrity": "sha512-zmjq+l/rV35kE6zRrwe8BHqV78JvIh2ybJeZavBi5NySjWXqN3hmmAKg7kYMMXSeiWtSsMoZ/+MQi0DiQWy2lw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.6.0.tgz", + "integrity": "sha512-Ieaetb36l0nmAS5X9Upqk4W7euAO6FdXPxn3I8vBAKEcoIzEZI1mcVcPfCfagGJZSgBKpENnAnKkP4GAn+MV8w==", "dev": true, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=16.9.0" } }, "node_modules/@discordjs/rest": { @@ -997,6 +1002,16 @@ "npm": ">=7.0.0" } }, + "node_modules/@sapphire/shapeshift": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-2.2.0.tgz", + "integrity": "sha512-UEnKgMlQyI0yY/q+lCMX0VJft9y86IsesgbIQj6e62FBYSaMVr+IaMNpi4z45Q14VnuMACbK0yrbHISNqgUYcQ==", + "dev": true, + "engines": { + "node": ">=v15.0.0", + "npm": ">=7.0.0" + } + }, "node_modules/@sapphire/snowflake": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.1.tgz", @@ -1007,9 +1022,9 @@ } }, "node_modules/@sindresorhus/is": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", - "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "engines": { "node": ">=10" @@ -1152,9 +1167,9 @@ } }, "node_modules/@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dev": true, "dependencies": { "@types/node": "*" @@ -2453,26 +2468,32 @@ } }, "node_modules/discord.js": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.6.0.tgz", - "integrity": "sha512-tXNR8zgsEPxPBvGk3AQjJ9ljIIC6/LOPjzKwpwz8Y1Q2X66Vi3ZqFgRHYwnHKC0jC0F+l4LzxlhmOJsBZDNg9g==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.7.0.tgz", + "integrity": "sha512-iV/An3FEB/CiBGdjWHRtgskM4UuWPq5vjhjKsrQhdVU16dbKrBxA+eIV2HWA07B3tXUGM6eco1wkr42gxxV1BA==", "dev": true, "dependencies": { - "@discordjs/builders": "^0.11.0", - "@discordjs/collection": "^0.4.0", - "@sapphire/async-queue": "^1.1.9", - "@types/node-fetch": "^2.5.12", - "@types/ws": "^8.2.2", - "discord-api-types": "^0.26.0", + "@discordjs/builders": "^0.13.0", + "@discordjs/collection": "^0.6.0", + "@sapphire/async-queue": "^1.3.1", + "@types/node-fetch": "^2.6.1", + "@types/ws": "^8.5.3", + "discord-api-types": "^0.30.0", "form-data": "^4.0.0", "node-fetch": "^2.6.1", - "ws": "^8.4.0" + "ws": "^8.6.0" }, "engines": { "node": ">=16.6.0", "npm": ">=7.0.0" } }, + "node_modules/discord.js/node_modules/discord-api-types": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.30.0.tgz", + "integrity": "sha512-wYst0jrT8EJs2tVlwUTQ2xT0oWMjUrRMpFTkNY3NMleWyQNHgWaKhqFfxdLPdC2im9IuR5EsxcEgjhf/npeftw==", + "dev": true + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -6464,9 +6485,9 @@ } }, "node_modules/ts-mixer": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz", - "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", + "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==", "dev": true }, "node_modules/ts-node": { @@ -6866,9 +6887,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", "dev": true, "engines": { "node": ">=10.0.0" @@ -7373,22 +7394,31 @@ } }, "@discordjs/builders": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.11.0.tgz", - "integrity": "sha512-ZTB8yJdJKrKlq44dpWkNUrAtEJEq0gqpb7ASdv4vmq6/mZal5kOv312hQ56I/vxwMre+VIkoHquNUAfnTbiYtg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.13.0.tgz", + "integrity": "sha512-4L9y26KRNNU8Y7J78SRUN1Uhava9D8jfit/YqEaKi8gQRc7PdqKqk2poybo6RXaiyt/BgKYPfcjxT7WvzGfYCA==", "dev": true, "requires": { - "@sindresorhus/is": "^4.2.0", - "discord-api-types": "^0.26.0", - "ts-mixer": "^6.0.0", - "tslib": "^2.3.1", - "zod": "^3.11.6" + "@sapphire/shapeshift": "^2.0.0", + "@sindresorhus/is": "^4.6.0", + "discord-api-types": "^0.31.1", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.1", + "tslib": "^2.3.1" + }, + "dependencies": { + "discord-api-types": { + "version": "0.31.2", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.31.2.tgz", + "integrity": "sha512-gpzXTvFVg7AjKVVJFH0oJGC0q0tO34iJGSHZNz9u3aqLxlD6LfxEs9wWVVikJqn9gra940oUTaPFizCkRDcEiA==", + "dev": true + } } }, "@discordjs/collection": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.4.0.tgz", - "integrity": "sha512-zmjq+l/rV35kE6zRrwe8BHqV78JvIh2ybJeZavBi5NySjWXqN3hmmAKg7kYMMXSeiWtSsMoZ/+MQi0DiQWy2lw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.6.0.tgz", + "integrity": "sha512-Ieaetb36l0nmAS5X9Upqk4W7euAO6FdXPxn3I8vBAKEcoIzEZI1mcVcPfCfagGJZSgBKpENnAnKkP4GAn+MV8w==", "dev": true }, "@discordjs/rest": { @@ -7748,15 +7778,21 @@ "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", "integrity": "sha512-FFTlPOWZX1kDj9xCAsRzH5xEJfawg1lNoYAA+ecOWJMHOfiZYb1uXOI3ne9U4UILSEPwfE68p3T9wUHwIQfR0g==" }, + "@sapphire/shapeshift": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-2.2.0.tgz", + "integrity": "sha512-UEnKgMlQyI0yY/q+lCMX0VJft9y86IsesgbIQj6e62FBYSaMVr+IaMNpi4z45Q14VnuMACbK0yrbHISNqgUYcQ==", + "dev": true + }, "@sapphire/snowflake": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.2.1.tgz", "integrity": "sha512-vmZq1I6J6iNRQVXP+N9HzOMOY4ORB3MunoFeWCw/aBnZTf1cDgDvP0RZFQS53B1TN95AIgFY9T+ItQ/fWAUYWQ==" }, "@sindresorhus/is": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", - "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true }, "@tootallnate/once": { @@ -7889,9 +7925,9 @@ } }, "@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dev": true, "requires": { "@types/node": "*" @@ -8807,20 +8843,28 @@ "integrity": "sha512-T5PdMQ+Y1MEECYMV5wmyi9VEYPagEDEi4S0amgsszpWY0VB9JJ/hEvM6BgLhbdnKky4gfmZEXtEEtojN8ZKJQQ==" }, "discord.js": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.6.0.tgz", - "integrity": "sha512-tXNR8zgsEPxPBvGk3AQjJ9ljIIC6/LOPjzKwpwz8Y1Q2X66Vi3ZqFgRHYwnHKC0jC0F+l4LzxlhmOJsBZDNg9g==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.7.0.tgz", + "integrity": "sha512-iV/An3FEB/CiBGdjWHRtgskM4UuWPq5vjhjKsrQhdVU16dbKrBxA+eIV2HWA07B3tXUGM6eco1wkr42gxxV1BA==", "dev": true, "requires": { - "@discordjs/builders": "^0.11.0", - "@discordjs/collection": "^0.4.0", - "@sapphire/async-queue": "^1.1.9", - "@types/node-fetch": "^2.5.12", - "@types/ws": "^8.2.2", - "discord-api-types": "^0.26.0", + "@discordjs/builders": "^0.13.0", + "@discordjs/collection": "^0.6.0", + "@sapphire/async-queue": "^1.3.1", + "@types/node-fetch": "^2.6.1", + "@types/ws": "^8.5.3", + "discord-api-types": "^0.30.0", "form-data": "^4.0.0", "node-fetch": "^2.6.1", - "ws": "^8.4.0" + "ws": "^8.6.0" + }, + "dependencies": { + "discord-api-types": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.30.0.tgz", + "integrity": "sha512-wYst0jrT8EJs2tVlwUTQ2xT0oWMjUrRMpFTkNY3NMleWyQNHgWaKhqFfxdLPdC2im9IuR5EsxcEgjhf/npeftw==", + "dev": true + } } }, "doctrine": { @@ -11841,9 +11885,9 @@ "dev": true }, "ts-mixer": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz", - "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", + "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==", "dev": true }, "ts-node": { @@ -12146,9 +12190,9 @@ "dev": true }, "ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index 83a8c3787..3dc64e900 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "@typescript-eslint/eslint-plugin": "5.23.0", "@typescript-eslint/parser": "5.23.0", "conventional-changelog-cli": "2.2.2", - "discord.js": "13.6.0", + "discord.js": "13.7.0", "eslint": "8.15.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-import": "2.26.0", diff --git a/src/handlers/AutocompleteHandler.ts b/src/handlers/AutocompleteHandler.ts index 19bb67dd7..291e54e0c 100644 --- a/src/handlers/AutocompleteHandler.ts +++ b/src/handlers/AutocompleteHandler.ts @@ -3,7 +3,7 @@ import type { GClient } from '../lib/GClient'; import { Commands } from '../lib/managers/CommandManager'; import type { Argument, ArgumentOptions } from '../lib/structures/Argument'; import { AutocompleteContext } from '../lib/structures/contexts/AutocompleteContext'; -import { Logger, Events } from '../lib/util/logger/Logger'; +import { Events, Logger } from '../lib/util/logger/Logger'; export async function AutocompleteHandler( interaction: AutocompleteInteraction, @@ -36,6 +36,7 @@ export async function AutocompleteHandler( guild: interaction.guild, guildId: interaction.guildId, user: interaction.user, + // @ts-expect-error Idk what this is member: interaction.member, memberPermissions: interaction.memberPermissions, command: command, diff --git a/src/handlers/ComponentHandler.ts b/src/handlers/ComponentHandler.ts index c016427ff..90fac609e 100644 --- a/src/handlers/ComponentHandler.ts +++ b/src/handlers/ComponentHandler.ts @@ -6,7 +6,7 @@ import { Handlers } from '../lib/managers/HandlerManager'; import { ComponentType } from '../lib/structures/Component'; import { ComponentContext } from '../lib/structures/contexts/ComponentContext'; import { Util } from '../lib/util/Util'; -import { Logger, Events } from '../lib/util/logger/Logger'; +import { Events, Logger } from '../lib/util/logger/Logger'; const cooldowns = new Collection>(); @@ -56,12 +56,14 @@ export async function ComponentHandler( guild: interaction.guild, guildId: interaction.guildId, user: interaction.user, + // @ts-expect-error Idk what this is member: interaction.member, memberPermissions: interaction.memberPermissions, component: component, customId: interaction.customId, arguments: args, values: interaction.isSelectMenu() ? interaction.values : undefined, + fields: interaction.isModalSubmit() ? interaction.fields : undefined, deferReply: interaction.deferReply.bind(interaction), deferUpdate: interaction.deferUpdate.bind(interaction), deleteReply: interaction.deleteReply.bind(interaction), diff --git a/src/handlers/InteractionCommandHandler.ts b/src/handlers/InteractionCommandHandler.ts index 9fa227f2a..b7ad9e35b 100644 --- a/src/handlers/InteractionCommandHandler.ts +++ b/src/handlers/InteractionCommandHandler.ts @@ -9,7 +9,7 @@ import { Commands } from '../lib/managers/CommandManager'; import { Handlers } from '../lib/managers/HandlerManager'; import { CommandContext } from '../lib/structures/contexts/CommandContext'; import { Util } from '../lib/util/Util'; -import { Logger, Events } from '../lib/util/logger/Logger'; +import { Events, Logger } from '../lib/util/logger/Logger'; const cooldowns = new Collection>(); @@ -55,6 +55,7 @@ export async function InteractionCommandHandler( guild: interaction.guild, guildId: interaction.guildId, user: interaction.user, + // @ts-expect-error Idk what this is member: interaction.member, memberPermissions: interaction.memberPermissions, command: command, diff --git a/src/handlers/MessageCommandHandler.ts b/src/handlers/MessageCommandHandler.ts index 7cb7cb01d..c52bde1aa 100644 --- a/src/handlers/MessageCommandHandler.ts +++ b/src/handlers/MessageCommandHandler.ts @@ -3,7 +3,6 @@ import { Collection, CommandInteractionOptionResolver, Guild, - InteractionReplyOptions, Message, MessageAttachment, MessagePayload, @@ -24,7 +23,7 @@ import { } from '../lib/structures/arguments/base'; import { CommandContext } from '../lib/structures/contexts/CommandContext'; import { Util } from '../lib/util/Util'; -import { Logger, Events } from '../lib/util/logger/Logger'; +import { Events, Logger } from '../lib/util/logger/Logger'; import { MemberPermissions } from '../inhibitors'; const cooldowns = new Collection>(); @@ -204,6 +203,7 @@ export async function MessageCommandHandler( let replied: Message; const ctx = new CommandContext(client, { message: message, + // @ts-expect-error Idk what this is channel: message.channel, createdAt: message.createdAt, createdTimestamp: message.createdTimestamp, @@ -227,13 +227,7 @@ export async function MessageCommandHandler( fetchReply: async () => replied, followUp: message.reply.bind(message), // @ts-expect-error This will not be fixed (typings for interaction are more important) - reply: async ( - options: - | string - | MessagePayload - | ReplyMessageOptions - | InteractionReplyOptions, - ) => { + reply: async (options: string | MessagePayload | ReplyMessageOptions) => { const msg = await message.reply(options); replied = msg; return msg; diff --git a/src/lib/structures/Component.ts b/src/lib/structures/Component.ts index b6b4f7097..1ded63d27 100644 --- a/src/lib/structures/Component.ts +++ b/src/lib/structures/Component.ts @@ -8,6 +8,7 @@ import { Util } from '../util/Util'; export enum ComponentType { 'BUTTON' = 1, 'SELECT_MENU' = 2, + 'MODAL' = 3, } export type ComponentInhibitor = diff --git a/src/lib/structures/contexts/AutocompleteContext.ts b/src/lib/structures/contexts/AutocompleteContext.ts index 711a7c7cc..5387ced5a 100644 --- a/src/lib/structures/contexts/AutocompleteContext.ts +++ b/src/lib/structures/contexts/AutocompleteContext.ts @@ -24,7 +24,7 @@ export class AutocompleteContext< public readonly argumentName: string; public readonly value: string | number; public respond: (choices: Array) => Promise; - public inGuild: () => this is AutocompleteContext<'present'>; + public inGuild: () => this is AutocompleteContext; public inCachedGuild: () => this is AutocompleteContext<'cached'>; public inRawGuild: () => this is AutocompleteContext<'raw'>; diff --git a/src/lib/structures/contexts/CommandContext.ts b/src/lib/structures/contexts/CommandContext.ts index 3619cf472..9391715c0 100644 --- a/src/lib/structures/contexts/CommandContext.ts +++ b/src/lib/structures/contexts/CommandContext.ts @@ -69,7 +69,7 @@ export class CommandContext< | MessagePayload | InteractionReplyOptions, ) => Promise : void>; - public inGuild: () => this is CommandContext<'present'>; + public inGuild: () => this is CommandContext; public inCachedGuild: () => this is CommandContext<'cached'>; public inRawGuild: () => this is CommandContext<'raw'>; diff --git a/src/lib/structures/contexts/ComponentContext.ts b/src/lib/structures/contexts/ComponentContext.ts index f88b94d3c..5589b6be7 100644 --- a/src/lib/structures/contexts/ComponentContext.ts +++ b/src/lib/structures/contexts/ComponentContext.ts @@ -6,6 +6,7 @@ import type { InteractionReplyOptions, MessageComponentInteraction, MessagePayload, + ModalSubmitFieldsResolver, WebhookEditMessageOptions, } from 'discord.js'; import { Context, ContextOptions } from './Context'; @@ -19,6 +20,7 @@ export interface ComponentContextOptions customId: string; arguments: Array; values?: Array; + fields?: ModalSubmitFieldsResolver; deferReply: ( options?: InteractionDeferReplyOptions & { fetchReply?: Fetch }, ) => Promise : void>; @@ -52,6 +54,7 @@ export class ComponentContext< public readonly customId: string; public arguments: Array; public values?: Array; + public fields?: ModalSubmitFieldsResolver; public deferred = false; public replied = false; public deferReply: ( @@ -75,7 +78,7 @@ export class ComponentContext< | MessagePayload | InteractionReplyOptions, ) => Promise : void>; - public inGuild: () => this is ComponentContext<'present'>; + public inGuild: () => this is ComponentContext; public inCachedGuild: () => this is ComponentContext<'cached'>; public inRawGuild: () => this is ComponentContext<'raw'>; @@ -87,6 +90,7 @@ export class ComponentContext< this.customId = options.customId; this.arguments = options.arguments; this.values = options.values; + this.fields = options.fields; this.deferReply = async opt => { const message = await options.deferReply(opt); this.deferred = true; diff --git a/src/lib/structures/contexts/Context.ts b/src/lib/structures/contexts/Context.ts index 557d13830..7747cee9c 100644 --- a/src/lib/structures/contexts/Context.ts +++ b/src/lib/structures/contexts/Context.ts @@ -1,4 +1,3 @@ -import type { APIInteractionGuildMember } from 'discord-api-types/v9'; import type { CacheType, CacheTypeReducer, @@ -14,6 +13,7 @@ import type { AutocompleteContext } from './AutocompleteContext'; import type { CommandContext } from './CommandContext'; import type { ComponentContext } from './ComponentContext'; import type { GClient } from '../../GClient'; +import type { APIInteractionGuildMember } from 'discord-api-types/v9'; export interface ContextOptions { channel: CacheTypeReducer< @@ -71,7 +71,7 @@ export class Context { this.memberPermissions = options.memberPermissions; } - public inGuild(): this is Context<'present'> { + public inGuild(): this is Context { return Boolean(this.guildId && this.member); }