diff --git a/commands/archive.js b/commands/archive.js index 1477623..f2581e5 100644 --- a/commands/archive.js +++ b/commands/archive.js @@ -1,97 +1,99 @@ +const { Constants } = require('discord.js'); + module.exports = { - name: "archive", - description: "Archives the links from any website to discord", - async execute(message, args, list, client, Discord) { + name: "archive", + description: "Archives the links from any website to discord", + async execute(interaction, list, client, Discord) { + const link = interaction.options.data.filter((arg) => { return (arg.value == 'url'); })[0].value; - //FUNCTION SECTION START + //FUNCTION SECTION START - function findName(name) { - return (name == 'instagram' || name == 'twitter' || name == 'reddit' || name == 'youtube' || name == 'other' || name == 'nsfw'); - } + function findName(name) { + return (name == 'instagram' || name == 'twitter' || name == 'reddit' || name == 'youtube' || name == 'other' || name == 'nsfw'); + } - //FUNCTION SECTION END - - if (args[0] == "help") { - message.channel.send("Command Format:\n/archive (link) [thread]\nFormat: (required)[optional]"); - } - else if (args.length < 1) { - message.channel.send("ERROR!\nYou are missing arguments!"); - return; - } + //FUNCTION SECTION END - - let website = args[0]; - let channelName = website.split("//")[1]; - if (channelName == 0) { - message.channel.send("Please provide a valid link!"); - return; - } - let namesList = ['instagram', 'twitter', 'reddit', 'youtube','other', 'nsfw']; - let channelNum; - - //Check if there is a www - if (channelName[0] == 'w') { - channelName = channelName.split(".")[1]; - } + if (link == "help") { + interaction.channel.send("Command Format:\n/archive (link) [thread]\nFormat: (required)[optional]"); + } - //Get the name - channelName = channelName.split(".")[0]; - //Check for NSFW - let subch ='General'; - let nsfw = ((channelName.indexOf("porn") != -1) || (channelName.indexOf("hentai") != -1)); - - //Channel Name Section - if (findName(channelName)) { - channelNum = '' + list[namesList.indexOf(channelName)]; + let website = link; + let channelName = website.split("//")[1]; + if (channelName == 0) { + interaction.channel.send("Please provide a valid link!"); + return; + } + let namesList = ['instagram', 'twitter', 'reddit', 'youtube', 'other', 'nsfw']; + let channelNum; + + //Check if there is a www + if (channelName[0] == 'w') { + channelName = channelName.split(".")[1]; + } + + //Get the name + channelName = channelName.split(".")[0]; + + //Check for NSFW + let subch = 'General'; + let nsfw = ((channelName.indexOf("porn") != -1) || (channelName.indexOf("hentai") != -1)); + + //Channel Name Section + if (findName(channelName)) { + channelNum = '' + list[namesList.indexOf(channelName)]; + } else { + if (nsfw) { + subch = channelName; + channelName = 'nsfw'; + channelNum = '' + list[namesList.indexOf('nsfw')]; } else { - if (nsfw) { - subch = channelName; - channelName = 'nsfw'; - channelNum = '' + list[namesList.indexOf('nsfw')]; - } else { - subch = channelName; - channelNum = '' + list[namesList.indexOf('other')]; - } + subch = channelName; + channelNum = '' + list[namesList.indexOf('other')]; + } + } + + const channel = client.channels.cache.get(channelNum); + + //Check if the channel already exists + if (channel) { + //Thread section + let threadName; + + //Get the channel name or default + if (interaction.options.data.length > 1) { + threadName = interaction.options.data.filter((arg) => { return (arg.value == 'thread'); })[0].value; + } else { + threadName = subch; } - const channel = client.channels.cache.get(channelNum); + //Un-archive the thread (if archived) + const thread = channel.threads.cache.find(x => x.name === threadName); + // await thread.setArchived(false); + if (thread == undefined) { console.log(threadName); } - //Check if the channel already exists - if (channel) { - //Thread section - let threadName; + if (thread == undefined) { + let ID = interaction.user.id; + const thread = await channel.threads.create({ + name: threadName, + autoArchiveDuration: 60, + //message.client.users.fetch(ID); + reason: 'To archive of course!', + }); + thread.send(link); - //Get the channel name or default - if (args.length > 1) { - threadName = args[1]; - } else { - threadName = subch; - } - - //Un-archive the thread (if archived) + console.log(`Created thread: ${thread.name}`); + } else { const thread = channel.threads.cache.find(x => x.name === threadName); - // await thread.setArchived(false); - if (thread == undefined) { console.log(threadName); } - - if (thread == undefined) { - let ID = message.member.id; - const thread = await channel.threads.create({ - name: threadName, - autoArchiveDuration: 60, - //message.client.users.fetch(ID); - reason: 'N/A', - }); - thread.send(args[0]); - - console.log(`Created thread: ${thread.name}`); - } else { - const thread = channel.threads.cache.find(x => x.name === threadName); - //await thread.setArchived(false); //Unarchive - thread.send(args[0]); - } - } else { - message.channel.send("Uh oh, looks like this channel doesn't exist yet!"); + //await thread.setArchived(false); //Unarchive + thread.send(link); } - } + } else { + interaction.channel.send("Uh oh, looks like this channel doesn't exist yet!"); + } + }, options: [ + {name: 'url', description: 'The URL to archive', type: Constants.ApplicationCommandOptionTypes.STRING, required: true }, + {name: 'thread', description: 'The thread name (defaults to "General" or "NSFW"', type: Constants.ApplicationCommandOptionTypes.STRING, required: false } + ] } \ No newline at end of file diff --git a/index.js b/index.js index 1ac0d8b..4400316 100644 --- a/index.js +++ b/index.js @@ -24,7 +24,7 @@ const nsfw = process.env['nsfw']; const list = [inst, twit, redd, you, oth, nsfw] -const client = new Client({ +const bot = new Client({ intents: [ Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, @@ -36,43 +36,43 @@ const prefix = '/'; const emojiPrefix = "<:archive:"; const fs = require('fs'); -const { exit } = require('process'); -client.commands = new Discord.Collection(); -client.commNames = new Discord.Collection(); +// client.commands = new Discord.Collection(); +// client.commNames = new Discord.Collection(); const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js')); let i = 0; +const commands = bot.application.commands; for (const file of commandFiles) { const command = require(`./commands/${file}`); - client.commands.set(command.name, command); - client.commNames.set(i, [command.name, command.description]); + commands.create({ + name: command.name, + description: command.description, + options: command.options, + dm_permission: false, + }); i ++; } +client.on('interactionCreate', async interaction => { + const { commandName } = interaction; -client.commNames.set('length', i); - - + if (commandName == 'archive') { + const arch = require('./commands/archive.js'); + arch.execute(interaction, list, bot, Discord); + } else { + interaction.reply("Invalid Command!"); + } +}); // client.on('ready', () => { // console.log('Archive Bot online!'); // }); +/* client.on('messageCreate', (message) => { - - /*//PREVIEW COMMANDS START - const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN}); - - lib.discord.commands['@0.0.0'].create({ - "name": "test", - "description": "it's a test command!", - "options": [] - }); - - //PREVIEW COMMANDS END*/ //COMMAND AREA //Check if the prefix exists @@ -100,8 +100,8 @@ client.on('messageCreate', (message) => { default: message.channel.send("'" + message.content + "' is not a command!"); } }) - +*/ //Last Line -client.login(token); \ No newline at end of file +bot.login(token); \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index cc8b2be..2d1dcc6 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -4,59 +4,66 @@ "requires": true, "packages": { "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.16.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.16.0.tgz", + "integrity": "sha512-9/NCiZrLivgRub2/kBc0Vm5pMBE5AUdYbdXsLu/yg9ANgvnaJ0bZKTY8yYnLbsEc/LYUP79lEIdC73qEYhWq7A==", + "deprecated": "no longer supported", "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": "^3.5.1", + "discord-api-types": "^0.36.2", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.1", + "tslib": "^2.4.0" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=16.9.0" } }, + "node_modules/@discordjs/builders/node_modules/discord-api-types": { + "version": "0.36.3", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.36.3.tgz", + "integrity": "sha512-bz/NDyG0KBo/tY14vSkrwQ/n3HKPf87a0WFW/1M9+tXYK+vp5Z5EksawfCWo2zkAc6o7CClc0eff1Pjrqznlwg==" + }, "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.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", + "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==", + "deprecated": "no longer supported", "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=16.9.0" } }, "node_modules/@sapphire/async-queue": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.0.tgz", - "integrity": "sha512-z+CDw5X4UgIEpZL8KM+ThVx1i8V60HBg0l/oFewTNbQQeRDJHdVxHyJykv+SF1H+Rc8EkMS81VTWo95jVYgO/g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", + "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", "engines": { "node": ">=v14.0.0", "npm": ">=7.0.0" } }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "engines": { - "node": ">=10" + "node_modules/@sapphire/shapeshift": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.6.0.tgz", + "integrity": "sha512-tu2WLRdo5wotHRvsCkspg3qMiP6ETC3Q1dns1Q5V6zKUki+1itq6AbhMwohF9ZcLoYqg+Y8LkgRRtVxxTQVTBQ==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "lodash.uniqwith": "^4.5.0" }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" } }, "node_modules/@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==" + "version": "18.7.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.22.tgz", + "integrity": "sha512-TsmoXYd4zrkkKjJB0URF/mTIKPl+kVcbqClB2F/ykU7vil1BfWZVndOnpEIozPv4fURD28gyPFeIkW2G+KXOvw==" }, "node_modules/@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", "dependencies": { "@types/node": "*", "form-data": "^3.0.0" @@ -98,31 +105,34 @@ "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/bytes": { @@ -133,6 +143,18 @@ "node": ">= 0.8" } }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -164,9 +186,9 @@ } }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "engines": { "node": ">= 0.6" } @@ -174,12 +196,12 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/daemon": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/daemon/-/daemon-1.1.0.tgz", - "integrity": "sha1-bFECyB2wvoVvyQCPwsk1s5iGSug=", + "integrity": "sha512-1vX9YVcP21gt12nSD3SQRC/uPU7fyA6M8qyClTBIFuiRWoylFn57PwXhjBAqRl085bZAje7sILhZU48qcS9SWw==", "engines": { "node": ">= 0.8.0" } @@ -195,46 +217,47 @@ "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { "node": ">=0.4.0" } }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/discord-api-types": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.26.1.tgz", - "integrity": "sha512-T5PdMQ+Y1MEECYMV5wmyi9VEYPagEDEi4S0amgsszpWY0VB9JJ/hEvM6BgLhbdnKky4gfmZEXtEEtojN8ZKJQQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "engines": { - "node": ">=12" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/discord-api-types": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", + "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" + }, "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.11.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.11.0.tgz", + "integrity": "sha512-/vA6oQtKilFlwVZSIFipPeWg5kU6gjUOffuaYWtDDJwIXKqiThNdymLkmQhnf8Ztlt+3vKsoqXENrgpQdaNCVQ==", "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.16.0", + "@discordjs/collection": "^0.7.0", + "@sapphire/async-queue": "^1.5.0", + "@types/node-fetch": "^2.6.2", + "@types/ws": "^8.5.3", + "discord-api-types": "^0.33.5", "form-data": "^4.0.0", - "node-fetch": "^2.6.1", - "ws": "^8.4.0" + "node-fetch": "^2.6.7", + "ws": "^8.8.1" }, "engines": { "node": ">=16.6.0", @@ -244,12 +267,12 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { "node": ">= 0.8" } @@ -257,48 +280,49 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { "node": ">= 0.6" } }, "node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.2", + "body-parser": "1.20.0", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.2", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.7", + "qs": "6.10.3", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -307,17 +331,22 @@ "node": ">= 0.10.0" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -348,24 +377,64 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { "node": ">= 0.6" } }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dependencies": { - "depd": "~1.1.2", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/iconv-lite": { @@ -387,7 +456,7 @@ "node_modules/init": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/init/-/init-0.1.2.tgz", - "integrity": "sha1-mIKsFScHvMun/iIHyN+AUIdcFQQ=", + "integrity": "sha512-IvHUjULS2q+BXJdiu4FHkByh3+qSFmkOXQ2ItSfYTtkdUksQc0yNX6f1uDyokzRV71tjpFsFc3ckeYLJXunTGw==", "dependencies": { "daemon": ">=0.3.0" }, @@ -403,10 +472,15 @@ "node": ">= 0.10" } }, + "node_modules/lodash.uniqwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz", + "integrity": "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==" + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { "node": ">= 0.6" } @@ -414,12 +488,12 @@ "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "engines": { "node": ">= 0.6" } @@ -457,7 +531,7 @@ "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/negotiator": { "version": "0.6.3", @@ -486,10 +560,18 @@ } } }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dependencies": { "ee-first": "1.1.1" }, @@ -508,7 +590,7 @@ "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, "node_modules/proxy-addr": { "version": "2.0.7", @@ -523,9 +605,12 @@ } }, "node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" }, @@ -542,12 +627,12 @@ } }, "node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dependencies": { "bytes": "3.1.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -580,23 +665,23 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -608,14 +693,14 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" @@ -626,12 +711,25 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/toidentifier": { @@ -645,7 +743,7 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/ts-mixer": { "version": "6.0.1", @@ -653,9 +751,9 @@ "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" }, "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/type-is": { "version": "1.6.18", @@ -672,7 +770,7 @@ "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "engines": { "node": ">= 0.8" } @@ -680,7 +778,7 @@ "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "engines": { "node": ">= 0.4.0" } @@ -688,7 +786,7 @@ "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "engines": { "node": ">= 0.8" } @@ -696,21 +794,21 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", "engines": { "node": ">=10.0.0" }, @@ -726,14 +824,6 @@ "optional": true } } - }, - "node_modules/zod": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.14.2.tgz", - "integrity": "sha512-iF+wrtzz7fQfkmn60PG6XFxaWBhYYKzp2i+nv24WbLUWb2JjymdkHlzBwP0erpc78WotwP5g9AAu7Sk8GWVVNw==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } } } } diff --git a/node_modules/@discordjs/builders/CHANGELOG.md b/node_modules/@discordjs/builders/CHANGELOG.md new file mode 100644 index 0000000..97ab7e5 --- /dev/null +++ b/node_modules/@discordjs/builders/CHANGELOG.md @@ -0,0 +1,246 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +# [@discordjs/builders@0.16.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.15.0...@discordjs/builders@0.16.0) - (2022-07-17) + +## Bug Fixes + +- Slash command name regex (#8265) ([32f9056](https://github.com/discordjs/discord.js/commit/32f9056b15edede3bab07de96afb4b56d3a9ecca)) +- **TextInputBuilder:** Parse `custom_id`, `label`, and `style` (#8216) ([2d9dfa3](https://github.com/discordjs/discord.js/commit/2d9dfa3c6ea4bb972da2f7e088d148b798c866d9)) + +## Documentation + +- Add codecov coverage badge to readmes (#8226) ([f6db285](https://github.com/discordjs/discord.js/commit/f6db285c073898a749fe4591cbd4463d1896daf5)) + +## Features + +- **builder:** Add max min length in string option (#8214) ([96c8d21](https://github.com/discordjs/discord.js/commit/96c8d21f95eb366c46ae23505ba9054f44821b25)) +- Codecov (#8219) ([f10f4cd](https://github.com/discordjs/discord.js/commit/f10f4cdcd88ca6be7ec735ed3a415ba13da83db0)) +- **docgen:** Update typedoc ([b3346f4](https://github.com/discordjs/discord.js/commit/b3346f4b9b3d4f96443506643d4631dc1c6d7b21)) +- Website (#8043) ([127931d](https://github.com/discordjs/discord.js/commit/127931d1df7a2a5c27923c2f2151dbf3824e50cc)) +- **docgen:** Typescript support ([3279b40](https://github.com/discordjs/discord.js/commit/3279b40912e6aa61507bedb7db15a2b8668de44b)) +- Docgen package (#8029) ([8b979c0](https://github.com/discordjs/discord.js/commit/8b979c0245c42fd824d8e98745ee869f5360fc86)) + +## Refactor + +- **builder:** Remove `unsafe*Builder`s (#8074) ([a4d1862](https://github.com/discordjs/discord.js/commit/a4d18629828234f43f03d1bd4851d4b727c6903b)) +- Remove @sindresorhus/is as it's now esm only (#8133) ([c6f285b](https://github.com/discordjs/discord.js/commit/c6f285b7b089b004776fbeb444fe973a68d158d8)) +- Move all the config files to root (#8033) ([769ea0b](https://github.com/discordjs/discord.js/commit/769ea0bfe78c4f1d413c6b397c604ffe91e39c6a)) + +## Typings + +- Remove expect error (#8242) ([7e6dbaa](https://github.com/discordjs/discord.js/commit/7e6dbaaed900c07d1a04e23bbbf9cd0d1b0501c5)) +- **builder:** Remove casting (#8241) ([8198da5](https://github.com/discordjs/discord.js/commit/8198da5cd0898e06954615a2287853321e7ebbd4)) + +# [@discordjs/builders@0.15.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.14.0...@discordjs/builders@0.15.0) - (2022-06-06) + +## Features + +- Allow builders to accept rest params and arrays (#7874) ([ad75be9](https://github.com/discordjs/discord.js/commit/ad75be9a9cf90c8624495df99b75177e6c24022f)) +- Use vitest instead of jest for more speed ([8d8e6c0](https://github.com/discordjs/discord.js/commit/8d8e6c03decd7352a2aa180f6e5bc1a13602539b)) +- Add scripts package for locally used scripts ([f2ae1f9](https://github.com/discordjs/discord.js/commit/f2ae1f9348bfd893332a9060f71a8a5f272a1b8b)) + +# [@discordjs/builders@0.15.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.14.0...@discordjs/builders@0.15.0) - (2022-06-05) + +## Features + +- Allow builders to accept rest params and arrays (#7874) ([ad75be9](https://github.com/discordjs/discord.js/commit/ad75be9a9cf90c8624495df99b75177e6c24022f)) +- Use vitest instead of jest for more speed ([8d8e6c0](https://github.com/discordjs/discord.js/commit/8d8e6c03decd7352a2aa180f6e5bc1a13602539b)) +- Add scripts package for locally used scripts ([f2ae1f9](https://github.com/discordjs/discord.js/commit/f2ae1f9348bfd893332a9060f71a8a5f272a1b8b)) + +# [@discordjs/builders@0.14.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.13.0...@discordjs/builders@0.14.0) - (2022-06-04) + +## Bug Fixes + +- **builders:** Leftover invalid null type ([8a7cd10](https://github.com/discordjs/discord.js/commit/8a7cd10554a2a71cd2fe7f6a177b5f4f43464348)) +- **SlashCommandBuilder:** Import `Permissions` correctly (#7921) ([7ce641d](https://github.com/discordjs/discord.js/commit/7ce641d33a4af6586d5e7beffbe7d38619dcf1a2)) +- Add localizations for subcommand builders and option choices (#7862) ([c1b5e73](https://github.com/discordjs/discord.js/commit/c1b5e731daa9cbbfca03a046e47cb1221ee1ed7c)) + +## Features + +- Export types from `interactions/slashCommands/mixins` (#7942) ([68d5169](https://github.com/discordjs/discord.js/commit/68d5169f66c96f8fe5be17a1c01cdd5155607ab2)) +- **builders:** Add new command permissions v2 (#7861) ([de3f157](https://github.com/discordjs/discord.js/commit/de3f1573f07dda294cc0fbb1ca4b659eb2388a12)) +- **builders:** Improve embed errors and predicates (#7795) ([ec8d87f](https://github.com/discordjs/discord.js/commit/ec8d87f93272cc9987f9613735c0361680c4ed1e)) + +## Refactor + +- Use arrays instead of rest parameters for builders (#7759) ([29293d7](https://github.com/discordjs/discord.js/commit/29293d7bbb5ed463e52e5a5853817e5a09cf265b)) + +## Styling + +- Cleanup tests and tsup configs ([6b8ef20](https://github.com/discordjs/discord.js/commit/6b8ef20cb3af5b5cfd176dd0aa0a1a1e98551629)) + +# [@discordjs/builders@0.13.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.12.0...@discordjs/builders@0.13.0) - (2022-04-17) + +## Bug Fixes + +- Validate select menu options (#7566) ([b1d63d9](https://github.com/discordjs/discord.js/commit/b1d63d919a61f309ac89f27016b0f148678dac2b)) +- **SelectMenu:** Set `placeholder` max to 150 (#7538) ([dcd4797](https://github.com/discordjs/discord.js/commit/dcd479767b6ec980a373f2ea1f22754f41661c1e)) +- Only check `instanceof Component` once (#7546) ([0aa4851](https://github.com/discordjs/discord.js/commit/0aa48516a4e33497e8e8dc50da164a57cdee09d3)) +- **builders:** Allow negative min/max value of number/integer option (#7484) ([3baa340](https://github.com/discordjs/discord.js/commit/3baa340821b8ecf8a16253bc0917a1033250d7c9)) +- **components:** SetX should take rest parameters (#7461) ([3617359](https://github.com/discordjs/discord.js/commit/36173590a712f041b087b7882054805a8bd42dae)) +- Unsafe embed builder field normalization (#7418) ([b936103](https://github.com/discordjs/discord.js/commit/b936103395121cb21a8c616f669ddab1d2efb0f1)) +- Fix some typos (#7393) ([92a04f4](https://github.com/discordjs/discord.js/commit/92a04f4d98f6c6760214034cc8f5a1eaa78893c7)) +- **builders:** Make type optional in constructor (#7391) ([4abb28c](https://github.com/discordjs/discord.js/commit/4abb28c0a1256c57a60369a6b8ec9e98c265b489)) +- Don't create new instances of builders classes (#7343) ([d6b56d0](https://github.com/discordjs/discord.js/commit/d6b56d0080c4c5f8ace731f1e8bcae0c9d3fb5a5)) + +## Documentation + +- Completely fix builders example link (#7543) ([1a14c0c](https://github.com/discordjs/discord.js/commit/1a14c0ca562ea173d363a770a0437209f461fd23)) +- Add slash command builders example, fixes #7338 (#7339) ([3ae6f3c](https://github.com/discordjs/discord.js/commit/3ae6f3c313091151245d6e6b52337b459ecfc765)) + +## Features + +- Slash command localization for builders (#7683) ([40b9a1d](https://github.com/discordjs/discord.js/commit/40b9a1d67d0b508ec593e030913acd8161cd17f8)) +- Add API v10 support (#7477) ([72577c4](https://github.com/discordjs/discord.js/commit/72577c4bfd02524a27afb6ff4aebba9301a690d3)) +- Add support for module: NodeNext in TS and ESM (#7598) ([8f1986a](https://github.com/discordjs/discord.js/commit/8f1986a6aa98365e09b00e84ad5f9f354ab61f3d)) +- Add Modals and Text Inputs (#7023) ([ed92015](https://github.com/discordjs/discord.js/commit/ed920156344233241a21b0c0b99736a3a855c23c)) +- Add missing `v13` component methods (#7466) ([f7257f0](https://github.com/discordjs/discord.js/commit/f7257f07655076eabfe355cb6a53260b39ca9670)) +- **builders:** Add attachment command option type (#7203) ([ae0f35f](https://github.com/discordjs/discord.js/commit/ae0f35f51d68dfa5a7dc43d161ef9365171debdb)) +- **components:** Add unsafe message component builders (#7387) ([6b6222b](https://github.com/discordjs/discord.js/commit/6b6222bf513d1ee8cd98fba0ad313def560b864f)) +- **embed:** Add setFields (#7322) ([bcc5cda](https://github.com/discordjs/discord.js/commit/bcc5cda8a902ddb28c7e3578e0f29b4272832624)) + +## Refactor + +- Remove nickname parsing (#7736) ([78a3afc](https://github.com/discordjs/discord.js/commit/78a3afcd7fdac358e06764cc0d675e1215c785f3)) +- Replace zod with shapeshift (#7547) ([3c0bbac](https://github.com/discordjs/discord.js/commit/3c0bbac82fa9988af4a62ff00c66d149fbe6b921)) +- Remove store channels (#7634) ([aedddb8](https://github.com/discordjs/discord.js/commit/aedddb875e740e1f1bd77f06ce1b361fd3b7bc36)) +- Allow builders to accept emoji strings (#7616) ([fb9a9c2](https://github.com/discordjs/discord.js/commit/fb9a9c221121ee1c7986f9c775b77b9691a0ae15)) +- Don't return builders from API data (#7584) ([549716e](https://github.com/discordjs/discord.js/commit/549716e4fcec89ca81216a6d22aa8e623175e37a)) +- Remove obsolete builder methods (#7590) ([10607db](https://github.com/discordjs/discord.js/commit/10607dbdafe257c5cbf5b952b7eecec4919e8b4a)) +- **Embed:** Remove add field (#7522) ([8478d2f](https://github.com/discordjs/discord.js/commit/8478d2f4de9ac013733850cbbc67902f7c5abc55)) +- Make `data` public in builders (#7486) ([ba31203](https://github.com/discordjs/discord.js/commit/ba31203a0ad96e0a00f8312c397889351e4c5cfd)) +- **embed:** Remove array support in favor of rest params (#7498) ([b3fa2ec](https://github.com/discordjs/discord.js/commit/b3fa2ece402839008738ad3adce3db958445838d)) +- **components:** Default set boolean methods to true (#7502) ([b122149](https://github.com/discordjs/discord.js/commit/b12214922cea2f43afbe6b1555a74a3c8e16f798)) +- Make public builder props getters (#7422) ([e8252ed](https://github.com/discordjs/discord.js/commit/e8252ed3b981a4b7e4013f12efadd2f5d9318d3e)) +- **builders-methods:** Make methods consistent (#7395) ([f495364](https://github.com/discordjs/discord.js/commit/f4953647ff9f39127978c73bf8a62c08462802ca)) +- Remove conditional autocomplete option return types (#7396) ([0909824](https://github.com/discordjs/discord.js/commit/09098240bfb13b8afafa4ab549f06d236e0ff1c9)) +- **embed:** Mark properties as readonly (#7332) ([31768fc](https://github.com/discordjs/discord.js/commit/31768fcd69ed5b4566a340bda89ce881418e8272)) + +## Typings + +- Fix regressions (#7649) ([5748dbe](https://github.com/discordjs/discord.js/commit/5748dbe08783beb80c526de38ccd105eb0e82664)) + +# [@discordjs/builders@0.12.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.11.0...@discordjs/builders@0.12.0) - (2022-01-24) + +## Bug Fixes + +- **builders:** Dont export `Button` component stuff twice (#7289) ([86d9d06](https://github.com/discordjs/discord.js/commit/86d9d0674347c08d056cd054cb4ce4253195bf94)) + +## Documentation + +- **SlashCommandSubcommands:** Updating old links from Discord developer portal (#7224) ([bd7a6f2](https://github.com/discordjs/discord.js/commit/bd7a6f265212624199fb0b2ddc8ece39759c63de)) + +## Features + +- Add components to /builders (#7195) ([2bb40fd](https://github.com/discordjs/discord.js/commit/2bb40fd767cf5918e3ba422ff73082734bfa05b0)) + +## Typings + +- Make `required` a boolean (#7307) ([c10afea](https://github.com/discordjs/discord.js/commit/c10afeadc702ab98bec5e077b3b92494a9596f9c)) + +# [0.11.0](https://github.com/discordjs/builders/compare/v0.10.0...v0.11.0) (2021-12-29) + +## Bug Fixes + +- **ApplicationCommandOptions:** clean up code for builder options ([#68](https://github.com/discordjs/builders/issues/68)) ([b5d0b15](https://github.com/discordjs/builders/commit/b5d0b157b1262bd01fa011f8e0cf33adb82776e7)) + +# [0.10.0](https://github.com/discordjs/builders/compare/v0.9.0...v0.10.0) (2021-12-24) + +## Bug Fixes + +- use zod instead of ow for max/min option validation ([#66](https://github.com/discordjs/builders/issues/66)) ([beb35fb](https://github.com/discordjs/builders/commit/beb35fb1f65bd6be2321e17cc792f67e8615fd48)) + +## Features + +- add max/min option for int and number builder options ([#47](https://github.com/discordjs/builders/issues/47)) ([2e1e860](https://github.com/discordjs/builders/commit/2e1e860b46e3453398b20df63dabb6d4325e32d1)) + +# [0.9.0](https://github.com/discordjs/builders/compare/v0.8.2...v0.9.0) (2021-12-02) + +## Bug Fixes + +- replace ow with zod ([#58](https://github.com/discordjs/builders/issues/58)) ([0b6fb81](https://github.com/discordjs/builders/commit/0b6fb8161b858e42781855fb73aaa873fec58160)) + +## Features + +- **SlashCommandBuilder:** add autocomplete ([#53](https://github.com/discordjs/builders/issues/53)) ([05b07a7](https://github.com/discordjs/builders/commit/05b07a7e88848188c27d7380d9f948cba25ef778)) + +## [0.8.2](https://github.com/discordjs/builders/compare/v0.8.1...v0.8.2) (2021-10-30) + +## Bug Fixes + +- downgrade ow because of esm issues ([#55](https://github.com/discordjs/builders/issues/55)) ([3722d2c](https://github.com/discordjs/builders/commit/3722d2c1109a7a5c0abad63c1a7eb944df6e46c8)) + +## [0.8.1](https://github.com/discordjs/builders/compare/v0.8.0...v0.8.1) (2021-10-29) + +## Bug Fixes + +- documentation ([e33ec8d](https://github.com/discordjs/builders/commit/e33ec8dfd5785312f82e0afb017a3dac614fd71d)) + +# [0.7.0](https://github.com/discordjs/builders/compare/v0.6.0...v0.7.0) (2021-10-18) + +## Bug Fixes + +- properly type `toJSON` methods ([#34](https://github.com/discordjs/builders/issues/34)) ([7723ad0](https://github.com/discordjs/builders/commit/7723ad0da169386e638188de220451a97513bc25)) + +## Features + +- **ContextMenus:** add context menu command builder ([#29](https://github.com/discordjs/builders/issues/29)) ([f0641e5](https://github.com/discordjs/builders/commit/f0641e55733de8992600f3082bcf054e6f815cf7)) +- add support for channel types on channel options ([#41](https://github.com/discordjs/builders/issues/41)) ([f6c187e](https://github.com/discordjs/builders/commit/f6c187e0ad6ebe03e65186ece3e95cb1db5aeb50)) + +# [0.6.0](https://github.com/discordjs/builders/compare/v0.5.0...v0.6.0) (2021-08-24) + +## Bug Fixes + +- **SlashCommandBuilder:** allow subcommands and groups to coexist at the root level ([#26](https://github.com/discordjs/builders/issues/26)) ([0be4daf](https://github.com/discordjs/builders/commit/0be4dafdfc0b5747c880be0078c00ada913eb4fb)) + +## Features + +- create `Embed` builder ([#11](https://github.com/discordjs/builders/issues/11)) ([eb942a4](https://github.com/discordjs/builders/commit/eb942a4d1f3bcec9a4e370b6af602a713ad8f9b7)) +- **SlashCommandBuilder:** create setDefaultPermission function ([#19](https://github.com/discordjs/builders/issues/19)) ([5d53759](https://github.com/discordjs/builders/commit/5d537593937a8da330153ce4711b7d093a80330e)) +- **SlashCommands:** add number option type ([#23](https://github.com/discordjs/builders/issues/23)) ([1563991](https://github.com/discordjs/builders/commit/1563991d421bb07bf7a412c87e7613692d770f04)) + +# [0.5.0](https://github.com/discordjs/builders/compare/v0.3.0...v0.5.0) (2021-08-10) + +## Features + +- **Formatters:** add `formatEmoji` ([#20](https://github.com/discordjs/builders/issues/20)) ([c3d8bb5](https://github.com/discordjs/builders/commit/c3d8bb5363a1d46b45c0def4277da6921e2ba209)) + +# [0.4.0](https://github.com/discordjs/builders/compare/v0.3.0...v0.4.0) (2021-08-05) + +## Features + +- `sub command` => `subcommand` ([#18](https://github.com/discordjs/builders/pull/18)) ([95599c5](https://github.com/discordjs/builders/commit/95599c5b5366ebd054c4c277c52f1a44cda1209d)) + +# [0.3.0](https://github.com/discordjs/builders/compare/v0.2.0...v0.3.0) (2021-08-01) + +## Bug Fixes + +- **Shrug:** Update comment ([#14](https://github.com/discordjs/builders/issues/14)) ([6fa6c40](https://github.com/discordjs/builders/commit/6fa6c405f2ea733811677d3d1bfb1e2806d504d5)) +- shrug face rendering ([#13](https://github.com/discordjs/builders/issues/13)) ([6ad24ec](https://github.com/discordjs/builders/commit/6ad24ecd96c82b0f576e78e9e53fc7bf9c36ef5d)) + +## Features + +- **formatters:** mentions ([#9](https://github.com/discordjs/builders/issues/9)) ([f83fe99](https://github.com/discordjs/builders/commit/f83fe99b83188ed999845751ffb005c687dbd60a)) +- **Formatters:** Add a spoiler function ([#16](https://github.com/discordjs/builders/issues/16)) ([c213a6a](https://github.com/discordjs/builders/commit/c213a6abb114f65653017a4edec4bdba2162d771)) +- **SlashCommands:** add slash command builders ([#3](https://github.com/discordjs/builders/issues/3)) ([6aa3af0](https://github.com/discordjs/builders/commit/6aa3af07b0ee342fff91f080914bb12b3ab773f8)) +- shrug, tableflip and unflip strings ([#5](https://github.com/discordjs/builders/issues/5)) ([de5fa82](https://github.com/discordjs/builders/commit/de5fa823cd6f1feba5b2d0a63b2cb1761dfd1814)) + +# [0.2.0](https://github.com/discordjs/builders/compare/v0.1.1...v0.2.0) (2021-07-03) + +## Features + +- **Formatters:** added `hyperlink` and `hideLinkEmbed` ([#4](https://github.com/discordjs/builders/issues/4)) ([c532daf](https://github.com/discordjs/builders/commit/c532daf2ba2feae75bf9668f63462e96a5314cff)) + +# [0.1.1](https://github.com/discordjs/builders/compare/v0.1.0...v0.1.1) (2021-06-30) + +## Bug Fixes + +- **Deps:** added `tslib` as dependency ([#2](https://github.com/discordjs/builders/issues/2)) ([5576ff3](https://github.com/discordjs/builders/commit/5576ff3b67136b957bed0ab8a4c655d5de322813)) + +# 0.1.0 (2021-06-30) + +## Features + +- added message formatters ([#1](https://github.com/discordjs/builders/issues/1)) ([765e46d](https://github.com/discordjs/builders/commit/765e46dac96c4e49d350243e5fad34c2bc738a7c)) diff --git a/node_modules/@discordjs/builders/README.md b/node_modules/@discordjs/builders/README.md index f78d442..d6d8f67 100644 --- a/node_modules/@discordjs/builders/README.md +++ b/node_modules/@discordjs/builders/README.md @@ -8,14 +8,14 @@ Discord server npm version npm downloads - Build status - Code coverage + Build status + Code coverage

## Installation -**Node.js 16.6.0 or newer is required.** +**Node.js 16.9.0 or newer is required.** ```sh-session npm install @discordjs/builders @@ -27,17 +27,17 @@ pnpm add @discordjs/builders Here are some examples for the builders and utilities you can find in this package: -- [Slash Command Builders](./docs/examples/Slash%20Command%20Builders.md) +- [Slash Command Builders](https://github.com/discordjs/discord.js/blob/main/packages/builders/docs/examples/Slash%20Command%20Builders.md) ## Links -- [Website](https://discord.js.org/) ([source](https://github.com/discordjs/website)) +- [Website](https://discord.js.org/) ([source](https://github.com/discordjs/discord.js/tree/main/packages/website)) - [Documentation](https://discord.js.org/#/docs/builders) - [Guide](https://discordjs.guide/) ([source](https://github.com/discordjs/guide)) See also the [Update Guide](https://discordjs.guide/additional-info/changes-in-v13.html), including updated and removed items in the library. - [discord.js Discord server](https://discord.gg/djs) - [Discord API Discord server](https://discord.gg/discord-api) -- [GitHub](https://github.com/discordjs/builders) +- [GitHub](https://github.com/discordjs/discord.js/tree/main/packages/builders) - [npm](https://www.npmjs.com/package/@discordjs/builders) - [Related libraries](https://discord.com/developers/docs/topics/community-resources#libraries) @@ -45,7 +45,7 @@ Here are some examples for the builders and utilities you can find in this packa Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the [documentation](https://discord.js.org/#/docs/builders). -See [the contribution guide](https://github.com/discordjs/builders/blob/main/.github/CONTRIBUTING.md) if you'd like to submit a PR. +See [the contribution guide](https://github.com/discordjs/discord.js/blob/main/.github/CONTRIBUTING.md) if you'd like to submit a PR. ## Help diff --git a/node_modules/@discordjs/builders/dist/index.d.ts b/node_modules/@discordjs/builders/dist/index.d.ts index a979649..c8b0571 100644 --- a/node_modules/@discordjs/builders/dist/index.d.ts +++ b/node_modules/@discordjs/builders/dist/index.d.ts @@ -1,158 +1,134 @@ -import { APIEmbedField, APIEmbed, APIEmbedThumbnail, APIEmbedImage, APIEmbedVideo, APIEmbedAuthor, APIEmbedProvider, APIEmbedFooter, ApplicationCommandOptionType, APIApplicationCommandBasicOption, APIApplicationCommandBooleanOption, ChannelType, APIApplicationCommandChannelOption, APIApplicationCommandOptionChoice, APIApplicationCommandIntegerOption, APIApplicationCommandMentionableOption, APIApplicationCommandNumberOption, APIApplicationCommandRoleOption, APIApplicationCommandStringOption, APIApplicationCommandUserOption, APIApplicationCommandSubcommandGroupOption, APIApplicationCommandSubcommandOption, RESTPostAPIApplicationCommandsJSONBody, APIApplicationCommandOption, ApplicationCommandType } from 'discord-api-types/v9'; -import { z } from 'zod'; -import { Snowflake } from 'discord-api-types/globals'; +import * as _sapphire_shapeshift from '@sapphire/shapeshift'; +import { APIEmbedField, APIEmbedAuthor, APIEmbedFooter, APIEmbedImage, APIEmbed, APISelectMenuOption, APIMessageComponentEmoji, ButtonStyle, APIActionRowComponentTypes, APIActionRowComponent, APIBaseComponent, ComponentType, APIButtonComponent, APISelectMenuComponent, APITextInputComponent, TextInputStyle, APIMessageActionRowComponent, APIModalActionRowComponent, APIMessageComponent, APIModalComponent, APIModalInteractionResponseCallbackData, LocalizationMap, LocaleString, ApplicationCommandOptionType, APIApplicationCommandBasicOption, APIApplicationCommandAttachmentOption, APIApplicationCommandBooleanOption, ChannelType, APIApplicationCommandChannelOption, APIApplicationCommandOptionChoice, APIApplicationCommandIntegerOption, APIApplicationCommandMentionableOption, APIApplicationCommandNumberOption, APIApplicationCommandRoleOption, APIApplicationCommandStringOption, APIApplicationCommandUserOption, APIApplicationCommandSubcommandGroupOption, APIApplicationCommandSubcommandOption, Permissions, RESTPostAPIApplicationCommandsJSONBody, APIApplicationCommandOption, Locale, ApplicationCommandType } from 'discord-api-types/v10'; import { URL } from 'url'; +import { Snowflake } from 'discord-api-types/globals'; -declare const fieldNamePredicate: z.ZodString; -declare const fieldValuePredicate: z.ZodString; -declare const fieldInlinePredicate: z.ZodOptional; -declare const embedFieldPredicate: z.ZodObject<{ - name: z.ZodString; - value: z.ZodString; - inline: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - inline?: boolean | undefined; +declare const fieldNamePredicate: _sapphire_shapeshift.StringValidator; +declare const fieldValuePredicate: _sapphire_shapeshift.StringValidator; +declare const fieldInlinePredicate: _sapphire_shapeshift.UnionValidator; +declare const embedFieldPredicate: _sapphire_shapeshift.ObjectValidator<{ name: string; value: string; -}, { - inline?: boolean | undefined; + inline: boolean | undefined; +}, _sapphire_shapeshift.UndefinedToOptional<{ name: string; value: string; -}>; -declare const embedFieldsArrayPredicate: z.ZodArray; -}, "strip", z.ZodTypeAny, { - inline?: boolean | undefined; + inline: boolean | undefined; +}>>; +declare const embedFieldsArrayPredicate: _sapphire_shapeshift.ArrayValidator<_sapphire_shapeshift.UndefinedToOptional<{ name: string; value: string; -}, { - inline?: boolean | undefined; + inline: boolean | undefined; +}>[], _sapphire_shapeshift.UndefinedToOptional<{ name: string; value: string; -}>, "many">; -declare const fieldLengthPredicate: z.ZodNumber; -declare function validateFieldLength(fields: APIEmbedField[], amountAdding: number): void; -declare const authorNamePredicate: z.ZodNullable; -declare const urlPredicate: z.ZodNullable>; -declare const colorPredicate: z.ZodNullable; -declare const descriptionPredicate: z.ZodNullable; -declare const footerTextPredicate: z.ZodNullable; -declare const timestampPredicate: z.ZodNullable>; -declare const titlePredicate: z.ZodNullable; + inline: boolean | undefined; +}>>; +declare const fieldLengthPredicate: _sapphire_shapeshift.NumberValidator; +declare function validateFieldLength(amountAdding: number, fields?: APIEmbedField[]): void; +declare const authorNamePredicate: _sapphire_shapeshift.UnionValidator; +declare const imageURLPredicate: _sapphire_shapeshift.UnionValidator; +declare const urlPredicate: _sapphire_shapeshift.UnionValidator; +declare const embedAuthorPredicate: _sapphire_shapeshift.ObjectValidator<{ + name: string | null; + iconURL: string | null | undefined; + url: string | null | undefined; +}, _sapphire_shapeshift.UndefinedToOptional<{ + name: string | null; + iconURL: string | null | undefined; + url: string | null | undefined; +}>>; +declare const RGBPredicate: _sapphire_shapeshift.NumberValidator; +declare const colorPredicate: _sapphire_shapeshift.UnionValidator; +declare const descriptionPredicate: _sapphire_shapeshift.UnionValidator; +declare const footerTextPredicate: _sapphire_shapeshift.UnionValidator; +declare const embedFooterPredicate: _sapphire_shapeshift.ObjectValidator<{ + text: string | null; + iconURL: string | null | undefined; +}, _sapphire_shapeshift.UndefinedToOptional<{ + text: string | null; + iconURL: string | null | undefined; +}>>; +declare const timestampPredicate: _sapphire_shapeshift.UnionValidator; +declare const titlePredicate: _sapphire_shapeshift.UnionValidator; -declare const Assertions$2_fieldNamePredicate: typeof fieldNamePredicate; -declare const Assertions$2_fieldValuePredicate: typeof fieldValuePredicate; -declare const Assertions$2_fieldInlinePredicate: typeof fieldInlinePredicate; -declare const Assertions$2_embedFieldPredicate: typeof embedFieldPredicate; -declare const Assertions$2_embedFieldsArrayPredicate: typeof embedFieldsArrayPredicate; -declare const Assertions$2_fieldLengthPredicate: typeof fieldLengthPredicate; -declare const Assertions$2_validateFieldLength: typeof validateFieldLength; -declare const Assertions$2_authorNamePredicate: typeof authorNamePredicate; -declare const Assertions$2_urlPredicate: typeof urlPredicate; -declare const Assertions$2_colorPredicate: typeof colorPredicate; -declare const Assertions$2_descriptionPredicate: typeof descriptionPredicate; -declare const Assertions$2_footerTextPredicate: typeof footerTextPredicate; -declare const Assertions$2_timestampPredicate: typeof timestampPredicate; -declare const Assertions$2_titlePredicate: typeof titlePredicate; -declare namespace Assertions$2 { +declare const Assertions$5_fieldNamePredicate: typeof fieldNamePredicate; +declare const Assertions$5_fieldValuePredicate: typeof fieldValuePredicate; +declare const Assertions$5_fieldInlinePredicate: typeof fieldInlinePredicate; +declare const Assertions$5_embedFieldPredicate: typeof embedFieldPredicate; +declare const Assertions$5_embedFieldsArrayPredicate: typeof embedFieldsArrayPredicate; +declare const Assertions$5_fieldLengthPredicate: typeof fieldLengthPredicate; +declare const Assertions$5_validateFieldLength: typeof validateFieldLength; +declare const Assertions$5_authorNamePredicate: typeof authorNamePredicate; +declare const Assertions$5_imageURLPredicate: typeof imageURLPredicate; +declare const Assertions$5_urlPredicate: typeof urlPredicate; +declare const Assertions$5_embedAuthorPredicate: typeof embedAuthorPredicate; +declare const Assertions$5_RGBPredicate: typeof RGBPredicate; +declare const Assertions$5_colorPredicate: typeof colorPredicate; +declare const Assertions$5_descriptionPredicate: typeof descriptionPredicate; +declare const Assertions$5_footerTextPredicate: typeof footerTextPredicate; +declare const Assertions$5_embedFooterPredicate: typeof embedFooterPredicate; +declare const Assertions$5_timestampPredicate: typeof timestampPredicate; +declare const Assertions$5_titlePredicate: typeof titlePredicate; +declare namespace Assertions$5 { export { - Assertions$2_fieldNamePredicate as fieldNamePredicate, - Assertions$2_fieldValuePredicate as fieldValuePredicate, - Assertions$2_fieldInlinePredicate as fieldInlinePredicate, - Assertions$2_embedFieldPredicate as embedFieldPredicate, - Assertions$2_embedFieldsArrayPredicate as embedFieldsArrayPredicate, - Assertions$2_fieldLengthPredicate as fieldLengthPredicate, - Assertions$2_validateFieldLength as validateFieldLength, - Assertions$2_authorNamePredicate as authorNamePredicate, - Assertions$2_urlPredicate as urlPredicate, - Assertions$2_colorPredicate as colorPredicate, - Assertions$2_descriptionPredicate as descriptionPredicate, - Assertions$2_footerTextPredicate as footerTextPredicate, - Assertions$2_timestampPredicate as timestampPredicate, - Assertions$2_titlePredicate as titlePredicate, + Assertions$5_fieldNamePredicate as fieldNamePredicate, + Assertions$5_fieldValuePredicate as fieldValuePredicate, + Assertions$5_fieldInlinePredicate as fieldInlinePredicate, + Assertions$5_embedFieldPredicate as embedFieldPredicate, + Assertions$5_embedFieldsArrayPredicate as embedFieldsArrayPredicate, + Assertions$5_fieldLengthPredicate as fieldLengthPredicate, + Assertions$5_validateFieldLength as validateFieldLength, + Assertions$5_authorNamePredicate as authorNamePredicate, + Assertions$5_imageURLPredicate as imageURLPredicate, + Assertions$5_urlPredicate as urlPredicate, + Assertions$5_embedAuthorPredicate as embedAuthorPredicate, + Assertions$5_RGBPredicate as RGBPredicate, + Assertions$5_colorPredicate as colorPredicate, + Assertions$5_descriptionPredicate as descriptionPredicate, + Assertions$5_footerTextPredicate as footerTextPredicate, + Assertions$5_embedFooterPredicate as embedFooterPredicate, + Assertions$5_timestampPredicate as timestampPredicate, + Assertions$5_titlePredicate as titlePredicate, }; } -interface AuthorOptions { - name: string; - url?: string; +declare function normalizeArray(arr: RestOrArray): T[]; +declare type RestOrArray = T[] | [T[]]; + +declare type RGBTuple = [red: number, green: number, blue: number]; +interface IconData { + /** + * The URL of the icon + */ iconURL?: string; + /** + * The proxy URL of the icon + */ + proxyIconURL?: string; } -interface FooterOptions { - text: string; - iconURL?: string; +declare type EmbedAuthorData = Omit & IconData; +declare type EmbedAuthorOptions = Omit; +declare type EmbedFooterData = Omit & IconData; +declare type EmbedFooterOptions = Omit; +interface EmbedImageData extends Omit { + /** + * The proxy URL for the image + */ + proxyURL?: string; } /** - * Represents an embed in a message (image/video preview, rich embed, etc.) + * Represents a embed in a message (image/video preview, rich embed, etc.) */ -declare class Embed implements APIEmbed { - /** - * An array of fields of this embed - */ - fields: APIEmbedField[]; - /** - * The embed title - */ - title?: string; - /** - * The embed description - */ - description?: string; - /** - * The embed url - */ - url?: string; - /** - * The embed color - */ - color?: number; - /** - * The timestamp of the embed in the ISO format - */ - timestamp?: string; - /** - * The embed thumbnail data - */ - thumbnail?: APIEmbedThumbnail; - /** - * The embed image data - */ - image?: APIEmbedImage; - /** - * Received video data - */ - video?: APIEmbedVideo; - /** - * The embed author data - */ - author?: APIEmbedAuthor; - /** - * Received data about the embed provider - */ - provider?: APIEmbedProvider; - /** - * The embed footer data - */ - footer?: APIEmbedFooter; +declare class EmbedBuilder { + readonly data: APIEmbed; constructor(data?: APIEmbed); - /** - * The accumulated length for the embed title, description, fields, footer text, and author name - */ - get length(): number; - /** - * Adds a field to the embed (max 25) - * - * @param field The field to add. - */ - addField(field: APIEmbedField): this; /** * Adds fields to the embed (max 25) * * @param fields The fields to add */ - addFields(...fields: APIEmbedField[]): this; + addFields(...fields: RestOrArray): this; /** * Removes, replaces, or inserts fields in the embed (max 25) * @@ -161,18 +137,23 @@ declare class Embed implements APIEmbed { * @param fields The replacing field objects */ spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this; + /** + * Sets the embed's fields (max 25). + * @param fields The fields to set + */ + setFields(...fields: RestOrArray): this; /** * Sets the author of this embed * * @param options The options for the author */ - setAuthor(options: AuthorOptions | null): this; + setAuthor(options: EmbedAuthorOptions | null): this; /** * Sets the color of this embed * * @param color The color of the embed */ - setColor(color: number | null): this; + setColor(color: number | RGBTuple | null): this; /** * Sets the description of this embed * @@ -184,7 +165,7 @@ declare class Embed implements APIEmbed { * * @param options The options for the footer */ - setFooter(options: FooterOptions | null): this; + setFooter(options: EmbedFooterOptions | null): this; /** * Sets the image of this embed * @@ -219,178 +200,166 @@ declare class Embed implements APIEmbed { * Transforms the embed to a plain object */ toJSON(): APIEmbed; - /** - * Normalizes field input and resolves strings - * - * @param fields Fields to normalize - */ - static normalizeFields(...fields: APIEmbedField[]): APIEmbedField[]; } /** * Wraps the content inside a codeblock with no language * - * @param content The content to wrap + * @param content - The content to wrap */ declare function codeBlock(content: C): `\`\`\`\n${C}\`\`\``; /** * Wraps the content inside a codeblock with the specified language * - * @param language The language for the codeblock - * @param content The content to wrap + * @param language - The language for the codeblock + * @param content - The content to wrap */ declare function codeBlock(language: L, content: C): `\`\`\`${L}\n${C}\`\`\``; /** * Wraps the content inside \`backticks\`, which formats it as inline code * - * @param content The content to wrap + * @param content - The content to wrap */ declare function inlineCode(content: C): `\`${C}\``; /** * Formats the content into italic text * - * @param content The content to wrap + * @param content - The content to wrap */ declare function italic(content: C): `_${C}_`; /** * Formats the content into bold text * - * @param content The content to wrap + * @param content - The content to wrap */ declare function bold(content: C): `**${C}**`; /** * Formats the content into underscored text * - * @param content The content to wrap + * @param content - The content to wrap */ declare function underscore(content: C): `__${C}__`; /** * Formats the content into strike-through text * - * @param content The content to wrap + * @param content - The content to wrap */ declare function strikethrough(content: C): `~~${C}~~`; /** * Formats the content into a quote. This needs to be at the start of the line for Discord to format it * - * @param content The content to wrap + * @param content - The content to wrap */ declare function quote(content: C): `> ${C}`; /** * Formats the content into a block quote. This needs to be at the start of the line for Discord to format it * - * @param content The content to wrap + * @param content - The content to wrap */ declare function blockQuote(content: C): `>>> ${C}`; /** * Wraps the URL into `<>`, which stops it from embedding * - * @param url The URL to wrap + * @param url - The URL to wrap */ declare function hideLinkEmbed(url: C): `<${C}>`; /** * Wraps the URL into `<>`, which stops it from embedding * - * @param url The URL to wrap + * @param url - The URL to wrap */ declare function hideLinkEmbed(url: URL): `<${string}>`; /** * Formats the content and the URL into a masked URL * - * @param content The content to display - * @param url The URL the content links to + * @param content - The content to display + * @param url - The URL the content links to */ declare function hyperlink(content: C, url: URL): `[${C}](${string})`; /** * Formats the content and the URL into a masked URL * - * @param content The content to display - * @param url The URL the content links to + * @param content - The content to display + * @param url - The URL the content links to */ declare function hyperlink(content: C, url: U): `[${C}](${U})`; /** * Formats the content and the URL into a masked URL * - * @param content The content to display - * @param url The URL the content links to - * @param title The title shown when hovering on the masked link + * @param content - The content to display + * @param url - The URL the content links to + * @param title - The title shown when hovering on the masked link */ declare function hyperlink(content: C, url: URL, title: T): `[${C}](${string} "${T}")`; /** * Formats the content and the URL into a masked URL * - * @param content The content to display - * @param url The URL the content links to - * @param title The title shown when hovering on the masked link + * @param content - The content to display + * @param url - The URL the content links to + * @param title - The title shown when hovering on the masked link */ declare function hyperlink(content: C, url: U, title: T): `[${C}](${U} "${T}")`; /** * Wraps the content inside spoiler (hidden text) * - * @param content The content to wrap + * @param content - The content to wrap */ declare function spoiler(content: C): `||${C}||`; /** * Formats a user ID into a user mention * - * @param userId The user ID to format + * @param userId - The user ID to format */ declare function userMention(userId: C): `<@${C}>`; -/** - * Formats a user ID into a member-nickname mention - * - * @param memberId The user ID to format - */ -declare function memberNicknameMention(memberId: C): `<@!${C}>`; /** * Formats a channel ID into a channel mention * - * @param channelId The channel ID to format + * @param channelId - The channel ID to format */ declare function channelMention(channelId: C): `<#${C}>`; /** * Formats a role ID into a role mention * - * @param roleId The role ID to format + * @param roleId - The role ID to format */ declare function roleMention(roleId: C): `<@&${C}>`; /** * Formats an emoji ID into a fully qualified emoji identifier * - * @param emojiId The emoji ID to format + * @param emojiId - The emoji ID to format */ declare function formatEmoji(emojiId: C, animated?: false): `<:_:${C}>`; /** * Formats an emoji ID into a fully qualified emoji identifier * - * @param emojiId The emoji ID to format - * @param animated Whether the emoji is animated or not. Defaults to `false` + * @param emojiId - The emoji ID to format + * @param animated - Whether the emoji is animated or not. Defaults to `false` */ declare function formatEmoji(emojiId: C, animated?: true): ``; /** * Formats a date into a short date-time string * - * @param date The date to format, defaults to the current time + * @param date - The date to format, defaults to the current time */ declare function time(date?: Date): ``; /** * Formats a date given a format style * - * @param date The date to format - * @param style The style to use + * @param date - The date to format + * @param style - The style to use */ declare function time(date: Date, style: S): ``; /** * Formats the given timestamp into a short date-time string * - * @param seconds The time to format, represents an UNIX timestamp in seconds + * @param seconds - The time to format, represents an UNIX timestamp in seconds */ declare function time(seconds: C): ``; /** * Formats the given timestamp into a short date-time string * - * @param seconds The time to format, represents an UNIX timestamp in seconds - * @param style The style to use + * @param seconds - The time to format, represents an UNIX timestamp in seconds + * @param style - The style to use */ declare function time(seconds: C, style: S): ``; /** @@ -448,57 +417,513 @@ declare enum Faces { Unflip = "\u252C\u2500\u252C \u30CE( \u309C-\u309C\u30CE)" } +/** + * Represents a option within a select menu component + */ +declare class SelectMenuOptionBuilder { + data: Partial; + constructor(data?: Partial); + /** + * Sets the label of this option + * + * @param label - The label to show on this option + */ + setLabel(label: string): this; + /** + * Sets the value of this option + * + * @param value - The value of this option + */ + setValue(value: string): this; + /** + * Sets the description of this option + * + * @param description - The description of this option + */ + setDescription(description: string): this; + /** + * Sets whether this option is selected by default + * + * @param isDefault - Whether this option is selected by default + */ + setDefault(isDefault?: boolean): this; + /** + * Sets the emoji to display on this option + * + * @param emoji - The emoji to display on this option + */ + setEmoji(emoji: APIMessageComponentEmoji): this; + toJSON(): APISelectMenuOption; +} + +declare const customIdValidator: _sapphire_shapeshift.StringValidator; +declare const emojiValidator: _sapphire_shapeshift.ObjectValidator<{ + id?: string | undefined; + name?: string | undefined; + animated?: boolean | undefined; +}, _sapphire_shapeshift.UndefinedToOptional<{ + id?: string | undefined; + name?: string | undefined; + animated?: boolean | undefined; +}>>; +declare const disabledValidator: _sapphire_shapeshift.BooleanValidator; +declare const buttonLabelValidator: _sapphire_shapeshift.StringValidator; +declare const buttonStyleValidator: _sapphire_shapeshift.NativeEnumValidator; +declare const placeholderValidator$1: _sapphire_shapeshift.StringValidator; +declare const minMaxValidator: _sapphire_shapeshift.NumberValidator; +declare const labelValueDescriptionValidator: _sapphire_shapeshift.StringValidator; +declare const optionValidator: _sapphire_shapeshift.UnionValidator | undefined; + default: boolean | undefined; +}>>; +declare const optionsValidator: _sapphire_shapeshift.ArrayValidator<(SelectMenuOptionBuilder | _sapphire_shapeshift.UndefinedToOptional<{ + label: string; + value: string; + description: string | undefined; + emoji: _sapphire_shapeshift.UndefinedToOptional<{ + id?: string | undefined; + name?: string | undefined; + animated?: boolean | undefined; + }> | undefined; + default: boolean | undefined; +}>)[], SelectMenuOptionBuilder | _sapphire_shapeshift.UndefinedToOptional<{ + label: string; + value: string; + description: string | undefined; + emoji: _sapphire_shapeshift.UndefinedToOptional<{ + id?: string | undefined; + name?: string | undefined; + animated?: boolean | undefined; + }> | undefined; + default: boolean | undefined; +}>>; +declare const optionsLengthValidator: _sapphire_shapeshift.NumberValidator; +declare function validateRequiredSelectMenuParameters(options: SelectMenuOptionBuilder[], customId?: string): void; +declare const defaultValidator: _sapphire_shapeshift.BooleanValidator; +declare function validateRequiredSelectMenuOptionParameters(label?: string, value?: string): void; +declare const urlValidator: _sapphire_shapeshift.StringValidator; +declare function validateRequiredButtonParameters(style?: ButtonStyle, label?: string, emoji?: APIMessageComponentEmoji, customId?: string, url?: string): void; + +declare const Assertions$4_customIdValidator: typeof customIdValidator; +declare const Assertions$4_emojiValidator: typeof emojiValidator; +declare const Assertions$4_disabledValidator: typeof disabledValidator; +declare const Assertions$4_buttonLabelValidator: typeof buttonLabelValidator; +declare const Assertions$4_buttonStyleValidator: typeof buttonStyleValidator; +declare const Assertions$4_minMaxValidator: typeof minMaxValidator; +declare const Assertions$4_labelValueDescriptionValidator: typeof labelValueDescriptionValidator; +declare const Assertions$4_optionValidator: typeof optionValidator; +declare const Assertions$4_optionsValidator: typeof optionsValidator; +declare const Assertions$4_optionsLengthValidator: typeof optionsLengthValidator; +declare const Assertions$4_validateRequiredSelectMenuParameters: typeof validateRequiredSelectMenuParameters; +declare const Assertions$4_defaultValidator: typeof defaultValidator; +declare const Assertions$4_validateRequiredSelectMenuOptionParameters: typeof validateRequiredSelectMenuOptionParameters; +declare const Assertions$4_urlValidator: typeof urlValidator; +declare const Assertions$4_validateRequiredButtonParameters: typeof validateRequiredButtonParameters; +declare namespace Assertions$4 { + export { + Assertions$4_customIdValidator as customIdValidator, + Assertions$4_emojiValidator as emojiValidator, + Assertions$4_disabledValidator as disabledValidator, + Assertions$4_buttonLabelValidator as buttonLabelValidator, + Assertions$4_buttonStyleValidator as buttonStyleValidator, + placeholderValidator$1 as placeholderValidator, + Assertions$4_minMaxValidator as minMaxValidator, + Assertions$4_labelValueDescriptionValidator as labelValueDescriptionValidator, + Assertions$4_optionValidator as optionValidator, + Assertions$4_optionsValidator as optionsValidator, + Assertions$4_optionsLengthValidator as optionsLengthValidator, + Assertions$4_validateRequiredSelectMenuParameters as validateRequiredSelectMenuParameters, + Assertions$4_defaultValidator as defaultValidator, + Assertions$4_validateRequiredSelectMenuOptionParameters as validateRequiredSelectMenuOptionParameters, + Assertions$4_urlValidator as urlValidator, + Assertions$4_validateRequiredButtonParameters as validateRequiredButtonParameters, + }; +} + +interface JSONEncodable { + /** + * Transforms this object to its JSON format + */ + toJSON: () => T; +} +/** + * Indicates if an object is encodable or not. + * @param maybeEncodable - The object to check against + */ +declare function isJSONEncodable(maybeEncodable: unknown): maybeEncodable is JSONEncodable; + +declare type AnyAPIActionRowComponent = APIActionRowComponentTypes | APIActionRowComponent; +/** + * Represents a discord component + */ +declare abstract class ComponentBuilder> = APIBaseComponent> implements JSONEncodable { + /** + * The API data associated with this component + */ + readonly data: Partial; + abstract toJSON(): AnyAPIActionRowComponent; + constructor(data: Partial); +} + +/** + * Represents a button component + */ +declare class ButtonBuilder extends ComponentBuilder { + constructor(data?: Partial); + /** + * Sets the style of this button + * + * @param style - The style of the button + */ + setStyle(style: ButtonStyle): this; + /** + * Sets the URL for this button + * + * @param url - The URL to open when this button is clicked + */ + setURL(url: string): this; + /** + * Sets the custom id for this button + * + * @param customId - The custom id to use for this button + */ + setCustomId(customId: string): this; + /** + * Sets the emoji to display on this button + * + * @param emoji - The emoji to display on this button + */ + setEmoji(emoji: APIMessageComponentEmoji): this; + /** + * Sets whether this button is disabled + * + * @param disabled - Whether to disable this button + */ + setDisabled(disabled?: boolean): this; + /** + * Sets the label for this button + * + * @param label - The label to display on this button + */ + setLabel(label: string): this; + toJSON(): APIButtonComponent; +} + +/** + * Represents a select menu component + */ +declare class SelectMenuBuilder extends ComponentBuilder { + /** + * The options within this select menu + */ + readonly options: SelectMenuOptionBuilder[]; + constructor(data?: Partial); + /** + * Sets the placeholder for this select menu + * + * @param placeholder - The placeholder to use for this select menu + */ + setPlaceholder(placeholder: string): this; + /** + * Sets the minimum values that must be selected in the select menu + * + * @param minValues - The minimum values that must be selected + */ + setMinValues(minValues: number): this; + /** + * Sets the maximum values that must be selected in the select menu + * + * @param maxValues - The maximum values that must be selected + */ + setMaxValues(maxValues: number): this; + /** + * Sets the custom id for this select menu + * + * @param customId - The custom id to use for this select menu + */ + setCustomId(customId: string): this; + /** + * Sets whether this select menu is disabled + * + * @param disabled - Whether this select menu is disabled + */ + setDisabled(disabled?: boolean): this; + /** + * Adds options to this select menu + * + * @param options - The options to add to this select menu + * @returns + */ + addOptions(...options: RestOrArray): this; + /** + * Sets the options on this select menu + * + * @param options - The options to set on this select menu + */ + setOptions(...options: RestOrArray): this; + toJSON(): APISelectMenuComponent; +} + +declare class TextInputBuilder extends ComponentBuilder { + constructor(data?: APITextInputComponent & { + type?: ComponentType.TextInput; + }); + /** + * Sets the custom id for this text input + * + * @param customId - The custom id of this text input + */ + setCustomId(customId: string): this; + /** + * Sets the label for this text input + * + * @param label - The label for this text input + */ + setLabel(label: string): this; + /** + * Sets the style for this text input + * + * @param style - The style for this text input + */ + setStyle(style: TextInputStyle): this; + /** + * Sets the minimum length of text for this text input + * + * @param minLength - The minimum length of text for this text input + */ + setMinLength(minLength: number): this; + /** + * Sets the maximum length of text for this text input + * + * @param maxLength - The maximum length of text for this text input + */ + setMaxLength(maxLength: number): this; + /** + * Sets the placeholder of this text input + * + * @param placeholder - The placeholder of this text input + */ + setPlaceholder(placeholder: string): this; + /** + * Sets the value of this text input + * + * @param value - The value for this text input + */ + setValue(value: string): this; + /** + * Sets whether this text input is required + * + * @param required - Whether this text input is required + */ + setRequired(required?: boolean): this; + toJSON(): APITextInputComponent; + equals(other: JSONEncodable | APITextInputComponent): boolean; +} + +declare type MessageComponentBuilder = MessageActionRowComponentBuilder | ActionRowBuilder; +declare type ModalComponentBuilder = ModalActionRowComponentBuilder | ActionRowBuilder; +declare type MessageActionRowComponentBuilder = ButtonBuilder | SelectMenuBuilder; +declare type ModalActionRowComponentBuilder = TextInputBuilder; +declare type AnyComponentBuilder = MessageActionRowComponentBuilder | ModalActionRowComponentBuilder; +/** + * Represents an action row component + */ +declare class ActionRowBuilder extends ComponentBuilder> { + /** + * The components within this action row + */ + readonly components: T[]; + constructor({ components, ...data }?: Partial>); + /** + * Adds components to this action row. + * + * @param components - The components to add to this action row. + */ + addComponents(...components: RestOrArray): this; + /** + * Sets the components in this action row + * + * @param components - The components to set this row to + */ + setComponents(...components: RestOrArray): this; + toJSON(): APIActionRowComponent>; +} + +interface MappedComponentTypes { + [ComponentType.ActionRow]: ActionRowBuilder; + [ComponentType.Button]: ButtonBuilder; + [ComponentType.SelectMenu]: SelectMenuBuilder; + [ComponentType.TextInput]: TextInputBuilder; +} +/** + * Factory for creating components from API data + * + * @param data - The api data to transform to a component class + */ +declare function createComponentBuilder(data: (APIMessageComponent | APIModalComponent) & { + type: T; +}): MappedComponentTypes[T]; +declare function createComponentBuilder(data: C): C; + +declare const textInputStyleValidator: _sapphire_shapeshift.NativeEnumValidator; +declare const minLengthValidator: _sapphire_shapeshift.NumberValidator; +declare const maxLengthValidator: _sapphire_shapeshift.NumberValidator; +declare const requiredValidator: _sapphire_shapeshift.BooleanValidator; +declare const valueValidator: _sapphire_shapeshift.StringValidator; +declare const placeholderValidator: _sapphire_shapeshift.StringValidator; +declare const labelValidator: _sapphire_shapeshift.StringValidator; +declare function validateRequiredParameters$3(customId?: string, style?: TextInputStyle, label?: string): void; + +declare const Assertions$3_textInputStyleValidator: typeof textInputStyleValidator; +declare const Assertions$3_minLengthValidator: typeof minLengthValidator; +declare const Assertions$3_maxLengthValidator: typeof maxLengthValidator; +declare const Assertions$3_requiredValidator: typeof requiredValidator; +declare const Assertions$3_valueValidator: typeof valueValidator; +declare const Assertions$3_placeholderValidator: typeof placeholderValidator; +declare const Assertions$3_labelValidator: typeof labelValidator; +declare namespace Assertions$3 { + export { + Assertions$3_textInputStyleValidator as textInputStyleValidator, + Assertions$3_minLengthValidator as minLengthValidator, + Assertions$3_maxLengthValidator as maxLengthValidator, + Assertions$3_requiredValidator as requiredValidator, + Assertions$3_valueValidator as valueValidator, + Assertions$3_placeholderValidator as placeholderValidator, + Assertions$3_labelValidator as labelValidator, + validateRequiredParameters$3 as validateRequiredParameters, + }; +} + +declare class ModalBuilder implements JSONEncodable { + readonly data: Partial; + readonly components: ActionRowBuilder[]; + constructor({ components, ...data }?: Partial); + /** + * Sets the title of the modal + * + * @param title - The title of the modal + */ + setTitle(title: string): this; + /** + * Sets the custom id of the modal + * + * @param customId - The custom id of this modal + */ + setCustomId(customId: string): this; + /** + * Adds components to this modal + * + * @param components - The components to add to this modal + */ + addComponents(...components: RestOrArray | APIActionRowComponent>): this; + /** + * Sets the components in this modal + * + * @param components - The components to set this modal to + */ + setComponents(...components: RestOrArray>): this; + toJSON(): APIModalInteractionResponseCallbackData; +} + +declare const titleValidator: _sapphire_shapeshift.StringValidator; +declare const componentsValidator: _sapphire_shapeshift.ArrayValidator<[ActionRowBuilder, ...ActionRowBuilder[]], ActionRowBuilder>; +declare function validateRequiredParameters$2(customId?: string, title?: string, components?: ActionRowBuilder[]): void; + +declare const Assertions$2_titleValidator: typeof titleValidator; +declare const Assertions$2_componentsValidator: typeof componentsValidator; +declare namespace Assertions$2 { + export { + Assertions$2_titleValidator as titleValidator, + Assertions$2_componentsValidator as componentsValidator, + validateRequiredParameters$2 as validateRequiredParameters, + }; +} + declare class SharedNameAndDescription { readonly name: string; + readonly name_localizations?: LocalizationMap; readonly description: string; + readonly description_localizations?: LocalizationMap; /** * Sets the name * - * @param name The name + * @param name - The name */ setName(name: string): this; /** * Sets the description * - * @param description The description + * @param description - The description */ setDescription(description: string): this; + /** + * Sets a name localization + * + * @param locale - The locale to set a description for + * @param localizedName - The localized description for the given locale + */ + setNameLocalization(locale: LocaleString, localizedName: string | null): this; + /** + * Sets the name localizations + * + * @param localizedNames - The dictionary of localized descriptions to set + */ + setNameLocalizations(localizedNames: LocalizationMap | null): this; + /** + * Sets a description localization + * + * @param locale - The locale to set a description for + * @param localizedDescription - The localized description for the given locale + */ + setDescriptionLocalization(locale: LocaleString, localizedDescription: string | null): this; + /** + * Sets the description localizations + * + * @param localizedDescriptions - The dictionary of localized descriptions to set + */ + setDescriptionLocalizations(localizedDescriptions: LocalizationMap | null): this; } declare abstract class ApplicationCommandOptionBase extends SharedNameAndDescription { abstract readonly type: ApplicationCommandOptionType; - readonly required = false; + readonly required: boolean; /** * Marks the option as required * - * @param required If this option should be required + * @param required - If this option should be required */ setRequired(required: boolean): this; abstract toJSON(): APIApplicationCommandBasicOption; protected runRequiredValidations(): void; } +declare class SlashCommandAttachmentOption extends ApplicationCommandOptionBase { + readonly type: ApplicationCommandOptionType.Attachment; + toJSON(): APIApplicationCommandAttachmentOption; +} + declare class SlashCommandBooleanOption extends ApplicationCommandOptionBase { readonly type: ApplicationCommandOptionType.Boolean; toJSON(): APIApplicationCommandBooleanOption; } -declare const allowedChannelTypes: readonly [ChannelType.GuildText, ChannelType.GuildVoice, ChannelType.GuildCategory, ChannelType.GuildNews, ChannelType.GuildStore, ChannelType.GuildNewsThread, ChannelType.GuildPublicThread, ChannelType.GuildPrivateThread, ChannelType.GuildStageVoice]; +declare const allowedChannelTypes: readonly [ChannelType.GuildText, ChannelType.GuildVoice, ChannelType.GuildCategory, ChannelType.GuildNews, ChannelType.GuildNewsThread, ChannelType.GuildPublicThread, ChannelType.GuildPrivateThread, ChannelType.GuildStageVoice]; declare type ApplicationCommandOptionAllowedChannelTypes = typeof allowedChannelTypes[number]; declare class ApplicationCommandOptionChannelTypesMixin { readonly channel_types?: ApplicationCommandOptionAllowedChannelTypes[]; - /** - * Adds a channel type to this option - * - * @param channelType The type of channel to allow - */ - addChannelType(channelType: ApplicationCommandOptionAllowedChannelTypes): this; /** * Adds channel types to this option * - * @param channelTypes The channel types to add + * @param channelTypes - The channel types to add */ - addChannelTypes(channelTypes: ApplicationCommandOptionAllowedChannelTypes[]): this; + addChannelTypes(...channelTypes: ApplicationCommandOptionAllowedChannelTypes[]): this; } declare class SlashCommandChannelOption extends ApplicationCommandOptionBase { @@ -509,16 +934,18 @@ interface SlashCommandChannelOption extends ApplicationCommandOptionChannelTypes } declare abstract class ApplicationCommandNumericOptionMinMaxValueMixin { - protected readonly maxValue?: number; - protected readonly minValue?: number; + readonly max_value?: number; + readonly min_value?: number; /** * Sets the maximum number value of this option - * @param max The maximum value this option can be + * + * @param max - The maximum value this option can be */ abstract setMaxValue(max: number): this; /** * Sets the minimum number value of this option - * @param min The minimum value this option can be + * + * @param min - The minimum value this option can be */ abstract setMinValue(min: number): this; } @@ -527,25 +954,18 @@ declare class ApplicationCommandOptionWithChoicesAndAutocompleteMixin[]; readonly autocomplete?: boolean; readonly type: ApplicationCommandOptionType; - /** - * Adds a choice for this option - * - * @param name The name of the choice - * @param value The value of the choice - */ - addChoice(name: string, value: T): Omit; /** * Adds multiple choices for this option * - * @param choices The choices to add + * @param choices - The choices to add */ - addChoices(choices: [name: string, value: T][]): Omit; - setChoices(choices: Input): Input extends [] ? this & Pick, 'setAutocomplete'> : Omit; + addChoices(...choices: APIApplicationCommandOptionChoice[]): this; + setChoices[]>(...choices: Input): this; /** * Marks the option as autocompletable - * @param autocomplete If this option should be autocompletable + * @param autocomplete - If this option should be autocompletable */ - setAutocomplete(autocomplete: U): U extends true ? Omit : this & Pick, 'addChoice' | 'addChoices'>; + setAutocomplete(autocomplete: boolean): this; } declare class SlashCommandIntegerOption extends ApplicationCommandOptionBase implements ApplicationCommandNumericOptionMinMaxValueMixin { @@ -578,6 +998,20 @@ declare class SlashCommandRoleOption extends ApplicationCommandOptionBase { declare class SlashCommandStringOption extends ApplicationCommandOptionBase { readonly type: ApplicationCommandOptionType.String; + readonly max_length?: number; + readonly min_length?: number; + /** + * Sets the maximum length of this string option. + * + * @param max - The maximum length this option can be + */ + setMaxLength(max: number): this; + /** + * Sets the minimum length of this string option. + * + * @param min - The minimum length this option can be + */ + setMinLength(min: number): this; toJSON(): APIApplicationCommandStringOption; } interface SlashCommandStringOption extends ApplicationCommandOptionWithChoicesAndAutocompleteMixin { @@ -593,58 +1027,64 @@ declare class SharedSlashCommandOptions { /** * Adds a boolean option * - * @param input A function that returns an option builder, or an already built builder + * @param input - A function that returns an option builder, or an already built builder */ addBooleanOption(input: SlashCommandBooleanOption | ((builder: SlashCommandBooleanOption) => SlashCommandBooleanOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this; /** * Adds a user option * - * @param input A function that returns an option builder, or an already built builder + * @param input - A function that returns an option builder, or an already built builder */ addUserOption(input: SlashCommandUserOption | ((builder: SlashCommandUserOption) => SlashCommandUserOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this; /** * Adds a channel option * - * @param input A function that returns an option builder, or an already built builder + * @param input - A function that returns an option builder, or an already built builder */ addChannelOption(input: SlashCommandChannelOption | ((builder: SlashCommandChannelOption) => SlashCommandChannelOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this; /** * Adds a role option * - * @param input A function that returns an option builder, or an already built builder + * @param input - A function that returns an option builder, or an already built builder */ addRoleOption(input: SlashCommandRoleOption | ((builder: SlashCommandRoleOption) => SlashCommandRoleOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this; + /** + * Adds an attachment option + * + * @param input - A function that returns an option builder, or an already built builder + */ + addAttachmentOption(input: SlashCommandAttachmentOption | ((builder: SlashCommandAttachmentOption) => SlashCommandAttachmentOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this; /** * Adds a mentionable option * - * @param input A function that returns an option builder, or an already built builder + * @param input - A function that returns an option builder, or an already built builder */ addMentionableOption(input: SlashCommandMentionableOption | ((builder: SlashCommandMentionableOption) => SlashCommandMentionableOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this; /** * Adds a string option * - * @param input A function that returns an option builder, or an already built builder + * @param input - A function that returns an option builder, or an already built builder */ - addStringOption(input: SlashCommandStringOption | Omit | Omit | ((builder: SlashCommandStringOption) => SlashCommandStringOption | Omit | Omit)): ShouldOmitSubcommandFunctions extends true ? Omit : this; + addStringOption(input: SlashCommandStringOption | Omit | Omit | ((builder: SlashCommandStringOption) => SlashCommandStringOption | Omit | Omit)): ShouldOmitSubcommandFunctions extends true ? Omit : this; /** * Adds an integer option * - * @param input A function that returns an option builder, or an already built builder + * @param input - A function that returns an option builder, or an already built builder */ - addIntegerOption(input: SlashCommandIntegerOption | Omit | Omit | ((builder: SlashCommandIntegerOption) => SlashCommandIntegerOption | Omit | Omit)): ShouldOmitSubcommandFunctions extends true ? Omit : this; + addIntegerOption(input: SlashCommandIntegerOption | Omit | Omit | ((builder: SlashCommandIntegerOption) => SlashCommandIntegerOption | Omit | Omit)): ShouldOmitSubcommandFunctions extends true ? Omit : this; /** * Adds a number option * - * @param input A function that returns an option builder, or an already built builder + * @param input - A function that returns an option builder, or an already built builder */ - addNumberOption(input: SlashCommandNumberOption | Omit | Omit | ((builder: SlashCommandNumberOption) => SlashCommandNumberOption | Omit | Omit)): ShouldOmitSubcommandFunctions extends true ? Omit : this; + addNumberOption(input: SlashCommandNumberOption | Omit | Omit | ((builder: SlashCommandNumberOption) => SlashCommandNumberOption | Omit | Omit)): ShouldOmitSubcommandFunctions extends true ? Omit : this; private _sharedAddOptionMethod; } /** * Represents a folder for subcommands * - * For more information, go to https://discord.com/developers/docs/interactions/slash-commands#subcommands-and-subcommand-groups + * For more information, go to https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups */ declare class SlashCommandSubcommandGroupBuilder implements ToAPIApplicationCommandOptions { /** @@ -662,7 +1102,7 @@ declare class SlashCommandSubcommandGroupBuilder implements ToAPIApplicationComm /** * Adds a new subcommand to this group * - * @param input A function that returns a subcommand builder, or an already built builder + * @param input - A function that returns a subcommand builder, or an already built builder */ addSubcommand(input: SlashCommandSubcommandBuilder | ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder)): this; toJSON(): APIApplicationCommandSubcommandGroupOption; @@ -672,7 +1112,7 @@ interface SlashCommandSubcommandGroupBuilder extends SharedNameAndDescription { /** * Represents a subcommand * - * For more information, go to https://discord.com/developers/docs/interactions/slash-commands#subcommands-and-subcommand-groups + * For more information, go to https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups */ declare class SlashCommandSubcommandBuilder implements ToAPIApplicationCommandOptions { /** @@ -697,10 +1137,18 @@ declare class SlashCommandBuilder { * The name of this slash command */ readonly name: string; + /** + * The localized names for this command + */ + readonly name_localizations?: LocalizationMap; /** * The description of this slash command */ readonly description: string; + /** + * The localized descriptions for this command + */ + readonly description_localizations?: LocalizationMap; /** * The options of this slash command */ @@ -708,9 +1156,19 @@ declare class SlashCommandBuilder { /** * Whether the command is enabled by default when the app is added to a guild * - * @default true + * @deprecated This property is deprecated and will be removed in the future. + * You should use `setDefaultMemberPermissions` or `setDMPermission` instead. */ - readonly defaultPermission: boolean | undefined; + readonly default_permission: boolean | undefined; + /** + * Set of permissions represented as a bit set for the command + */ + readonly default_member_permissions: Permissions | null | undefined; + /** + * Indicates whether the command is available in DMs with the application, only for globally-scoped commands. + * By default, commands are visible. + */ + readonly dm_permission: boolean | undefined; /** * Returns the final data that should be sent to Discord. * @@ -722,21 +1180,41 @@ declare class SlashCommandBuilder { * * **Note**: If set to `false`, you will have to later `PUT` the permissions for this command. * - * @param value Whether or not to enable this command by default + * @param value - Whether or not to enable this command by default * * @see https://discord.com/developers/docs/interactions/application-commands#permissions + * @deprecated Use `setDefaultMemberPermissions` or `setDMPermission` instead. */ setDefaultPermission(value: boolean): this; + /** + * Sets the default permissions a member should have in order to run the command. + * + * **Note:** You can set this to `'0'` to disable the command by default. + * + * @param permissions - The permissions bit field to set + * + * @see https://discord.com/developers/docs/interactions/application-commands#permissions + */ + setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined): this; + /** + * Sets if the command is available in DMs with the application, only for globally-scoped commands. + * By default, commands are visible. + * + * @param enabled - If the command should be enabled in DMs + * + * @see https://discord.com/developers/docs/interactions/application-commands#permissions + */ + setDMPermission(enabled: boolean | null | undefined): this; /** * Adds a new subcommand group to this command * - * @param input A function that returns a subcommand group builder, or an already built builder + * @param input - A function that returns a subcommand group builder, or an already built builder */ addSubcommandGroup(input: SlashCommandSubcommandGroupBuilder | ((subcommandGroup: SlashCommandSubcommandGroupBuilder) => SlashCommandSubcommandGroupBuilder)): SlashCommandSubcommandsOnlyBuilder; /** * Adds a new subcommand to this command * - * @param input A function that returns a subcommand builder, or an already built builder + * @param input - A function that returns a subcommand builder, or an already built builder */ addSubcommand(input: SlashCommandSubcommandBuilder | ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder)): SlashCommandSubcommandsOnlyBuilder; } @@ -747,33 +1225,46 @@ interface SlashCommandSubcommandsOnlyBuilder extends SharedNameAndDescription, P interface SlashCommandOptionsOnlyBuilder extends SharedNameAndDescription, SharedSlashCommandOptions, Pick { } interface ToAPIApplicationCommandOptions { - toJSON(): APIApplicationCommandOption; + toJSON: () => APIApplicationCommandOption; } -declare function validateRequiredParameters$1(name: string, description: string, options: ToAPIApplicationCommandOptions[]): void; declare function validateName$1(name: unknown): asserts name is string; declare function validateDescription(description: unknown): asserts description is string; +declare function validateLocale(locale: unknown): Locale; +declare function validateMaxOptionsLength(options: unknown): asserts options is ToAPIApplicationCommandOptions[]; +declare function validateRequiredParameters$1(name: string, description: string, options: ToAPIApplicationCommandOptions[]): void; declare function validateDefaultPermission$1(value: unknown): asserts value is boolean; declare function validateRequired(required: unknown): asserts required is boolean; -declare function validateMaxOptionsLength(options: unknown): asserts options is ToAPIApplicationCommandOptions[]; -declare function validateMaxChoicesLength(choices: APIApplicationCommandOptionChoice[]): void; +declare function validateChoicesLength(amountAdding: number, choices?: APIApplicationCommandOptionChoice[]): void; declare function assertReturnOfBuilder(input: unknown, ExpectedInstanceOf: new () => T): asserts input is T; +declare const localizationMapPredicate: _sapphire_shapeshift.UnionValidator<_sapphire_shapeshift.UndefinedToOptional>> | null | undefined>; +declare function validateLocalizationMap(value: unknown): asserts value is LocalizationMap; +declare function validateDMPermission$1(value: unknown): asserts value is boolean | null | undefined; +declare function validateDefaultMemberPermissions$1(permissions: unknown): string | null | undefined; declare const Assertions$1_validateDescription: typeof validateDescription; -declare const Assertions$1_validateRequired: typeof validateRequired; +declare const Assertions$1_validateLocale: typeof validateLocale; declare const Assertions$1_validateMaxOptionsLength: typeof validateMaxOptionsLength; -declare const Assertions$1_validateMaxChoicesLength: typeof validateMaxChoicesLength; +declare const Assertions$1_validateRequired: typeof validateRequired; +declare const Assertions$1_validateChoicesLength: typeof validateChoicesLength; declare const Assertions$1_assertReturnOfBuilder: typeof assertReturnOfBuilder; +declare const Assertions$1_localizationMapPredicate: typeof localizationMapPredicate; +declare const Assertions$1_validateLocalizationMap: typeof validateLocalizationMap; declare namespace Assertions$1 { export { - validateRequiredParameters$1 as validateRequiredParameters, validateName$1 as validateName, Assertions$1_validateDescription as validateDescription, + Assertions$1_validateLocale as validateLocale, + Assertions$1_validateMaxOptionsLength as validateMaxOptionsLength, + validateRequiredParameters$1 as validateRequiredParameters, validateDefaultPermission$1 as validateDefaultPermission, Assertions$1_validateRequired as validateRequired, - Assertions$1_validateMaxOptionsLength as validateMaxOptionsLength, - Assertions$1_validateMaxChoicesLength as validateMaxChoicesLength, + Assertions$1_validateChoicesLength as validateChoicesLength, Assertions$1_assertReturnOfBuilder as assertReturnOfBuilder, + Assertions$1_localizationMapPredicate as localizationMapPredicate, + Assertions$1_validateLocalizationMap as validateLocalizationMap, + validateDMPermission$1 as validateDMPermission, + validateDefaultMemberPermissions$1 as validateDefaultMemberPermissions, }; } @@ -782,6 +1273,10 @@ declare class ContextMenuCommandBuilder { * The name of this context menu command */ readonly name: string; + /** + * The localized names for this command + */ + readonly name_localizations?: LocalizationMap; /** * The type of this context menu command */ @@ -789,19 +1284,29 @@ declare class ContextMenuCommandBuilder { /** * Whether the command is enabled by default when the app is added to a guild * - * @default true + * @deprecated This property is deprecated and will be removed in the future. + * You should use `setDefaultMemberPermissions` or `setDMPermission` instead. */ - readonly defaultPermission: boolean | undefined; + readonly default_permission: boolean | undefined; + /** + * Set of permissions represented as a bit set for the command + */ + readonly default_member_permissions: Permissions | null | undefined; + /** + * Indicates whether the command is available in DMs with the application, only for globally-scoped commands. + * By default, commands are visible. + */ + readonly dm_permission: boolean | undefined; /** * Sets the name * - * @param name The name + * @param name - The name */ setName(name: string): this; /** * Sets the type * - * @param type The type + * @param type - The type */ setType(type: ContextMenuCommandType): this; /** @@ -809,11 +1314,44 @@ declare class ContextMenuCommandBuilder { * * **Note**: If set to `false`, you will have to later `PUT` the permissions for this command. * - * @param value Whether or not to enable this command by default + * @param value - Whether or not to enable this command by default + * + * @see https://discord.com/developers/docs/interactions/application-commands#permissions + * @deprecated Use `setDefaultMemberPermissions` or `setDMPermission` instead. + */ + setDefaultPermission(value: boolean): this; + /** + * Sets the default permissions a member should have in order to run the command. + * + * **Note:** You can set this to `'0'` to disable the command by default. + * + * @param permissions - The permissions bit field to set * * @see https://discord.com/developers/docs/interactions/application-commands#permissions */ - setDefaultPermission(value: boolean): this; + setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined): this; + /** + * Sets if the command is available in DMs with the application, only for globally-scoped commands. + * By default, commands are visible. + * + * @param enabled - If the command should be enabled in DMs + * + * @see https://discord.com/developers/docs/interactions/application-commands#permissions + */ + setDMPermission(enabled: boolean | null | undefined): this; + /** + * Sets a name localization + * + * @param locale - The locale to set a description for + * @param localizedName - The localized description for the given locale + */ + setNameLocalization(locale: LocaleString, localizedName: string | null): this; + /** + * Sets the name localizations + * + * @param localizedNames - The dictionary of localized descriptions to set + */ + setNameLocalizations(localizedNames: LocalizationMap | null): this; /** * Returns the final data that should be sent to Discord. * @@ -823,22 +1361,46 @@ declare class ContextMenuCommandBuilder { } declare type ContextMenuCommandType = ApplicationCommandType.User | ApplicationCommandType.Message; -declare function validateRequiredParameters(name: string, type: number): void; +declare function validateDefaultPermission(value: unknown): asserts value is boolean; declare function validateName(name: unknown): asserts name is string; declare function validateType(type: unknown): asserts type is ContextMenuCommandType; -declare function validateDefaultPermission(value: unknown): asserts value is boolean; +declare function validateRequiredParameters(name: string, type: number): void; +declare function validateDMPermission(value: unknown): asserts value is boolean | null | undefined; +declare function validateDefaultMemberPermissions(permissions: unknown): string | null | undefined; -declare const Assertions_validateRequiredParameters: typeof validateRequiredParameters; +declare const Assertions_validateDefaultPermission: typeof validateDefaultPermission; declare const Assertions_validateName: typeof validateName; declare const Assertions_validateType: typeof validateType; -declare const Assertions_validateDefaultPermission: typeof validateDefaultPermission; +declare const Assertions_validateRequiredParameters: typeof validateRequiredParameters; +declare const Assertions_validateDMPermission: typeof validateDMPermission; +declare const Assertions_validateDefaultMemberPermissions: typeof validateDefaultMemberPermissions; declare namespace Assertions { export { - Assertions_validateRequiredParameters as validateRequiredParameters, + Assertions_validateDefaultPermission as validateDefaultPermission, Assertions_validateName as validateName, Assertions_validateType as validateType, - Assertions_validateDefaultPermission as validateDefaultPermission, + Assertions_validateRequiredParameters as validateRequiredParameters, + Assertions_validateDMPermission as validateDMPermission, + Assertions_validateDefaultMemberPermissions as validateDefaultMemberPermissions, }; } -export { AuthorOptions, Assertions as ContextMenuCommandAssertions, ContextMenuCommandBuilder, ContextMenuCommandType, Embed, Assertions$2 as EmbedAssertions, Faces, FooterOptions, Assertions$1 as SlashCommandAssertions, SlashCommandBooleanOption, SlashCommandBuilder, SlashCommandChannelOption, SlashCommandIntegerOption, SlashCommandMentionableOption, SlashCommandNumberOption, SlashCommandOptionsOnlyBuilder, SlashCommandRoleOption, SlashCommandStringOption, SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder, SlashCommandSubcommandsOnlyBuilder, SlashCommandUserOption, TimestampStyles, TimestampStylesString, ToAPIApplicationCommandOptions, blockQuote, bold, channelMention, codeBlock, formatEmoji, hideLinkEmbed, hyperlink, inlineCode, italic, memberNicknameMention, quote, roleMention, spoiler, strikethrough, time, underscore, userMention }; +interface Equatable { + /** + * Whether or not this is equal to another structure + */ + equals: (other: T) => boolean; +} +/** + * Indicates if an object is equatable or not. + * @param maybeEquatable - The object to check against + */ +declare function isEquatable(maybeEquatable: unknown): maybeEquatable is Equatable; + +declare function embedLength(data: APIEmbed): number; + +declare const enableValidators: () => boolean; +declare const disableValidators: () => boolean; +declare const isValidationEnabled: () => boolean; + +export { ActionRowBuilder, AnyAPIActionRowComponent, AnyComponentBuilder, ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionAllowedChannelTypes, ApplicationCommandOptionBase, ApplicationCommandOptionChannelTypesMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin, ButtonBuilder, Assertions$4 as ComponentAssertions, ComponentBuilder, Assertions as ContextMenuCommandAssertions, ContextMenuCommandBuilder, ContextMenuCommandType, Assertions$5 as EmbedAssertions, EmbedAuthorData, EmbedAuthorOptions, EmbedBuilder, EmbedFooterData, EmbedFooterOptions, EmbedImageData, Equatable, Faces, IconData, JSONEncodable, MappedComponentTypes, MessageActionRowComponentBuilder, MessageComponentBuilder, ModalActionRowComponentBuilder, Assertions$2 as ModalAssertions, ModalBuilder, ModalComponentBuilder, RGBTuple, RestOrArray, SelectMenuBuilder, SelectMenuOptionBuilder, SharedNameAndDescription, SharedSlashCommandOptions, Assertions$1 as SlashCommandAssertions, SlashCommandAttachmentOption, SlashCommandBooleanOption, SlashCommandBuilder, SlashCommandChannelOption, SlashCommandIntegerOption, SlashCommandMentionableOption, SlashCommandNumberOption, SlashCommandOptionsOnlyBuilder, SlashCommandRoleOption, SlashCommandStringOption, SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder, SlashCommandSubcommandsOnlyBuilder, SlashCommandUserOption, Assertions$3 as TextInputAssertions, TextInputBuilder, TimestampStyles, TimestampStylesString, ToAPIApplicationCommandOptions, blockQuote, bold, channelMention, codeBlock, createComponentBuilder, disableValidators, embedLength, enableValidators, formatEmoji, hideLinkEmbed, hyperlink, inlineCode, isEquatable, isJSONEncodable, isValidationEnabled, italic, normalizeArray, quote, roleMention, spoiler, strikethrough, time, underscore, userMention }; diff --git a/node_modules/@discordjs/builders/dist/index.js b/node_modules/@discordjs/builders/dist/index.js index e80bb03..11dc178 100644 --- a/node_modules/@discordjs/builders/dist/index.js +++ b/node_modules/@discordjs/builders/dist/index.js @@ -1,4 +1,1557 @@ -var Ge=Object.create;var O=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var qe=Object.getOwnPropertyNames;var ze=Object.getPrototypeOf,We=Object.prototype.hasOwnProperty;var je=(t,e,i)=>e in t?O(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var Ce=t=>O(t,"__esModule",{value:!0});var w=(t,e)=>{for(var i in e)O(t,i,{get:e[i],enumerable:!0})},fe=(t,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of qe(e))!We.call(t,r)&&(i||r!=="default")&&O(t,r,{get:()=>e[r],enumerable:!(o=he(e,r))||o.enumerable});return t},Ze=(t,e)=>fe(Ce(O(t!=null?Ge(ze(t)):{},"default",!e&&t&&t.__esModule?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t),Ke=(t=>(e,i)=>t&&t.get(e)||(i=fe(Ce({}),e,1),t&&t.set(e,i),i))(typeof WeakMap!="undefined"?new WeakMap:0),p=(t,e,i,o)=>{for(var r=o>1?void 0:o?he(e,i):e,A=t.length-1,R;A>=0;A--)(R=t[A])&&(r=(o?R(e,i,r):R(r))||r);return o&&r&&O(e,i,r),r};var n=(t,e,i)=>(je(t,typeof e!="symbol"?e+"":e,i),i);var yt={};w(yt,{ContextMenuCommandAssertions:()=>ue,ContextMenuCommandBuilder:()=>Je,Embed:()=>M,EmbedAssertions:()=>ie,Faces:()=>Ae,SlashCommandAssertions:()=>re,SlashCommandBooleanOption:()=>J,SlashCommandBuilder:()=>j,SlashCommandChannelOption:()=>y,SlashCommandIntegerOption:()=>P,SlashCommandMentionableOption:()=>q,SlashCommandNumberOption:()=>T,SlashCommandRoleOption:()=>z,SlashCommandStringOption:()=>I,SlashCommandSubcommandBuilder:()=>c,SlashCommandSubcommandGroupBuilder:()=>x,SlashCommandUserOption:()=>W,TimestampStyles:()=>ut,blockQuote:()=>nt,bold:()=>Ye,channelMention:()=>mt,codeBlock:()=>Qe,formatEmoji:()=>dt,hideLinkEmbed:()=>ot,hyperlink:()=>rt,inlineCode:()=>He,italic:()=>Xe,memberNicknameMention:()=>pt,quote:()=>it,roleMention:()=>lt,spoiler:()=>at,strikethrough:()=>tt,time:()=>ct,underscore:()=>et,userMention:()=>st});var ie={};w(ie,{authorNamePredicate:()=>Q,colorPredicate:()=>H,descriptionPredicate:()=>X,embedFieldPredicate:()=>be,embedFieldsArrayPredicate:()=>_,fieldInlinePredicate:()=>k,fieldLengthPredicate:()=>xe,fieldNamePredicate:()=>S,fieldValuePredicate:()=>E,footerTextPredicate:()=>Y,timestampPredicate:()=>ee,titlePredicate:()=>te,urlPredicate:()=>u,validateFieldLength:()=>L});var m=require("zod"),S=m.z.string().min(1).max(256),E=m.z.string().min(1).max(1024),k=m.z.boolean().optional(),be=m.z.object({name:S,value:E,inline:k}),_=be.array(),xe=m.z.number().lte(25);function L(t,e){xe.parse(t.length+e)}var Q=S.nullable(),u=m.z.string().url().nullish(),H=m.z.number().gte(0).lte(16777215).nullable(),X=m.z.string().min(1).max(4096).nullable(),Y=m.z.string().min(1).max(2048).nullable(),ee=m.z.union([m.z.number(),m.z.date()]).nullable(),te=S.nullable();var M=class{constructor(e={}){n(this,"fields");n(this,"title");n(this,"description");n(this,"url");n(this,"color");n(this,"timestamp");n(this,"thumbnail");n(this,"image");n(this,"video");n(this,"author");n(this,"provider");n(this,"footer");this.title=e.title,this.description=e.description,this.url=e.url,this.color=e.color,this.thumbnail=e.thumbnail,this.image=e.image,this.video=e.video,this.author=e.author,this.provider=e.provider,this.footer=e.footer,this.fields=e.fields??[],e.timestamp&&(this.timestamp=new Date(e.timestamp).toISOString())}get length(){return(this.title?.length??0)+(this.description?.length??0)+this.fields.reduce((e,i)=>e+i.name.length+i.value.length,0)+(this.footer?.text.length??0)+(this.author?.name.length??0)}addField(e){return this.addFields(e)}addFields(...e){return _.parse(e),L(this.fields,e.length),this.fields.push(...M.normalizeFields(...e)),this}spliceFields(e,i,...o){return _.parse(o),L(this.fields,o.length-i),this.fields.splice(e,i,...M.normalizeFields(...o)),this}setAuthor(e){if(e===null)return this.author=void 0,this;let{name:i,iconURL:o,url:r}=e;return Q.parse(i),u.parse(o),u.parse(r),this.author={name:i,url:r,icon_url:o},this}setColor(e){return H.parse(e),this.color=e??void 0,this}setDescription(e){return X.parse(e),this.description=e??void 0,this}setFooter(e){if(e===null)return this.footer=void 0,this;let{text:i,iconURL:o}=e;return Y.parse(i),u.parse(o),this.footer={text:i,icon_url:o},this}setImage(e){return u.parse(e),this.image=e?{url:e}:void 0,this}setThumbnail(e){return u.parse(e),this.thumbnail=e?{url:e}:void 0,this}setTimestamp(e=Date.now()){return ee.parse(e),this.timestamp=e?new Date(e).toISOString():void 0,this}setTitle(e){return te.parse(e),this.title=e??void 0,this}setURL(e){return u.parse(e),this.url=e??void 0,this}toJSON(){return{...this}}static normalizeFields(...e){return e.flat(1/0).map(i=>(S.parse(i.name),E.parse(i.value),k.parse(i.inline),{name:i.name,value:i.value,inline:i.inline??void 0}))}};function Qe(t,e){return typeof e=="undefined"?`\`\`\` -${t}\`\`\``:`\`\`\`${t} -${e}\`\`\``}function He(t){return`\`${t}\``}function Xe(t){return`_${t}_`}function Ye(t){return`**${t}**`}function et(t){return`__${t}__`}function tt(t){return`~~${t}~~`}function it(t){return`> ${t}`}function nt(t){return`>>> ${t}`}function ot(t){return`<${t}>`}function rt(t,e,i){return i?`[${t}](${e} "${i}")`:`[${t}](${e})`}function at(t){return`||${t}||`}function st(t){return`<@${t}>`}function pt(t){return`<@!${t}>`}function mt(t){return`<#${t}>`}function lt(t){return`<@&${t}>`}function dt(t,e=!1){return`<${e?"a":""}:_:${t}>`}function ct(t,e){return typeof t!="number"&&(t=Math.floor((t?.getTime()??Date.now())/1e3)),typeof e=="string"?``:``}var ut={ShortTime:"t",LongTime:"T",ShortDate:"d",LongDate:"D",ShortDateTime:"f",LongDateTime:"F",RelativeTime:"R"},Ae=(o=>(o.Shrug="\xAF\\_(\u30C4)\\_/\xAF",o.Tableflip="(\u256F\xB0\u25A1\xB0\uFF09\u256F\uFE35 \u253B\u2501\u253B",o.Unflip="\u252C\u2500\u252C \u30CE( \u309C-\u309C\u30CE)",o))(Ae||{});var re={};w(re,{assertReturnOfBuilder:()=>C,validateDefaultPermission:()=>ne,validateDescription:()=>D,validateMaxChoicesLength:()=>oe,validateMaxOptionsLength:()=>d,validateName:()=>U,validateRequired:()=>F,validateRequiredParameters:()=>h});var V=Ze(require("@sindresorhus/is")),v=require("zod");function h(t,e,i){U(t),D(e),d(i)}var ht=v.z.string().min(1).max(32).regex(/^[\P{Lu}\p{N}_-]+$/u);function U(t){ht.parse(t)}var Ct=v.z.string().min(1).max(100);function D(t){Ct.parse(t)}var Oe=v.z.boolean();function ne(t){Oe.parse(t)}function F(t){Oe.parse(t)}var Se=v.z.unknown().array().max(25);function d(t){Se.parse(t)}function oe(t){Se.parse(t)}function C(t,e){let i=e.name;if(V.default.nullOrUndefined(t))throw new TypeError(`Expected to receive a ${i} builder, got ${t===null?"null":"undefined"} instead.`);if(V.default.primitive(t))throw new TypeError(`Expected to receive a ${i} builder, got a primitive (${typeof t}) instead.`);if(!(t instanceof e)){let o=t,r=V.default.function_(t)?t.name:o.constructor.name,A=Reflect.get(o,Symbol.toStringTag),R=A?`${r} [${A}]`:r;throw new TypeError(`Expected to receive a ${i} builder, got ${R} instead.`)}}var Fe=require("ts-mixer");var ye=require("discord-api-types/v9");var f=class{constructor(){n(this,"name");n(this,"description")}setName(e){return U(e),Reflect.set(this,"name",e),this}setDescription(e){return D(e),Reflect.set(this,"description",e),this}};var s=class extends f{constructor(){super(...arguments);n(this,"required",!1)}setRequired(e){return F(e),Reflect.set(this,"required",e),this}runRequiredValidations(){h(this.name,this.description,[]),F(this.required)}};var J=class extends s{constructor(){super(...arguments);n(this,"type",ye.ApplicationCommandOptionType.Boolean)}toJSON(){return this.runRequiredValidations(),{...this}}};var ge=require("discord-api-types/v9"),Pe=require("ts-mixer");var l=require("discord-api-types/v9"),ae=require("zod"),ft=[l.ChannelType.GuildText,l.ChannelType.GuildVoice,l.ChannelType.GuildCategory,l.ChannelType.GuildNews,l.ChannelType.GuildStore,l.ChannelType.GuildNewsThread,l.ChannelType.GuildPublicThread,l.ChannelType.GuildPrivateThread,l.ChannelType.GuildStageVoice],bt=ae.z.union(ft.map(t=>ae.z.literal(t))),se=class{constructor(){n(this,"channel_types")}addChannelType(e){return this.channel_types===void 0&&Reflect.set(this,"channel_types",[]),bt.parse(e),this.channel_types.push(e),this}addChannelTypes(e){return e.forEach(i=>this.addChannelType(i)),this}};var y=class extends s{constructor(){super(...arguments);n(this,"type",ge.ApplicationCommandOptionType.Channel)}toJSON(){return this.runRequiredValidations(),{...this}}};y=p([(0,Pe.mix)(se)],y);var Re=require("discord-api-types/v9"),Me=require("ts-mixer"),ve=require("zod");var N=class{constructor(){n(this,"maxValue");n(this,"minValue")}};var Te=require("discord-api-types/v9"),g=require("zod");var G=g.z.string().min(1).max(100),Ie=g.z.number().gt(-1/0).lt(1/0),$e=g.z.tuple([G,g.z.union([G,Ie])]).array(),xt=g.z.boolean(),b=class{constructor(){n(this,"choices");n(this,"autocomplete");n(this,"type")}addChoice(e,i){if(this.autocomplete)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return this.choices===void 0&&Reflect.set(this,"choices",[]),oe(this.choices),G.parse(e),this.type===Te.ApplicationCommandOptionType.String?G.parse(i):Ie.parse(i),this.choices.push({name:e,value:i}),this}addChoices(e){if(this.autocomplete)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");$e.parse(e);for(let[i,o]of e)this.addChoice(i,o);return this}setChoices(e){if(e.length>0&&this.autocomplete)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");$e.parse(e),Reflect.set(this,"choices",[]);for(let[i,o]of e)this.addChoice(i,o);return this}setAutocomplete(e){if(xt.parse(e),e&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return Reflect.set(this,"autocomplete",e),this}};var Ne=ve.z.number().int().nonnegative(),P=class extends s{constructor(){super(...arguments);n(this,"type",Re.ApplicationCommandOptionType.Integer)}setMaxValue(e){return Ne.parse(e),Reflect.set(this,"maxValue",e),this}setMinValue(e){return Ne.parse(e),Reflect.set(this,"minValue",e),this}toJSON(){if(this.runRequiredValidations(),this.autocomplete&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return{...this}}};P=p([(0,Me.mix)(N,b)],P);var Be=require("discord-api-types/v9");var q=class extends s{constructor(){super(...arguments);n(this,"type",Be.ApplicationCommandOptionType.Mentionable)}toJSON(){return this.runRequiredValidations(),{...this}}};var we=require("discord-api-types/v9"),Ee=require("ts-mixer"),ke=require("zod");var _e=ke.z.number().nonnegative(),T=class extends s{constructor(){super(...arguments);n(this,"type",we.ApplicationCommandOptionType.Number)}setMaxValue(e){return _e.parse(e),Reflect.set(this,"maxValue",e),this}setMinValue(e){return _e.parse(e),Reflect.set(this,"minValue",e),this}toJSON(){if(this.runRequiredValidations(),this.autocomplete&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return{...this}}};T=p([(0,Ee.mix)(N,b)],T);var Le=require("discord-api-types/v9");var z=class extends s{constructor(){super(...arguments);n(this,"type",Le.ApplicationCommandOptionType.Role)}toJSON(){return this.runRequiredValidations(),{...this}}};var Ve=require("discord-api-types/v9"),Ue=require("ts-mixer");var I=class extends s{constructor(){super(...arguments);n(this,"type",Ve.ApplicationCommandOptionType.String)}toJSON(){if(this.runRequiredValidations(),this.autocomplete&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return{...this}}};I=p([(0,Ue.mix)(b)],I);var De=require("discord-api-types/v9");var W=class extends s{constructor(){super(...arguments);n(this,"type",De.ApplicationCommandOptionType.User)}toJSON(){return this.runRequiredValidations(),{...this}}};var B=class{constructor(){n(this,"options")}addBooleanOption(e){return this._sharedAddOptionMethod(e,J)}addUserOption(e){return this._sharedAddOptionMethod(e,W)}addChannelOption(e){return this._sharedAddOptionMethod(e,y)}addRoleOption(e){return this._sharedAddOptionMethod(e,z)}addMentionableOption(e){return this._sharedAddOptionMethod(e,q)}addStringOption(e){return this._sharedAddOptionMethod(e,I)}addIntegerOption(e){return this._sharedAddOptionMethod(e,P)}addNumberOption(e){return this._sharedAddOptionMethod(e,T)}_sharedAddOptionMethod(e,i){let{options:o}=this;d(o);let r=typeof e=="function"?e(new i):e;return C(r,i),o.push(r),this}};var pe=require("discord-api-types/v9"),me=require("ts-mixer");var x=class{constructor(){n(this,"name");n(this,"description");n(this,"options",[])}addSubcommand(e){let{options:i}=this;d(i);let o=typeof e=="function"?e(new c):e;return C(o,c),i.push(o),this}toJSON(){return h(this.name,this.description,this.options),{type:pe.ApplicationCommandOptionType.SubcommandGroup,name:this.name,description:this.description,options:this.options.map(e=>e.toJSON())}}};x=p([(0,me.mix)(f)],x);var c=class{constructor(){n(this,"name");n(this,"description");n(this,"options",[])}toJSON(){return h(this.name,this.description,this.options),{type:pe.ApplicationCommandOptionType.Subcommand,name:this.name,description:this.description,options:this.options.map(e=>e.toJSON())}}};c=p([(0,me.mix)(f,B)],c);var j=class{constructor(){n(this,"name");n(this,"description");n(this,"options",[]);n(this,"defaultPermission")}toJSON(){return h(this.name,this.description,this.options),{name:this.name,description:this.description,options:this.options.map(e=>e.toJSON()),default_permission:this.defaultPermission}}setDefaultPermission(e){return ne(e),Reflect.set(this,"defaultPermission",e),this}addSubcommandGroup(e){let{options:i}=this;d(i);let o=typeof e=="function"?e(new x):e;return C(o,x),i.push(o),this}addSubcommand(e){let{options:i}=this;d(i);let o=typeof e=="function"?e(new c):e;return C(o,c),i.push(o),this}};j=p([(0,Fe.mix)(B,f)],j);var ue={};w(ue,{validateDefaultPermission:()=>ce,validateName:()=>Z,validateRequiredParameters:()=>de,validateType:()=>K});var $=require("zod"),le=require("discord-api-types/v9");function de(t,e){Z(t),K(e)}var At=$.z.string().min(1).max(32).regex(/^( *[\p{L}\p{N}_-]+ *)+$/u);function Z(t){At.parse(t)}var Ot=$.z.union([$.z.literal(le.ApplicationCommandType.User),$.z.literal(le.ApplicationCommandType.Message)]);function K(t){Ot.parse(t)}var St=$.z.boolean();function ce(t){St.parse(t)}var Je=class{constructor(){n(this,"name");n(this,"type");n(this,"defaultPermission")}setName(e){return Z(e),Reflect.set(this,"name",e),this}setType(e){return K(e),Reflect.set(this,"type",e),this}setDefaultPermission(e){return ce(e),Reflect.set(this,"defaultPermission",e),this}toJSON(){return de(this.name,this.type),{name:this.name,type:this.type,default_permission:this.defaultPermission}}};module.exports=Ke(yt);0&&(module.exports={ContextMenuCommandAssertions,ContextMenuCommandBuilder,Embed,EmbedAssertions,Faces,SlashCommandAssertions,SlashCommandBooleanOption,SlashCommandBuilder,SlashCommandChannelOption,SlashCommandIntegerOption,SlashCommandMentionableOption,SlashCommandNumberOption,SlashCommandRoleOption,SlashCommandStringOption,SlashCommandSubcommandBuilder,SlashCommandSubcommandGroupBuilder,SlashCommandUserOption,TimestampStyles,blockQuote,bold,channelMention,codeBlock,formatEmoji,hideLinkEmbed,hyperlink,inlineCode,italic,memberNicknameMention,quote,roleMention,spoiler,strikethrough,time,underscore,userMention}); +"use strict"; +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __decorateClass = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target; + for (var i = decorators.length - 1, decorator; i >= 0; i--) + if (decorator = decorators[i]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) + __defProp(target, key, result); + return result; +}; +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + ActionRowBuilder: () => ActionRowBuilder, + ApplicationCommandNumericOptionMinMaxValueMixin: () => ApplicationCommandNumericOptionMinMaxValueMixin, + ApplicationCommandOptionBase: () => ApplicationCommandOptionBase, + ApplicationCommandOptionChannelTypesMixin: () => ApplicationCommandOptionChannelTypesMixin, + ApplicationCommandOptionWithChoicesAndAutocompleteMixin: () => ApplicationCommandOptionWithChoicesAndAutocompleteMixin, + ButtonBuilder: () => ButtonBuilder, + ComponentAssertions: () => Assertions_exports2, + ComponentBuilder: () => ComponentBuilder, + ContextMenuCommandAssertions: () => Assertions_exports6, + ContextMenuCommandBuilder: () => ContextMenuCommandBuilder, + EmbedAssertions: () => Assertions_exports, + EmbedBuilder: () => EmbedBuilder, + Faces: () => Faces, + ModalAssertions: () => Assertions_exports4, + ModalBuilder: () => ModalBuilder, + SelectMenuBuilder: () => SelectMenuBuilder, + SelectMenuOptionBuilder: () => SelectMenuOptionBuilder, + SharedNameAndDescription: () => SharedNameAndDescription, + SharedSlashCommandOptions: () => SharedSlashCommandOptions, + SlashCommandAssertions: () => Assertions_exports5, + SlashCommandAttachmentOption: () => SlashCommandAttachmentOption, + SlashCommandBooleanOption: () => SlashCommandBooleanOption, + SlashCommandBuilder: () => SlashCommandBuilder, + SlashCommandChannelOption: () => SlashCommandChannelOption, + SlashCommandIntegerOption: () => SlashCommandIntegerOption, + SlashCommandMentionableOption: () => SlashCommandMentionableOption, + SlashCommandNumberOption: () => SlashCommandNumberOption, + SlashCommandRoleOption: () => SlashCommandRoleOption, + SlashCommandStringOption: () => SlashCommandStringOption, + SlashCommandSubcommandBuilder: () => SlashCommandSubcommandBuilder, + SlashCommandSubcommandGroupBuilder: () => SlashCommandSubcommandGroupBuilder, + SlashCommandUserOption: () => SlashCommandUserOption, + TextInputAssertions: () => Assertions_exports3, + TextInputBuilder: () => TextInputBuilder, + TimestampStyles: () => TimestampStyles, + blockQuote: () => blockQuote, + bold: () => bold, + channelMention: () => channelMention, + codeBlock: () => codeBlock, + createComponentBuilder: () => createComponentBuilder, + disableValidators: () => disableValidators, + embedLength: () => embedLength, + enableValidators: () => enableValidators, + formatEmoji: () => formatEmoji, + hideLinkEmbed: () => hideLinkEmbed, + hyperlink: () => hyperlink, + inlineCode: () => inlineCode, + isEquatable: () => isEquatable, + isJSONEncodable: () => isJSONEncodable, + isValidationEnabled: () => isValidationEnabled, + italic: () => italic, + normalizeArray: () => normalizeArray, + quote: () => quote, + roleMention: () => roleMention, + spoiler: () => spoiler, + strikethrough: () => strikethrough, + time: () => time, + underscore: () => underscore, + userMention: () => userMention +}); +module.exports = __toCommonJS(src_exports); + +// src/messages/embed/Assertions.ts +var Assertions_exports = {}; +__export(Assertions_exports, { + RGBPredicate: () => RGBPredicate, + authorNamePredicate: () => authorNamePredicate, + colorPredicate: () => colorPredicate, + descriptionPredicate: () => descriptionPredicate, + embedAuthorPredicate: () => embedAuthorPredicate, + embedFieldPredicate: () => embedFieldPredicate, + embedFieldsArrayPredicate: () => embedFieldsArrayPredicate, + embedFooterPredicate: () => embedFooterPredicate, + fieldInlinePredicate: () => fieldInlinePredicate, + fieldLengthPredicate: () => fieldLengthPredicate, + fieldNamePredicate: () => fieldNamePredicate, + fieldValuePredicate: () => fieldValuePredicate, + footerTextPredicate: () => footerTextPredicate, + imageURLPredicate: () => imageURLPredicate, + timestampPredicate: () => timestampPredicate, + titlePredicate: () => titlePredicate, + urlPredicate: () => urlPredicate, + validateFieldLength: () => validateFieldLength +}); +var import_shapeshift = require("@sapphire/shapeshift"); + +// src/util/validation.ts +var validate = true; +var enableValidators = /* @__PURE__ */ __name(() => validate = true, "enableValidators"); +var disableValidators = /* @__PURE__ */ __name(() => validate = false, "disableValidators"); +var isValidationEnabled = /* @__PURE__ */ __name(() => validate, "isValidationEnabled"); + +// src/messages/embed/Assertions.ts +var fieldNamePredicate = import_shapeshift.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(256).setValidationEnabled(isValidationEnabled); +var fieldValuePredicate = import_shapeshift.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(1024).setValidationEnabled(isValidationEnabled); +var fieldInlinePredicate = import_shapeshift.s.boolean.optional; +var embedFieldPredicate = import_shapeshift.s.object({ + name: fieldNamePredicate, + value: fieldValuePredicate, + inline: fieldInlinePredicate +}).setValidationEnabled(isValidationEnabled); +var embedFieldsArrayPredicate = embedFieldPredicate.array.setValidationEnabled(isValidationEnabled); +var fieldLengthPredicate = import_shapeshift.s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled); +function validateFieldLength(amountAdding, fields) { + fieldLengthPredicate.parse((fields?.length ?? 0) + amountAdding); +} +__name(validateFieldLength, "validateFieldLength"); +var authorNamePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled); +var imageURLPredicate = import_shapeshift.s.string.url({ + allowedProtocols: ["http:", "https:", "attachment:"] +}).nullish.setValidationEnabled(isValidationEnabled); +var urlPredicate = import_shapeshift.s.string.url({ + allowedProtocols: ["http:", "https:"] +}).nullish.setValidationEnabled(isValidationEnabled); +var embedAuthorPredicate = import_shapeshift.s.object({ + name: authorNamePredicate, + iconURL: imageURLPredicate, + url: urlPredicate +}).setValidationEnabled(isValidationEnabled); +var RGBPredicate = import_shapeshift.s.number.int.greaterThanOrEqual(0).lessThanOrEqual(255).setValidationEnabled(isValidationEnabled); +var colorPredicate = import_shapeshift.s.number.int.greaterThanOrEqual(0).lessThanOrEqual(16777215).or(import_shapeshift.s.tuple([RGBPredicate, RGBPredicate, RGBPredicate])).nullable.setValidationEnabled(isValidationEnabled); +var descriptionPredicate = import_shapeshift.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(4096).nullable.setValidationEnabled(isValidationEnabled); +var footerTextPredicate = import_shapeshift.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(2048).nullable.setValidationEnabled(isValidationEnabled); +var embedFooterPredicate = import_shapeshift.s.object({ + text: footerTextPredicate, + iconURL: imageURLPredicate +}).setValidationEnabled(isValidationEnabled); +var timestampPredicate = import_shapeshift.s.union(import_shapeshift.s.number, import_shapeshift.s.date).nullable.setValidationEnabled(isValidationEnabled); +var titlePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled); + +// src/util/normalizeArray.ts +function normalizeArray(arr) { + if (Array.isArray(arr[0])) + return arr[0]; + return arr; +} +__name(normalizeArray, "normalizeArray"); + +// src/messages/embed/Embed.ts +var EmbedBuilder = class { + constructor(data = {}) { + __publicField(this, "data"); + this.data = { ...data }; + if (data.timestamp) + this.data.timestamp = new Date(data.timestamp).toISOString(); + } + addFields(...fields) { + fields = normalizeArray(fields); + validateFieldLength(fields.length, this.data.fields); + embedFieldsArrayPredicate.parse(fields); + if (this.data.fields) + this.data.fields.push(...fields); + else + this.data.fields = fields; + return this; + } + spliceFields(index, deleteCount, ...fields) { + validateFieldLength(fields.length - deleteCount, this.data.fields); + embedFieldsArrayPredicate.parse(fields); + if (this.data.fields) + this.data.fields.splice(index, deleteCount, ...fields); + else + this.data.fields = fields; + return this; + } + setFields(...fields) { + this.spliceFields(0, this.data.fields?.length ?? 0, ...normalizeArray(fields)); + return this; + } + setAuthor(options) { + if (options === null) { + this.data.author = void 0; + return this; + } + embedAuthorPredicate.parse(options); + this.data.author = { name: options.name, url: options.url, icon_url: options.iconURL }; + return this; + } + setColor(color) { + colorPredicate.parse(color); + if (Array.isArray(color)) { + const [red, green, blue] = color; + this.data.color = (red << 16) + (green << 8) + blue; + return this; + } + this.data.color = color ?? void 0; + return this; + } + setDescription(description) { + descriptionPredicate.parse(description); + this.data.description = description ?? void 0; + return this; + } + setFooter(options) { + if (options === null) { + this.data.footer = void 0; + return this; + } + embedFooterPredicate.parse(options); + this.data.footer = { text: options.text, icon_url: options.iconURL }; + return this; + } + setImage(url) { + imageURLPredicate.parse(url); + this.data.image = url ? { url } : void 0; + return this; + } + setThumbnail(url) { + imageURLPredicate.parse(url); + this.data.thumbnail = url ? { url } : void 0; + return this; + } + setTimestamp(timestamp = Date.now()) { + timestampPredicate.parse(timestamp); + this.data.timestamp = timestamp ? new Date(timestamp).toISOString() : void 0; + return this; + } + setTitle(title) { + titlePredicate.parse(title); + this.data.title = title ?? void 0; + return this; + } + setURL(url) { + urlPredicate.parse(url); + this.data.url = url ?? void 0; + return this; + } + toJSON() { + return { ...this.data }; + } +}; +__name(EmbedBuilder, "EmbedBuilder"); + +// src/messages/formatters.ts +function codeBlock(language, content) { + return typeof content === "undefined" ? `\`\`\` +${language}\`\`\`` : `\`\`\`${language} +${content}\`\`\``; +} +__name(codeBlock, "codeBlock"); +function inlineCode(content) { + return `\`${content}\``; +} +__name(inlineCode, "inlineCode"); +function italic(content) { + return `_${content}_`; +} +__name(italic, "italic"); +function bold(content) { + return `**${content}**`; +} +__name(bold, "bold"); +function underscore(content) { + return `__${content}__`; +} +__name(underscore, "underscore"); +function strikethrough(content) { + return `~~${content}~~`; +} +__name(strikethrough, "strikethrough"); +function quote(content) { + return `> ${content}`; +} +__name(quote, "quote"); +function blockQuote(content) { + return `>>> ${content}`; +} +__name(blockQuote, "blockQuote"); +function hideLinkEmbed(url) { + return `<${url}>`; +} +__name(hideLinkEmbed, "hideLinkEmbed"); +function hyperlink(content, url, title) { + return title ? `[${content}](${url} "${title}")` : `[${content}](${url})`; +} +__name(hyperlink, "hyperlink"); +function spoiler(content) { + return `||${content}||`; +} +__name(spoiler, "spoiler"); +function userMention(userId) { + return `<@${userId}>`; +} +__name(userMention, "userMention"); +function channelMention(channelId) { + return `<#${channelId}>`; +} +__name(channelMention, "channelMention"); +function roleMention(roleId) { + return `<@&${roleId}>`; +} +__name(roleMention, "roleMention"); +function formatEmoji(emojiId, animated = false) { + return `<${animated ? "a" : ""}:_:${emojiId}>`; +} +__name(formatEmoji, "formatEmoji"); +function time(timeOrSeconds, style) { + if (typeof timeOrSeconds !== "number") { + timeOrSeconds = Math.floor((timeOrSeconds?.getTime() ?? Date.now()) / 1e3); + } + return typeof style === "string" ? `` : ``; +} +__name(time, "time"); +var TimestampStyles = { + ShortTime: "t", + LongTime: "T", + ShortDate: "d", + LongDate: "D", + ShortDateTime: "f", + LongDateTime: "F", + RelativeTime: "R" +}; +var Faces = /* @__PURE__ */ ((Faces2) => { + Faces2["Shrug"] = "\xAF\\_(\u30C4)\\_/\xAF"; + Faces2["Tableflip"] = "(\u256F\xB0\u25A1\xB0\uFF09\u256F\uFE35 \u253B\u2501\u253B"; + Faces2["Unflip"] = "\u252C\u2500\u252C \u30CE( \u309C-\u309C\u30CE)"; + return Faces2; +})(Faces || {}); + +// src/components/Assertions.ts +var Assertions_exports2 = {}; +__export(Assertions_exports2, { + buttonLabelValidator: () => buttonLabelValidator, + buttonStyleValidator: () => buttonStyleValidator, + customIdValidator: () => customIdValidator, + defaultValidator: () => defaultValidator, + disabledValidator: () => disabledValidator, + emojiValidator: () => emojiValidator, + labelValueDescriptionValidator: () => labelValueDescriptionValidator, + minMaxValidator: () => minMaxValidator, + optionValidator: () => optionValidator, + optionsLengthValidator: () => optionsLengthValidator, + optionsValidator: () => optionsValidator, + placeholderValidator: () => placeholderValidator, + urlValidator: () => urlValidator, + validateRequiredButtonParameters: () => validateRequiredButtonParameters, + validateRequiredSelectMenuOptionParameters: () => validateRequiredSelectMenuOptionParameters, + validateRequiredSelectMenuParameters: () => validateRequiredSelectMenuParameters +}); +var import_shapeshift2 = require("@sapphire/shapeshift"); +var import_v10 = require("discord-api-types/v10"); + +// src/components/selectMenu/SelectMenuOption.ts +var SelectMenuOptionBuilder = class { + constructor(data = {}) { + this.data = data; + } + setLabel(label) { + this.data.label = labelValueDescriptionValidator.parse(label); + return this; + } + setValue(value) { + this.data.value = labelValueDescriptionValidator.parse(value); + return this; + } + setDescription(description) { + this.data.description = labelValueDescriptionValidator.parse(description); + return this; + } + setDefault(isDefault = true) { + this.data.default = defaultValidator.parse(isDefault); + return this; + } + setEmoji(emoji) { + this.data.emoji = emojiValidator.parse(emoji); + return this; + } + toJSON() { + validateRequiredSelectMenuOptionParameters(this.data.label, this.data.value); + return { + ...this.data + }; + } +}; +__name(SelectMenuOptionBuilder, "SelectMenuOptionBuilder"); + +// src/components/Assertions.ts +var customIdValidator = import_shapeshift2.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled); +var emojiValidator = import_shapeshift2.s.object({ + id: import_shapeshift2.s.string, + name: import_shapeshift2.s.string, + animated: import_shapeshift2.s.boolean +}).partial.strict.setValidationEnabled(isValidationEnabled); +var disabledValidator = import_shapeshift2.s.boolean; +var buttonLabelValidator = import_shapeshift2.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(80).setValidationEnabled(isValidationEnabled); +var buttonStyleValidator = import_shapeshift2.s.nativeEnum(import_v10.ButtonStyle); +var placeholderValidator = import_shapeshift2.s.string.lengthLessThanOrEqual(150).setValidationEnabled(isValidationEnabled); +var minMaxValidator = import_shapeshift2.s.number.int.greaterThanOrEqual(0).lessThanOrEqual(25).setValidationEnabled(isValidationEnabled); +var labelValueDescriptionValidator = import_shapeshift2.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled); +var optionValidator = import_shapeshift2.s.union(import_shapeshift2.s.object({ + label: labelValueDescriptionValidator, + value: labelValueDescriptionValidator, + description: labelValueDescriptionValidator.optional, + emoji: emojiValidator.optional, + default: import_shapeshift2.s.boolean.optional +}), import_shapeshift2.s.instance(SelectMenuOptionBuilder)).setValidationEnabled(isValidationEnabled); +var optionsValidator = optionValidator.array.lengthGreaterThanOrEqual(0).setValidationEnabled(isValidationEnabled); +var optionsLengthValidator = import_shapeshift2.s.number.int.greaterThanOrEqual(0).lessThanOrEqual(25).setValidationEnabled(isValidationEnabled); +function validateRequiredSelectMenuParameters(options, customId) { + customIdValidator.parse(customId); + optionsValidator.parse(options); +} +__name(validateRequiredSelectMenuParameters, "validateRequiredSelectMenuParameters"); +var defaultValidator = import_shapeshift2.s.boolean; +function validateRequiredSelectMenuOptionParameters(label, value) { + labelValueDescriptionValidator.parse(label); + labelValueDescriptionValidator.parse(value); +} +__name(validateRequiredSelectMenuOptionParameters, "validateRequiredSelectMenuOptionParameters"); +var urlValidator = import_shapeshift2.s.string.url({ + allowedProtocols: ["http:", "https:", "discord:"] +}).setValidationEnabled(isValidationEnabled); +function validateRequiredButtonParameters(style, label, emoji, customId, url) { + if (url && customId) { + throw new RangeError("URL and custom id are mutually exclusive"); + } + if (!label && !emoji) { + throw new RangeError("Buttons must have a label and/or an emoji"); + } + if (style === import_v10.ButtonStyle.Link) { + if (!url) { + throw new RangeError("Link buttons must have a url"); + } + } else if (url) { + throw new RangeError("Non-link buttons cannot have a url"); + } +} +__name(validateRequiredButtonParameters, "validateRequiredButtonParameters"); + +// src/components/ActionRow.ts +var import_v107 = require("discord-api-types/v10"); + +// src/components/Component.ts +var ComponentBuilder = class { + constructor(data) { + __publicField(this, "data"); + this.data = data; + } +}; +__name(ComponentBuilder, "ComponentBuilder"); + +// src/components/Components.ts +var import_v106 = require("discord-api-types/v10"); + +// src/components/button/Button.ts +var import_v102 = require("discord-api-types/v10"); +var ButtonBuilder = class extends ComponentBuilder { + constructor(data) { + super({ type: import_v102.ComponentType.Button, ...data }); + } + setStyle(style) { + this.data.style = buttonStyleValidator.parse(style); + return this; + } + setURL(url) { + this.data.url = urlValidator.parse(url); + return this; + } + setCustomId(customId) { + this.data.custom_id = customIdValidator.parse(customId); + return this; + } + setEmoji(emoji) { + this.data.emoji = emojiValidator.parse(emoji); + return this; + } + setDisabled(disabled = true) { + this.data.disabled = disabledValidator.parse(disabled); + return this; + } + setLabel(label) { + this.data.label = buttonLabelValidator.parse(label); + return this; + } + toJSON() { + validateRequiredButtonParameters(this.data.style, this.data.label, this.data.emoji, this.data.custom_id, this.data.url); + return { + ...this.data + }; + } +}; +__name(ButtonBuilder, "ButtonBuilder"); + +// src/components/selectMenu/SelectMenu.ts +var import_v103 = require("discord-api-types/v10"); +var SelectMenuBuilder = class extends ComponentBuilder { + constructor(data) { + const { options, ...initData } = data ?? {}; + super({ type: import_v103.ComponentType.SelectMenu, ...initData }); + __publicField(this, "options"); + this.options = options?.map((o) => new SelectMenuOptionBuilder(o)) ?? []; + } + setPlaceholder(placeholder) { + this.data.placeholder = placeholderValidator.parse(placeholder); + return this; + } + setMinValues(minValues) { + this.data.min_values = minMaxValidator.parse(minValues); + return this; + } + setMaxValues(maxValues) { + this.data.max_values = minMaxValidator.parse(maxValues); + return this; + } + setCustomId(customId) { + this.data.custom_id = customIdValidator.parse(customId); + return this; + } + setDisabled(disabled = true) { + this.data.disabled = disabledValidator.parse(disabled); + return this; + } + addOptions(...options) { + options = normalizeArray(options); + optionsLengthValidator.parse(this.options.length + options.length); + this.options.push(...options.map((option) => option instanceof SelectMenuOptionBuilder ? option : new SelectMenuOptionBuilder(optionValidator.parse(option)))); + return this; + } + setOptions(...options) { + options = normalizeArray(options); + optionsLengthValidator.parse(options.length); + this.options.splice(0, this.options.length, ...options.map((option) => option instanceof SelectMenuOptionBuilder ? option : new SelectMenuOptionBuilder(optionValidator.parse(option)))); + return this; + } + toJSON() { + validateRequiredSelectMenuParameters(this.options, this.data.custom_id); + return { + ...this.data, + options: this.options.map((o) => o.toJSON()) + }; + } +}; +__name(SelectMenuBuilder, "SelectMenuBuilder"); + +// src/components/textInput/TextInput.ts +var import_v105 = require("discord-api-types/v10"); +var import_fast_deep_equal = __toESM(require("fast-deep-equal")); + +// src/components/textInput/Assertions.ts +var Assertions_exports3 = {}; +__export(Assertions_exports3, { + labelValidator: () => labelValidator, + maxLengthValidator: () => maxLengthValidator, + minLengthValidator: () => minLengthValidator, + placeholderValidator: () => placeholderValidator2, + requiredValidator: () => requiredValidator, + textInputStyleValidator: () => textInputStyleValidator, + validateRequiredParameters: () => validateRequiredParameters, + valueValidator: () => valueValidator +}); +var import_shapeshift3 = require("@sapphire/shapeshift"); +var import_v104 = require("discord-api-types/v10"); +var textInputStyleValidator = import_shapeshift3.s.nativeEnum(import_v104.TextInputStyle); +var minLengthValidator = import_shapeshift3.s.number.int.greaterThanOrEqual(0).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled); +var maxLengthValidator = import_shapeshift3.s.number.int.greaterThanOrEqual(1).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled); +var requiredValidator = import_shapeshift3.s.boolean; +var valueValidator = import_shapeshift3.s.string.lengthLessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled); +var placeholderValidator2 = import_shapeshift3.s.string.lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled); +var labelValidator = import_shapeshift3.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled); +function validateRequiredParameters(customId, style, label) { + customIdValidator.parse(customId); + textInputStyleValidator.parse(style); + labelValidator.parse(label); +} +__name(validateRequiredParameters, "validateRequiredParameters"); + +// src/util/jsonEncodable.ts +function isJSONEncodable(maybeEncodable) { + return maybeEncodable !== null && typeof maybeEncodable === "object" && "toJSON" in maybeEncodable; +} +__name(isJSONEncodable, "isJSONEncodable"); + +// src/components/textInput/TextInput.ts +var TextInputBuilder = class extends ComponentBuilder { + constructor(data) { + super({ type: import_v105.ComponentType.TextInput, ...data }); + } + setCustomId(customId) { + this.data.custom_id = customIdValidator.parse(customId); + return this; + } + setLabel(label) { + this.data.label = labelValidator.parse(label); + return this; + } + setStyle(style) { + this.data.style = textInputStyleValidator.parse(style); + return this; + } + setMinLength(minLength) { + this.data.min_length = minLengthValidator.parse(minLength); + return this; + } + setMaxLength(maxLength) { + this.data.max_length = maxLengthValidator.parse(maxLength); + return this; + } + setPlaceholder(placeholder) { + this.data.placeholder = placeholderValidator2.parse(placeholder); + return this; + } + setValue(value) { + this.data.value = valueValidator.parse(value); + return this; + } + setRequired(required = true) { + this.data.required = requiredValidator.parse(required); + return this; + } + toJSON() { + validateRequiredParameters(this.data.custom_id, this.data.style, this.data.label); + return { + ...this.data + }; + } + equals(other) { + if (isJSONEncodable(other)) { + return (0, import_fast_deep_equal.default)(other.toJSON(), this.data); + } + return (0, import_fast_deep_equal.default)(other, this.data); + } +}; +__name(TextInputBuilder, "TextInputBuilder"); + +// src/components/Components.ts +function createComponentBuilder(data) { + if (data instanceof ComponentBuilder) { + return data; + } + switch (data.type) { + case import_v106.ComponentType.ActionRow: + return new ActionRowBuilder(data); + case import_v106.ComponentType.Button: + return new ButtonBuilder(data); + case import_v106.ComponentType.SelectMenu: + return new SelectMenuBuilder(data); + case import_v106.ComponentType.TextInput: + return new TextInputBuilder(data); + default: + throw new Error(`Cannot properly serialize component type: ${data.type}`); + } +} +__name(createComponentBuilder, "createComponentBuilder"); + +// src/components/ActionRow.ts +var ActionRowBuilder = class extends ComponentBuilder { + constructor({ components, ...data } = {}) { + super({ type: import_v107.ComponentType.ActionRow, ...data }); + __publicField(this, "components"); + this.components = components?.map((c) => createComponentBuilder(c)) ?? []; + } + addComponents(...components) { + this.components.push(...normalizeArray(components)); + return this; + } + setComponents(...components) { + this.components.splice(0, this.components.length, ...normalizeArray(components)); + return this; + } + toJSON() { + return { + ...this.data, + components: this.components.map((component) => component.toJSON()) + }; + } +}; +__name(ActionRowBuilder, "ActionRowBuilder"); + +// src/interactions/modals/Assertions.ts +var Assertions_exports4 = {}; +__export(Assertions_exports4, { + componentsValidator: () => componentsValidator, + titleValidator: () => titleValidator, + validateRequiredParameters: () => validateRequiredParameters2 +}); +var import_shapeshift4 = require("@sapphire/shapeshift"); +var titleValidator = import_shapeshift4.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled); +var componentsValidator = import_shapeshift4.s.instance(ActionRowBuilder).array.lengthGreaterThanOrEqual(1).setValidationEnabled(isValidationEnabled); +function validateRequiredParameters2(customId, title, components) { + customIdValidator.parse(customId); + titleValidator.parse(title); + componentsValidator.parse(components); +} +__name(validateRequiredParameters2, "validateRequiredParameters"); + +// src/interactions/modals/Modal.ts +var ModalBuilder = class { + constructor({ components, ...data } = {}) { + __publicField(this, "data"); + __publicField(this, "components", []); + this.data = { ...data }; + this.components = components?.map((c) => createComponentBuilder(c)) ?? []; + } + setTitle(title) { + this.data.title = titleValidator.parse(title); + return this; + } + setCustomId(customId) { + this.data.custom_id = customIdValidator.parse(customId); + return this; + } + addComponents(...components) { + this.components.push(...normalizeArray(components).map((component) => component instanceof ActionRowBuilder ? component : new ActionRowBuilder(component))); + return this; + } + setComponents(...components) { + this.components.splice(0, this.components.length, ...normalizeArray(components)); + return this; + } + toJSON() { + validateRequiredParameters2(this.data.custom_id, this.data.title, this.components); + return { + ...this.data, + components: this.components.map((component) => component.toJSON()) + }; + } +}; +__name(ModalBuilder, "ModalBuilder"); + +// src/interactions/slashCommands/Assertions.ts +var Assertions_exports5 = {}; +__export(Assertions_exports5, { + assertReturnOfBuilder: () => assertReturnOfBuilder, + localizationMapPredicate: () => localizationMapPredicate, + validateChoicesLength: () => validateChoicesLength, + validateDMPermission: () => validateDMPermission, + validateDefaultMemberPermissions: () => validateDefaultMemberPermissions, + validateDefaultPermission: () => validateDefaultPermission, + validateDescription: () => validateDescription, + validateLocale: () => validateLocale, + validateLocalizationMap: () => validateLocalizationMap, + validateMaxOptionsLength: () => validateMaxOptionsLength, + validateName: () => validateName, + validateRequired: () => validateRequired, + validateRequiredParameters: () => validateRequiredParameters3 +}); +var import_shapeshift5 = require("@sapphire/shapeshift"); +var import_v108 = require("discord-api-types/v10"); +var namePredicate = import_shapeshift5.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^[\p{Ll}\p{Lm}\p{Lo}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+$/u).setValidationEnabled(isValidationEnabled); +function validateName(name) { + namePredicate.parse(name); +} +__name(validateName, "validateName"); +var descriptionPredicate2 = import_shapeshift5.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled); +var localePredicate = import_shapeshift5.s.nativeEnum(import_v108.Locale); +function validateDescription(description) { + descriptionPredicate2.parse(description); +} +__name(validateDescription, "validateDescription"); +var maxArrayLengthPredicate = import_shapeshift5.s.unknown.array.lengthLessThanOrEqual(25).setValidationEnabled(isValidationEnabled); +function validateLocale(locale) { + return localePredicate.parse(locale); +} +__name(validateLocale, "validateLocale"); +function validateMaxOptionsLength(options) { + maxArrayLengthPredicate.parse(options); +} +__name(validateMaxOptionsLength, "validateMaxOptionsLength"); +function validateRequiredParameters3(name, description, options) { + validateName(name); + validateDescription(description); + validateMaxOptionsLength(options); +} +__name(validateRequiredParameters3, "validateRequiredParameters"); +var booleanPredicate = import_shapeshift5.s.boolean; +function validateDefaultPermission(value) { + booleanPredicate.parse(value); +} +__name(validateDefaultPermission, "validateDefaultPermission"); +function validateRequired(required) { + booleanPredicate.parse(required); +} +__name(validateRequired, "validateRequired"); +var choicesLengthPredicate = import_shapeshift5.s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled); +function validateChoicesLength(amountAdding, choices) { + choicesLengthPredicate.parse((choices?.length ?? 0) + amountAdding); +} +__name(validateChoicesLength, "validateChoicesLength"); +function assertReturnOfBuilder(input, ExpectedInstanceOf) { + import_shapeshift5.s.instance(ExpectedInstanceOf).parse(input); +} +__name(assertReturnOfBuilder, "assertReturnOfBuilder"); +var localizationMapPredicate = import_shapeshift5.s.object(Object.fromEntries(Object.values(import_v108.Locale).map((locale) => [locale, import_shapeshift5.s.string.nullish]))).strict.nullish.setValidationEnabled(isValidationEnabled); +function validateLocalizationMap(value) { + localizationMapPredicate.parse(value); +} +__name(validateLocalizationMap, "validateLocalizationMap"); +var dmPermissionPredicate = import_shapeshift5.s.boolean.nullish; +function validateDMPermission(value) { + dmPermissionPredicate.parse(value); +} +__name(validateDMPermission, "validateDMPermission"); +var memberPermissionPredicate = import_shapeshift5.s.union(import_shapeshift5.s.bigint.transform((value) => value.toString()), import_shapeshift5.s.number.safeInt.transform((value) => value.toString()), import_shapeshift5.s.string.regex(/^\d+$/)).nullish; +function validateDefaultMemberPermissions(permissions) { + return memberPermissionPredicate.parse(permissions); +} +__name(validateDefaultMemberPermissions, "validateDefaultMemberPermissions"); + +// src/interactions/slashCommands/SlashCommandBuilder.ts +var import_ts_mixer6 = require("ts-mixer"); + +// src/interactions/slashCommands/SlashCommandSubcommands.ts +var import_v1020 = require("discord-api-types/v10"); +var import_ts_mixer5 = require("ts-mixer"); + +// src/interactions/slashCommands/mixins/NameAndDescription.ts +var SharedNameAndDescription = class { + constructor() { + __publicField(this, "name"); + __publicField(this, "name_localizations"); + __publicField(this, "description"); + __publicField(this, "description_localizations"); + } + setName(name) { + validateName(name); + Reflect.set(this, "name", name); + return this; + } + setDescription(description) { + validateDescription(description); + Reflect.set(this, "description", description); + return this; + } + setNameLocalization(locale, localizedName) { + if (!this.name_localizations) { + Reflect.set(this, "name_localizations", {}); + } + const parsedLocale = validateLocale(locale); + if (localizedName === null) { + this.name_localizations[parsedLocale] = null; + return this; + } + validateName(localizedName); + this.name_localizations[parsedLocale] = localizedName; + return this; + } + setNameLocalizations(localizedNames) { + if (localizedNames === null) { + Reflect.set(this, "name_localizations", null); + return this; + } + Reflect.set(this, "name_localizations", {}); + Object.entries(localizedNames).forEach((args) => this.setNameLocalization(...args)); + return this; + } + setDescriptionLocalization(locale, localizedDescription) { + if (!this.description_localizations) { + Reflect.set(this, "description_localizations", {}); + } + const parsedLocale = validateLocale(locale); + if (localizedDescription === null) { + this.description_localizations[parsedLocale] = null; + return this; + } + validateDescription(localizedDescription); + this.description_localizations[parsedLocale] = localizedDescription; + return this; + } + setDescriptionLocalizations(localizedDescriptions) { + if (localizedDescriptions === null) { + Reflect.set(this, "description_localizations", null); + return this; + } + Reflect.set(this, "description_localizations", {}); + Object.entries(localizedDescriptions).forEach((args) => this.setDescriptionLocalization(...args)); + return this; + } +}; +__name(SharedNameAndDescription, "SharedNameAndDescription"); + +// src/interactions/slashCommands/options/attachment.ts +var import_v109 = require("discord-api-types/v10"); + +// src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts +var ApplicationCommandOptionBase = class extends SharedNameAndDescription { + constructor() { + super(...arguments); + __publicField(this, "required", false); + } + setRequired(required) { + validateRequired(required); + Reflect.set(this, "required", required); + return this; + } + runRequiredValidations() { + validateRequiredParameters3(this.name, this.description, []); + validateLocalizationMap(this.name_localizations); + validateLocalizationMap(this.description_localizations); + validateRequired(this.required); + } +}; +__name(ApplicationCommandOptionBase, "ApplicationCommandOptionBase"); + +// src/interactions/slashCommands/options/attachment.ts +var SlashCommandAttachmentOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", import_v109.ApplicationCommandOptionType.Attachment); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandAttachmentOption, "SlashCommandAttachmentOption"); + +// src/interactions/slashCommands/options/boolean.ts +var import_v1010 = require("discord-api-types/v10"); +var SlashCommandBooleanOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", import_v1010.ApplicationCommandOptionType.Boolean); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandBooleanOption, "SlashCommandBooleanOption"); + +// src/interactions/slashCommands/options/channel.ts +var import_v1012 = require("discord-api-types/v10"); +var import_ts_mixer = require("ts-mixer"); + +// src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts +var import_shapeshift6 = require("@sapphire/shapeshift"); +var import_v1011 = require("discord-api-types/v10"); +var allowedChannelTypes = [ + import_v1011.ChannelType.GuildText, + import_v1011.ChannelType.GuildVoice, + import_v1011.ChannelType.GuildCategory, + import_v1011.ChannelType.GuildNews, + import_v1011.ChannelType.GuildNewsThread, + import_v1011.ChannelType.GuildPublicThread, + import_v1011.ChannelType.GuildPrivateThread, + import_v1011.ChannelType.GuildStageVoice +]; +var channelTypesPredicate = import_shapeshift6.s.array(import_shapeshift6.s.union(...allowedChannelTypes.map((type) => import_shapeshift6.s.literal(type)))); +var ApplicationCommandOptionChannelTypesMixin = class { + constructor() { + __publicField(this, "channel_types"); + } + addChannelTypes(...channelTypes) { + if (this.channel_types === void 0) { + Reflect.set(this, "channel_types", []); + } + this.channel_types.push(...channelTypesPredicate.parse(channelTypes)); + return this; + } +}; +__name(ApplicationCommandOptionChannelTypesMixin, "ApplicationCommandOptionChannelTypesMixin"); + +// src/interactions/slashCommands/options/channel.ts +var SlashCommandChannelOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", import_v1012.ApplicationCommandOptionType.Channel); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandChannelOption, "SlashCommandChannelOption"); +SlashCommandChannelOption = __decorateClass([ + (0, import_ts_mixer.mix)(ApplicationCommandOptionChannelTypesMixin) +], SlashCommandChannelOption); + +// src/interactions/slashCommands/options/integer.ts +var import_shapeshift8 = require("@sapphire/shapeshift"); +var import_v1014 = require("discord-api-types/v10"); +var import_ts_mixer2 = require("ts-mixer"); + +// src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts +var ApplicationCommandNumericOptionMinMaxValueMixin = class { + constructor() { + __publicField(this, "max_value"); + __publicField(this, "min_value"); + } +}; +__name(ApplicationCommandNumericOptionMinMaxValueMixin, "ApplicationCommandNumericOptionMinMaxValueMixin"); + +// src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.ts +var import_shapeshift7 = require("@sapphire/shapeshift"); +var import_v1013 = require("discord-api-types/v10"); +var stringPredicate = import_shapeshift7.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100); +var numberPredicate = import_shapeshift7.s.number.greaterThan(-Infinity).lessThan(Infinity); +var choicesPredicate = import_shapeshift7.s.object({ + name: stringPredicate, + name_localizations: localizationMapPredicate, + value: import_shapeshift7.s.union(stringPredicate, numberPredicate) +}).array; +var booleanPredicate2 = import_shapeshift7.s.boolean; +var ApplicationCommandOptionWithChoicesAndAutocompleteMixin = class { + constructor() { + __publicField(this, "choices"); + __publicField(this, "autocomplete"); + __publicField(this, "type"); + } + addChoices(...choices) { + if (choices.length > 0 && this.autocomplete) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + choicesPredicate.parse(choices); + if (this.choices === void 0) { + Reflect.set(this, "choices", []); + } + validateChoicesLength(choices.length, this.choices); + for (const { name, name_localizations, value } of choices) { + if (this.type === import_v1013.ApplicationCommandOptionType.String) { + stringPredicate.parse(value); + } else { + numberPredicate.parse(value); + } + this.choices.push({ name, name_localizations, value }); + } + return this; + } + setChoices(...choices) { + if (choices.length > 0 && this.autocomplete) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + choicesPredicate.parse(choices); + Reflect.set(this, "choices", []); + this.addChoices(...choices); + return this; + } + setAutocomplete(autocomplete) { + booleanPredicate2.parse(autocomplete); + if (autocomplete && Array.isArray(this.choices) && this.choices.length > 0) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + Reflect.set(this, "autocomplete", autocomplete); + return this; + } +}; +__name(ApplicationCommandOptionWithChoicesAndAutocompleteMixin, "ApplicationCommandOptionWithChoicesAndAutocompleteMixin"); + +// src/interactions/slashCommands/options/integer.ts +var numberValidator = import_shapeshift8.s.number.int; +var SlashCommandIntegerOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", import_v1014.ApplicationCommandOptionType.Integer); + } + setMaxValue(max) { + numberValidator.parse(max); + Reflect.set(this, "max_value", max); + return this; + } + setMinValue(min) { + numberValidator.parse(min); + Reflect.set(this, "min_value", min); + return this; + } + toJSON() { + this.runRequiredValidations(); + if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + return { ...this }; + } +}; +__name(SlashCommandIntegerOption, "SlashCommandIntegerOption"); +SlashCommandIntegerOption = __decorateClass([ + (0, import_ts_mixer2.mix)(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin) +], SlashCommandIntegerOption); + +// src/interactions/slashCommands/options/mentionable.ts +var import_v1015 = require("discord-api-types/v10"); +var SlashCommandMentionableOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", import_v1015.ApplicationCommandOptionType.Mentionable); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandMentionableOption, "SlashCommandMentionableOption"); + +// src/interactions/slashCommands/options/number.ts +var import_shapeshift9 = require("@sapphire/shapeshift"); +var import_v1016 = require("discord-api-types/v10"); +var import_ts_mixer3 = require("ts-mixer"); +var numberValidator2 = import_shapeshift9.s.number; +var SlashCommandNumberOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", import_v1016.ApplicationCommandOptionType.Number); + } + setMaxValue(max) { + numberValidator2.parse(max); + Reflect.set(this, "max_value", max); + return this; + } + setMinValue(min) { + numberValidator2.parse(min); + Reflect.set(this, "min_value", min); + return this; + } + toJSON() { + this.runRequiredValidations(); + if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + return { ...this }; + } +}; +__name(SlashCommandNumberOption, "SlashCommandNumberOption"); +SlashCommandNumberOption = __decorateClass([ + (0, import_ts_mixer3.mix)(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin) +], SlashCommandNumberOption); + +// src/interactions/slashCommands/options/role.ts +var import_v1017 = require("discord-api-types/v10"); +var SlashCommandRoleOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", import_v1017.ApplicationCommandOptionType.Role); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandRoleOption, "SlashCommandRoleOption"); + +// src/interactions/slashCommands/options/string.ts +var import_shapeshift10 = require("@sapphire/shapeshift"); +var import_v1018 = require("discord-api-types/v10"); +var import_ts_mixer4 = require("ts-mixer"); +var minLengthValidator2 = import_shapeshift10.s.number.greaterThanOrEqual(0).lessThanOrEqual(6e3); +var maxLengthValidator2 = import_shapeshift10.s.number.greaterThanOrEqual(1).lessThanOrEqual(6e3); +var SlashCommandStringOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", import_v1018.ApplicationCommandOptionType.String); + __publicField(this, "max_length"); + __publicField(this, "min_length"); + } + setMaxLength(max) { + maxLengthValidator2.parse(max); + Reflect.set(this, "max_length", max); + return this; + } + setMinLength(min) { + minLengthValidator2.parse(min); + Reflect.set(this, "min_length", min); + return this; + } + toJSON() { + this.runRequiredValidations(); + if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + return { ...this }; + } +}; +__name(SlashCommandStringOption, "SlashCommandStringOption"); +SlashCommandStringOption = __decorateClass([ + (0, import_ts_mixer4.mix)(ApplicationCommandOptionWithChoicesAndAutocompleteMixin) +], SlashCommandStringOption); + +// src/interactions/slashCommands/options/user.ts +var import_v1019 = require("discord-api-types/v10"); +var SlashCommandUserOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", import_v1019.ApplicationCommandOptionType.User); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandUserOption, "SlashCommandUserOption"); + +// src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts +var SharedSlashCommandOptions = class { + constructor() { + __publicField(this, "options"); + } + addBooleanOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandBooleanOption); + } + addUserOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandUserOption); + } + addChannelOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandChannelOption); + } + addRoleOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandRoleOption); + } + addAttachmentOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandAttachmentOption); + } + addMentionableOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandMentionableOption); + } + addStringOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandStringOption); + } + addIntegerOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandIntegerOption); + } + addNumberOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandNumberOption); + } + _sharedAddOptionMethod(input, Instance) { + const { options } = this; + validateMaxOptionsLength(options); + const result = typeof input === "function" ? input(new Instance()) : input; + assertReturnOfBuilder(result, Instance); + options.push(result); + return this; + } +}; +__name(SharedSlashCommandOptions, "SharedSlashCommandOptions"); + +// src/interactions/slashCommands/SlashCommandSubcommands.ts +var SlashCommandSubcommandGroupBuilder = class { + constructor() { + __publicField(this, "name"); + __publicField(this, "description"); + __publicField(this, "options", []); + } + addSubcommand(input) { + const { options } = this; + validateMaxOptionsLength(options); + const result = typeof input === "function" ? input(new SlashCommandSubcommandBuilder()) : input; + assertReturnOfBuilder(result, SlashCommandSubcommandBuilder); + options.push(result); + return this; + } + toJSON() { + validateRequiredParameters3(this.name, this.description, this.options); + return { + type: import_v1020.ApplicationCommandOptionType.SubcommandGroup, + name: this.name, + name_localizations: this.name_localizations, + description: this.description, + description_localizations: this.description_localizations, + options: this.options.map((option) => option.toJSON()) + }; + } +}; +__name(SlashCommandSubcommandGroupBuilder, "SlashCommandSubcommandGroupBuilder"); +SlashCommandSubcommandGroupBuilder = __decorateClass([ + (0, import_ts_mixer5.mix)(SharedNameAndDescription) +], SlashCommandSubcommandGroupBuilder); +var SlashCommandSubcommandBuilder = class { + constructor() { + __publicField(this, "name"); + __publicField(this, "description"); + __publicField(this, "options", []); + } + toJSON() { + validateRequiredParameters3(this.name, this.description, this.options); + return { + type: import_v1020.ApplicationCommandOptionType.Subcommand, + name: this.name, + name_localizations: this.name_localizations, + description: this.description, + description_localizations: this.description_localizations, + options: this.options.map((option) => option.toJSON()) + }; + } +}; +__name(SlashCommandSubcommandBuilder, "SlashCommandSubcommandBuilder"); +SlashCommandSubcommandBuilder = __decorateClass([ + (0, import_ts_mixer5.mix)(SharedNameAndDescription, SharedSlashCommandOptions) +], SlashCommandSubcommandBuilder); + +// src/interactions/slashCommands/SlashCommandBuilder.ts +var SlashCommandBuilder = class { + constructor() { + __publicField(this, "name"); + __publicField(this, "name_localizations"); + __publicField(this, "description"); + __publicField(this, "description_localizations"); + __publicField(this, "options", []); + __publicField(this, "default_permission"); + __publicField(this, "default_member_permissions"); + __publicField(this, "dm_permission"); + } + toJSON() { + validateRequiredParameters3(this.name, this.description, this.options); + validateLocalizationMap(this.name_localizations); + validateLocalizationMap(this.description_localizations); + return { + ...this, + options: this.options.map((option) => option.toJSON()) + }; + } + setDefaultPermission(value) { + validateDefaultPermission(value); + Reflect.set(this, "default_permission", value); + return this; + } + setDefaultMemberPermissions(permissions) { + const permissionValue = validateDefaultMemberPermissions(permissions); + Reflect.set(this, "default_member_permissions", permissionValue); + return this; + } + setDMPermission(enabled) { + validateDMPermission(enabled); + Reflect.set(this, "dm_permission", enabled); + return this; + } + addSubcommandGroup(input) { + const { options } = this; + validateMaxOptionsLength(options); + const result = typeof input === "function" ? input(new SlashCommandSubcommandGroupBuilder()) : input; + assertReturnOfBuilder(result, SlashCommandSubcommandGroupBuilder); + options.push(result); + return this; + } + addSubcommand(input) { + const { options } = this; + validateMaxOptionsLength(options); + const result = typeof input === "function" ? input(new SlashCommandSubcommandBuilder()) : input; + assertReturnOfBuilder(result, SlashCommandSubcommandBuilder); + options.push(result); + return this; + } +}; +__name(SlashCommandBuilder, "SlashCommandBuilder"); +SlashCommandBuilder = __decorateClass([ + (0, import_ts_mixer6.mix)(SharedSlashCommandOptions, SharedNameAndDescription) +], SlashCommandBuilder); + +// src/interactions/contextMenuCommands/Assertions.ts +var Assertions_exports6 = {}; +__export(Assertions_exports6, { + validateDMPermission: () => validateDMPermission2, + validateDefaultMemberPermissions: () => validateDefaultMemberPermissions2, + validateDefaultPermission: () => validateDefaultPermission2, + validateName: () => validateName2, + validateRequiredParameters: () => validateRequiredParameters4, + validateType: () => validateType +}); +var import_shapeshift11 = require("@sapphire/shapeshift"); +var import_v1021 = require("discord-api-types/v10"); +var namePredicate2 = import_shapeshift11.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^( *[\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+ *)+$/u).setValidationEnabled(isValidationEnabled); +var typePredicate = import_shapeshift11.s.union(import_shapeshift11.s.literal(import_v1021.ApplicationCommandType.User), import_shapeshift11.s.literal(import_v1021.ApplicationCommandType.Message)).setValidationEnabled(isValidationEnabled); +var booleanPredicate3 = import_shapeshift11.s.boolean; +function validateDefaultPermission2(value) { + booleanPredicate3.parse(value); +} +__name(validateDefaultPermission2, "validateDefaultPermission"); +function validateName2(name) { + namePredicate2.parse(name); +} +__name(validateName2, "validateName"); +function validateType(type) { + typePredicate.parse(type); +} +__name(validateType, "validateType"); +function validateRequiredParameters4(name, type) { + validateName2(name); + validateType(type); +} +__name(validateRequiredParameters4, "validateRequiredParameters"); +var dmPermissionPredicate2 = import_shapeshift11.s.boolean.nullish; +function validateDMPermission2(value) { + dmPermissionPredicate2.parse(value); +} +__name(validateDMPermission2, "validateDMPermission"); +var memberPermissionPredicate2 = import_shapeshift11.s.union(import_shapeshift11.s.bigint.transform((value) => value.toString()), import_shapeshift11.s.number.safeInt.transform((value) => value.toString()), import_shapeshift11.s.string.regex(/^\d+$/)).nullish; +function validateDefaultMemberPermissions2(permissions) { + return memberPermissionPredicate2.parse(permissions); +} +__name(validateDefaultMemberPermissions2, "validateDefaultMemberPermissions"); + +// src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts +var ContextMenuCommandBuilder = class { + constructor() { + __publicField(this, "name"); + __publicField(this, "name_localizations"); + __publicField(this, "type"); + __publicField(this, "default_permission"); + __publicField(this, "default_member_permissions"); + __publicField(this, "dm_permission"); + } + setName(name) { + validateName2(name); + Reflect.set(this, "name", name); + return this; + } + setType(type) { + validateType(type); + Reflect.set(this, "type", type); + return this; + } + setDefaultPermission(value) { + validateDefaultPermission2(value); + Reflect.set(this, "default_permission", value); + return this; + } + setDefaultMemberPermissions(permissions) { + const permissionValue = validateDefaultMemberPermissions2(permissions); + Reflect.set(this, "default_member_permissions", permissionValue); + return this; + } + setDMPermission(enabled) { + validateDMPermission2(enabled); + Reflect.set(this, "dm_permission", enabled); + return this; + } + setNameLocalization(locale, localizedName) { + if (!this.name_localizations) { + Reflect.set(this, "name_localizations", {}); + } + const parsedLocale = validateLocale(locale); + if (localizedName === null) { + this.name_localizations[parsedLocale] = null; + return this; + } + validateName2(localizedName); + this.name_localizations[parsedLocale] = localizedName; + return this; + } + setNameLocalizations(localizedNames) { + if (localizedNames === null) { + Reflect.set(this, "name_localizations", null); + return this; + } + Reflect.set(this, "name_localizations", {}); + Object.entries(localizedNames).forEach((args) => this.setNameLocalization(...args)); + return this; + } + toJSON() { + validateRequiredParameters4(this.name, this.type); + validateLocalizationMap(this.name_localizations); + return { ...this }; + } +}; +__name(ContextMenuCommandBuilder, "ContextMenuCommandBuilder"); + +// src/util/equatable.ts +function isEquatable(maybeEquatable) { + return maybeEquatable !== null && typeof maybeEquatable === "object" && "equals" in maybeEquatable; +} +__name(isEquatable, "isEquatable"); + +// src/util/componentUtil.ts +function embedLength(data) { + return (data.title?.length ?? 0) + (data.description?.length ?? 0) + (data.fields?.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) ?? 0) + (data.footer?.text.length ?? 0) + (data.author?.name.length ?? 0); +} +__name(embedLength, "embedLength"); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ActionRowBuilder, + ApplicationCommandNumericOptionMinMaxValueMixin, + ApplicationCommandOptionBase, + ApplicationCommandOptionChannelTypesMixin, + ApplicationCommandOptionWithChoicesAndAutocompleteMixin, + ButtonBuilder, + ComponentAssertions, + ComponentBuilder, + ContextMenuCommandAssertions, + ContextMenuCommandBuilder, + EmbedAssertions, + EmbedBuilder, + Faces, + ModalAssertions, + ModalBuilder, + SelectMenuBuilder, + SelectMenuOptionBuilder, + SharedNameAndDescription, + SharedSlashCommandOptions, + SlashCommandAssertions, + SlashCommandAttachmentOption, + SlashCommandBooleanOption, + SlashCommandBuilder, + SlashCommandChannelOption, + SlashCommandIntegerOption, + SlashCommandMentionableOption, + SlashCommandNumberOption, + SlashCommandRoleOption, + SlashCommandStringOption, + SlashCommandSubcommandBuilder, + SlashCommandSubcommandGroupBuilder, + SlashCommandUserOption, + TextInputAssertions, + TextInputBuilder, + TimestampStyles, + blockQuote, + bold, + channelMention, + codeBlock, + createComponentBuilder, + disableValidators, + embedLength, + enableValidators, + formatEmoji, + hideLinkEmbed, + hyperlink, + inlineCode, + isEquatable, + isJSONEncodable, + isValidationEnabled, + italic, + normalizeArray, + quote, + roleMention, + spoiler, + strikethrough, + time, + underscore, + userMention +}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/dist/index.js.map b/node_modules/@discordjs/builders/dist/index.js.map index 72c1248..e55c55b 100644 --- a/node_modules/@discordjs/builders/dist/index.js.map +++ b/node_modules/@discordjs/builders/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts","../src/messages/embed/Assertions.ts","../src/messages/embed/Embed.ts","../src/messages/formatters.ts","../src/interactions/slashCommands/Assertions.ts","../src/interactions/slashCommands/SlashCommandBuilder.ts","../src/interactions/slashCommands/options/boolean.ts","../src/interactions/slashCommands/mixins/NameAndDescription.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts","../src/interactions/slashCommands/options/channel.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts","../src/interactions/slashCommands/options/integer.ts","../src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.ts","../src/interactions/slashCommands/options/mentionable.ts","../src/interactions/slashCommands/options/number.ts","../src/interactions/slashCommands/options/role.ts","../src/interactions/slashCommands/options/string.ts","../src/interactions/slashCommands/options/user.ts","../src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts","../src/interactions/slashCommands/SlashCommandSubcommands.ts","../src/interactions/contextMenuCommands/Assertions.ts","../src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts"],"sourcesContent":["export * as EmbedAssertions from './messages/embed/Assertions';\nexport * from './messages/embed/Embed';\nexport * from './messages/formatters';\n\nexport * as SlashCommandAssertions from './interactions/slashCommands/Assertions';\nexport * from './interactions/slashCommands/SlashCommandBuilder';\nexport * from './interactions/slashCommands/SlashCommandSubcommands';\nexport * from './interactions/slashCommands/options/boolean';\nexport * from './interactions/slashCommands/options/channel';\nexport * from './interactions/slashCommands/options/integer';\nexport * from './interactions/slashCommands/options/mentionable';\nexport * from './interactions/slashCommands/options/number';\nexport * from './interactions/slashCommands/options/role';\nexport * from './interactions/slashCommands/options/string';\nexport * from './interactions/slashCommands/options/user';\n\nexport * as ContextMenuCommandAssertions from './interactions/contextMenuCommands/Assertions';\nexport * from './interactions/contextMenuCommands/ContextMenuCommandBuilder';\n","import type { APIEmbedField } from 'discord-api-types/v9';\nimport { z } from 'zod';\n\nexport const fieldNamePredicate = z.string().min(1).max(256);\n\nexport const fieldValuePredicate = z.string().min(1).max(1024);\n\nexport const fieldInlinePredicate = z.boolean().optional();\n\nexport const embedFieldPredicate = z.object({\n\tname: fieldNamePredicate,\n\tvalue: fieldValuePredicate,\n\tinline: fieldInlinePredicate,\n});\n\nexport const embedFieldsArrayPredicate = embedFieldPredicate.array();\n\nexport const fieldLengthPredicate = z.number().lte(25);\n\nexport function validateFieldLength(fields: APIEmbedField[], amountAdding: number): void {\n\tfieldLengthPredicate.parse(fields.length + amountAdding);\n}\n\nexport const authorNamePredicate = fieldNamePredicate.nullable();\n\nexport const urlPredicate = z.string().url().nullish();\n\nexport const colorPredicate = z.number().gte(0).lte(0xffffff).nullable();\n\nexport const descriptionPredicate = z.string().min(1).max(4096).nullable();\n\nexport const footerTextPredicate = z.string().min(1).max(2048).nullable();\n\nexport const timestampPredicate = z.union([z.number(), z.date()]).nullable();\n\nexport const titlePredicate = fieldNamePredicate.nullable();\n","import type {\n\tAPIEmbed,\n\tAPIEmbedAuthor,\n\tAPIEmbedField,\n\tAPIEmbedFooter,\n\tAPIEmbedImage,\n\tAPIEmbedProvider,\n\tAPIEmbedThumbnail,\n\tAPIEmbedVideo,\n} from 'discord-api-types/v9';\nimport {\n\tauthorNamePredicate,\n\tcolorPredicate,\n\tdescriptionPredicate,\n\tembedFieldsArrayPredicate,\n\tfieldInlinePredicate,\n\tfieldNamePredicate,\n\tfieldValuePredicate,\n\tfooterTextPredicate,\n\ttimestampPredicate,\n\ttitlePredicate,\n\turlPredicate,\n\tvalidateFieldLength,\n} from './Assertions';\n\nexport interface AuthorOptions {\n\tname: string;\n\turl?: string;\n\ticonURL?: string;\n}\n\nexport interface FooterOptions {\n\ttext: string;\n\ticonURL?: string;\n}\n\n/**\n * Represents an embed in a message (image/video preview, rich embed, etc.)\n */\nexport class Embed implements APIEmbed {\n\t/**\n\t * An array of fields of this embed\n\t */\n\tpublic fields: APIEmbedField[];\n\n\t/**\n\t * The embed title\n\t */\n\tpublic title?: string;\n\n\t/**\n\t * The embed description\n\t */\n\tpublic description?: string;\n\n\t/**\n\t * The embed url\n\t */\n\tpublic url?: string;\n\n\t/**\n\t * The embed color\n\t */\n\tpublic color?: number;\n\n\t/**\n\t * The timestamp of the embed in the ISO format\n\t */\n\tpublic timestamp?: string;\n\n\t/**\n\t * The embed thumbnail data\n\t */\n\tpublic thumbnail?: APIEmbedThumbnail;\n\n\t/**\n\t * The embed image data\n\t */\n\tpublic image?: APIEmbedImage;\n\n\t/**\n\t * Received video data\n\t */\n\tpublic video?: APIEmbedVideo;\n\n\t/**\n\t * The embed author data\n\t */\n\tpublic author?: APIEmbedAuthor;\n\n\t/**\n\t * Received data about the embed provider\n\t */\n\tpublic provider?: APIEmbedProvider;\n\n\t/**\n\t * The embed footer data\n\t */\n\tpublic footer?: APIEmbedFooter;\n\n\tpublic constructor(data: APIEmbed = {}) {\n\t\tthis.title = data.title;\n\t\tthis.description = data.description;\n\t\tthis.url = data.url;\n\t\tthis.color = data.color;\n\t\tthis.thumbnail = data.thumbnail;\n\t\tthis.image = data.image;\n\t\tthis.video = data.video;\n\t\tthis.author = data.author;\n\t\tthis.provider = data.provider;\n\t\tthis.footer = data.footer;\n\t\tthis.fields = data.fields ?? [];\n\n\t\tif (data.timestamp) this.timestamp = new Date(data.timestamp).toISOString();\n\t}\n\n\t/**\n\t * The accumulated length for the embed title, description, fields, footer text, and author name\n\t */\n\tpublic get length(): number {\n\t\treturn (\n\t\t\t(this.title?.length ?? 0) +\n\t\t\t(this.description?.length ?? 0) +\n\t\t\tthis.fields.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) +\n\t\t\t(this.footer?.text.length ?? 0) +\n\t\t\t(this.author?.name.length ?? 0)\n\t\t);\n\t}\n\n\t/**\n\t * Adds a field to the embed (max 25)\n\t *\n\t * @param field The field to add.\n\t */\n\tpublic addField(field: APIEmbedField): this {\n\t\treturn this.addFields(field);\n\t}\n\n\t/**\n\t * Adds fields to the embed (max 25)\n\t *\n\t * @param fields The fields to add\n\t */\n\tpublic addFields(...fields: APIEmbedField[]): this {\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(this.fields, fields.length);\n\n\t\tthis.fields.push(...Embed.normalizeFields(...fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts fields in the embed (max 25)\n\t *\n\t * @param index The index to start at\n\t * @param deleteCount The number of fields to remove\n\t * @param fields The replacing field objects\n\t */\n\tpublic spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this {\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(this.fields, fields.length - deleteCount);\n\n\t\tthis.fields.splice(index, deleteCount, ...Embed.normalizeFields(...fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the author of this embed\n\t *\n\t * @param options The options for the author\n\t */\n\tpublic setAuthor(options: AuthorOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.author = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\tconst { name, iconURL, url } = options;\n\t\t// Data assertions\n\t\tauthorNamePredicate.parse(name);\n\t\turlPredicate.parse(iconURL);\n\t\turlPredicate.parse(url);\n\n\t\tthis.author = { name, url, icon_url: iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the color of this embed\n\t *\n\t * @param color The color of the embed\n\t */\n\tpublic setColor(color: number | null): this {\n\t\t// Data assertions\n\t\tcolorPredicate.parse(color);\n\n\t\tthis.color = color ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this embed\n\t *\n\t * @param description The description\n\t */\n\tpublic setDescription(description: string | null): this {\n\t\t// Data assertions\n\t\tdescriptionPredicate.parse(description);\n\n\t\tthis.description = description ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the footer of this embed\n\t *\n\t * @param options The options for the footer\n\t */\n\tpublic setFooter(options: FooterOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.footer = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\tconst { text, iconURL } = options;\n\t\t// Data assertions\n\t\tfooterTextPredicate.parse(text);\n\t\turlPredicate.parse(iconURL);\n\n\t\tthis.footer = { text, icon_url: iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the image of this embed\n\t *\n\t * @param url The URL of the image\n\t */\n\tpublic setImage(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.image = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the thumbnail of this embed\n\t *\n\t * @param url The URL of the thumbnail\n\t */\n\tpublic setThumbnail(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.thumbnail = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the timestamp of this embed\n\t *\n\t * @param timestamp The timestamp or date\n\t */\n\tpublic setTimestamp(timestamp: number | Date | null = Date.now()): this {\n\t\t// Data assertions\n\t\ttimestampPredicate.parse(timestamp);\n\n\t\tthis.timestamp = timestamp ? new Date(timestamp).toISOString() : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the title of this embed\n\t *\n\t * @param title The title\n\t */\n\tpublic setTitle(title: string | null): this {\n\t\t// Data assertions\n\t\ttitlePredicate.parse(title);\n\n\t\tthis.title = title ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL of this embed\n\t *\n\t * @param url The URL\n\t */\n\tpublic setURL(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.url = url ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Transforms the embed to a plain object\n\t */\n\tpublic toJSON(): APIEmbed {\n\t\treturn { ...this };\n\t}\n\n\t/**\n\t * Normalizes field input and resolves strings\n\t *\n\t * @param fields Fields to normalize\n\t */\n\tpublic static normalizeFields(...fields: APIEmbedField[]): APIEmbedField[] {\n\t\treturn fields.flat(Infinity).map((field) => {\n\t\t\tfieldNamePredicate.parse(field.name);\n\t\t\tfieldValuePredicate.parse(field.value);\n\t\t\tfieldInlinePredicate.parse(field.inline);\n\n\t\t\treturn { name: field.name, value: field.value, inline: field.inline ?? undefined };\n\t\t});\n\t}\n}\n","import type { Snowflake } from 'discord-api-types/globals';\nimport type { URL } from 'url';\n\n/**\n * Wraps the content inside a codeblock with no language\n *\n * @param content The content to wrap\n */\nexport function codeBlock(content: C): `\\`\\`\\`\\n${C}\\`\\`\\``;\n\n/**\n * Wraps the content inside a codeblock with the specified language\n *\n * @param language The language for the codeblock\n * @param content The content to wrap\n */\nexport function codeBlock(language: L, content: C): `\\`\\`\\`${L}\\n${C}\\`\\`\\``;\nexport function codeBlock(language: string, content?: string): string {\n\treturn typeof content === 'undefined' ? `\\`\\`\\`\\n${language}\\`\\`\\`` : `\\`\\`\\`${language}\\n${content}\\`\\`\\``;\n}\n\n/**\n * Wraps the content inside \\`backticks\\`, which formats it as inline code\n *\n * @param content The content to wrap\n */\nexport function inlineCode(content: C): `\\`${C}\\`` {\n\treturn `\\`${content}\\``;\n}\n\n/**\n * Formats the content into italic text\n *\n * @param content The content to wrap\n */\nexport function italic(content: C): `_${C}_` {\n\treturn `_${content}_`;\n}\n\n/**\n * Formats the content into bold text\n *\n * @param content The content to wrap\n */\nexport function bold(content: C): `**${C}**` {\n\treturn `**${content}**`;\n}\n\n/**\n * Formats the content into underscored text\n *\n * @param content The content to wrap\n */\nexport function underscore(content: C): `__${C}__` {\n\treturn `__${content}__`;\n}\n\n/**\n * Formats the content into strike-through text\n *\n * @param content The content to wrap\n */\nexport function strikethrough(content: C): `~~${C}~~` {\n\treturn `~~${content}~~`;\n}\n\n/**\n * Formats the content into a quote. This needs to be at the start of the line for Discord to format it\n *\n * @param content The content to wrap\n */\nexport function quote(content: C): `> ${C}` {\n\treturn `> ${content}`;\n}\n\n/**\n * Formats the content into a block quote. This needs to be at the start of the line for Discord to format it\n *\n * @param content The content to wrap\n */\nexport function blockQuote(content: C): `>>> ${C}` {\n\treturn `>>> ${content}`;\n}\n\n/**\n * Wraps the URL into `<>`, which stops it from embedding\n *\n * @param url The URL to wrap\n */\nexport function hideLinkEmbed(url: C): `<${C}>`;\n\n/**\n * Wraps the URL into `<>`, which stops it from embedding\n *\n * @param url The URL to wrap\n */\nexport function hideLinkEmbed(url: URL): `<${string}>`;\nexport function hideLinkEmbed(url: string | URL) {\n\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\treturn `<${url}>`;\n}\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content The content to display\n * @param url The URL the content links to\n */\nexport function hyperlink(content: C, url: URL): `[${C}](${string})`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content The content to display\n * @param url The URL the content links to\n */\nexport function hyperlink(content: C, url: U): `[${C}](${U})`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content The content to display\n * @param url The URL the content links to\n * @param title The title shown when hovering on the masked link\n */\nexport function hyperlink(\n\tcontent: C,\n\turl: URL,\n\ttitle: T,\n): `[${C}](${string} \"${T}\")`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content The content to display\n * @param url The URL the content links to\n * @param title The title shown when hovering on the masked link\n */\nexport function hyperlink(\n\tcontent: C,\n\turl: U,\n\ttitle: T,\n): `[${C}](${U} \"${T}\")`;\nexport function hyperlink(content: string, url: string | URL, title?: string) {\n\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\treturn title ? `[${content}](${url} \"${title}\")` : `[${content}](${url})`;\n}\n\n/**\n * Wraps the content inside spoiler (hidden text)\n *\n * @param content The content to wrap\n */\nexport function spoiler(content: C): `||${C}||` {\n\treturn `||${content}||`;\n}\n\n/**\n * Formats a user ID into a user mention\n *\n * @param userId The user ID to format\n */\nexport function userMention(userId: C): `<@${C}>` {\n\treturn `<@${userId}>`;\n}\n\n/**\n * Formats a user ID into a member-nickname mention\n *\n * @param memberId The user ID to format\n */\nexport function memberNicknameMention(memberId: C): `<@!${C}>` {\n\treturn `<@!${memberId}>`;\n}\n\n/**\n * Formats a channel ID into a channel mention\n *\n * @param channelId The channel ID to format\n */\nexport function channelMention(channelId: C): `<#${C}>` {\n\treturn `<#${channelId}>`;\n}\n\n/**\n * Formats a role ID into a role mention\n *\n * @param roleId The role ID to format\n */\nexport function roleMention(roleId: C): `<@&${C}>` {\n\treturn `<@&${roleId}>`;\n}\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId The emoji ID to format\n */\nexport function formatEmoji(emojiId: C, animated?: false): `<:_:${C}>`;\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId The emoji ID to format\n * @param animated Whether the emoji is animated or not. Defaults to `false`\n */\nexport function formatEmoji(emojiId: C, animated?: true): ``;\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId The emoji ID to format\n * @param animated Whether the emoji is animated or not. Defaults to `false`\n */\nexport function formatEmoji(emojiId: C, animated = false): `` | `<:_:${C}>` {\n\treturn `<${animated ? 'a' : ''}:_:${emojiId}>`;\n}\n\n/**\n * Formats a date into a short date-time string\n *\n * @param date The date to format, defaults to the current time\n */\nexport function time(date?: Date): ``;\n\n/**\n * Formats a date given a format style\n *\n * @param date The date to format\n * @param style The style to use\n */\nexport function time(date: Date, style: S): ``;\n\n/**\n * Formats the given timestamp into a short date-time string\n *\n * @param seconds The time to format, represents an UNIX timestamp in seconds\n */\nexport function time(seconds: C): ``;\n\n/**\n * Formats the given timestamp into a short date-time string\n *\n * @param seconds The time to format, represents an UNIX timestamp in seconds\n * @param style The style to use\n */\nexport function time(seconds: C, style: S): ``;\nexport function time(timeOrSeconds?: number | Date, style?: TimestampStylesString): string {\n\tif (typeof timeOrSeconds !== 'number') {\n\t\ttimeOrSeconds = Math.floor((timeOrSeconds?.getTime() ?? Date.now()) / 1000);\n\t}\n\n\treturn typeof style === 'string' ? `` : ``;\n}\n\n/**\n * The [message formatting timestamp styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord\n */\nexport const TimestampStyles = {\n\t/**\n\t * Short time format, consisting of hours and minutes, e.g. 16:20\n\t */\n\tShortTime: 't',\n\n\t/**\n\t * Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30\n\t */\n\tLongTime: 'T',\n\n\t/**\n\t * Short date format, consisting of day, month, and year, e.g. 20/04/2021\n\t */\n\tShortDate: 'd',\n\n\t/**\n\t * Long date format, consisting of day, month, and year, e.g. 20 April 2021\n\t */\n\tLongDate: 'D',\n\n\t/**\n\t * Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20\n\t */\n\tShortDateTime: 'f',\n\n\t/**\n\t * Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20\n\t */\n\tLongDateTime: 'F',\n\n\t/**\n\t * Relative time format, consisting of a relative duration format, e.g. 2 months ago\n\t */\n\tRelativeTime: 'R',\n} as const;\n\n/**\n * The possible values, see {@link TimestampStyles} for more information\n */\nexport type TimestampStylesString = typeof TimestampStyles[keyof typeof TimestampStyles];\n\n/**\n * An enum with all the available faces from Discord's native slash commands\n */\nexport enum Faces {\n\t/**\n\t * ¯\\\\_(ツ)\\\\_/¯\n\t */\n\tShrug = '¯\\\\_(ツ)\\\\_/¯',\n\n\t/**\n\t * (╯°□°)╯︵ ┻━┻\n\t */\n\tTableflip = '(╯°□°)╯︵ ┻━┻',\n\n\t/**\n\t * ┬─┬ ノ( ゜-゜ノ)\n\t */\n\tUnflip = '┬─┬ ノ( ゜-゜ノ)',\n}\n","import is from '@sindresorhus/is';\nimport type { APIApplicationCommandOptionChoice } from 'discord-api-types/v9';\nimport { z } from 'zod';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder';\nimport type { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands';\n\nexport function validateRequiredParameters(\n\tname: string,\n\tdescription: string,\n\toptions: ToAPIApplicationCommandOptions[],\n) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert description conditions\n\tvalidateDescription(description);\n\n\t// Assert options conditions\n\tvalidateMaxOptionsLength(options);\n}\n\nconst namePredicate = z\n\t.string()\n\t.min(1)\n\t.max(32)\n\t.regex(/^[\\P{Lu}\\p{N}_-]+$/u);\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nconst descriptionPredicate = z.string().min(1).max(100);\n\nexport function validateDescription(description: unknown): asserts description is string {\n\tdescriptionPredicate.parse(description);\n}\n\nconst booleanPredicate = z.boolean();\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport function validateRequired(required: unknown): asserts required is boolean {\n\tbooleanPredicate.parse(required);\n}\n\nconst maxArrayLengthPredicate = z.unknown().array().max(25);\n\nexport function validateMaxOptionsLength(options: unknown): asserts options is ToAPIApplicationCommandOptions[] {\n\tmaxArrayLengthPredicate.parse(options);\n}\n\nexport function validateMaxChoicesLength(choices: APIApplicationCommandOptionChoice[]) {\n\tmaxArrayLengthPredicate.parse(choices);\n}\n\nexport function assertReturnOfBuilder<\n\tT extends ApplicationCommandOptionBase | SlashCommandSubcommandBuilder | SlashCommandSubcommandGroupBuilder,\n>(input: unknown, ExpectedInstanceOf: new () => T): asserts input is T {\n\tconst instanceName = ExpectedInstanceOf.name;\n\n\tif (is.nullOrUndefined(input)) {\n\t\tthrow new TypeError(\n\t\t\t`Expected to receive a ${instanceName} builder, got ${input === null ? 'null' : 'undefined'} instead.`,\n\t\t);\n\t}\n\n\tif (is.primitive(input)) {\n\t\tthrow new TypeError(`Expected to receive a ${instanceName} builder, got a primitive (${typeof input}) instead.`);\n\t}\n\n\tif (!(input instanceof ExpectedInstanceOf)) {\n\t\tconst casted = input as Record;\n\n\t\tconst constructorName = is.function_(input) ? input.name : casted.constructor.name;\n\t\tconst stringTag = Reflect.get(casted, Symbol.toStringTag) as string | undefined;\n\n\t\tconst fullResultName = stringTag ? `${constructorName} [${stringTag}]` : constructorName;\n\n\t\tthrow new TypeError(`Expected to receive a ${instanceName} builder, got ${fullResultName} instead.`);\n\t}\n}\n","import type { APIApplicationCommandOption, RESTPostAPIApplicationCommandsJSONBody } from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport {\n\tassertReturnOfBuilder,\n\tvalidateDefaultPermission,\n\tvalidateMaxOptionsLength,\n\tvalidateRequiredParameters,\n} from './Assertions';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription';\nimport { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands';\n\n@mix(SharedSlashCommandOptions, SharedNameAndDescription)\nexport class SlashCommandBuilder {\n\t/**\n\t * The name of this slash command\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this slash command\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The options of this slash command\n\t */\n\tpublic readonly options: ToAPIApplicationCommandOptions[] = [];\n\n\t/**\n\t * Whether the command is enabled by default when the app is added to a guild\n\t *\n\t * @default true\n\t */\n\tpublic readonly defaultPermission: boolean | undefined = undefined;\n\n\t/**\n\t * Returns the final data that should be sent to Discord.\n\t *\n\t * **Note:** Calling this function will validate required properties based on their conditions.\n\t */\n\tpublic toJSON(): RESTPostAPIApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tdescription: this.description,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t\tdefault_permission: this.defaultPermission,\n\t\t};\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * **Note**: If set to `false`, you will have to later `PUT` the permissions for this command.\n\t *\n\t * @param value Whether or not to enable this command by default\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'defaultPermission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds a new subcommand group to this command\n\t *\n\t * @param input A function that returns a subcommand group builder, or an already built builder\n\t */\n\tpublic addSubcommandGroup(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandGroupBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandGroupBuilder) => SlashCommandSubcommandGroupBuilder),\n\t): SlashCommandSubcommandsOnlyBuilder {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandGroupBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandGroupBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds a new subcommand to this command\n\t *\n\t * @param input A function that returns a subcommand builder, or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t): SlashCommandSubcommandsOnlyBuilder {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n}\n\nexport interface SlashCommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {}\n\nexport interface SlashCommandSubcommandsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tPick {}\n\nexport interface SlashCommandOptionsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tSharedSlashCommandOptions,\n\t\tPick {}\n\nexport interface ToAPIApplicationCommandOptions {\n\ttoJSON(): APIApplicationCommandOption;\n}\n","import { APIApplicationCommandBooleanOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandBooleanOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.Boolean as const;\n\n\tpublic toJSON(): APIApplicationCommandBooleanOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { validateDescription, validateName } from '../Assertions';\n\nexport class SharedNameAndDescription {\n\tpublic readonly name!: string;\n\tpublic readonly description!: string;\n\n\t/**\n\t * Sets the name\n\t *\n\t * @param name The name\n\t */\n\tpublic setName(name: string) {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description\n\t *\n\t * @param description The description\n\t */\n\tpublic setDescription(description: string) {\n\t\t// Assert the description matches the conditions\n\t\tvalidateDescription(description);\n\n\t\tReflect.set(this, 'description', description);\n\n\t\treturn this;\n\t}\n}\n","import type { APIApplicationCommandBasicOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { validateRequiredParameters, validateRequired } from '../Assertions';\nimport { SharedNameAndDescription } from './NameAndDescription';\n\nexport abstract class ApplicationCommandOptionBase extends SharedNameAndDescription {\n\tpublic abstract readonly type: ApplicationCommandOptionType;\n\n\tpublic readonly required = false;\n\n\t/**\n\t * Marks the option as required\n\t *\n\t * @param required If this option should be required\n\t */\n\tpublic setRequired(required: boolean) {\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(required);\n\n\t\tReflect.set(this, 'required', required);\n\n\t\treturn this;\n\t}\n\n\tpublic abstract toJSON(): APIApplicationCommandBasicOption;\n\n\tprotected runRequiredValidations() {\n\t\tvalidateRequiredParameters(this.name, this.description, []);\n\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(this.required);\n\t}\n}\n","import { APIApplicationCommandChannelOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionChannelTypesMixin } from '../mixins/ApplicationCommandOptionChannelTypesMixin';\n\n@mix(ApplicationCommandOptionChannelTypesMixin)\nexport class SlashCommandChannelOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Channel as const;\n\n\tpublic toJSON(): APIApplicationCommandChannelOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandChannelOption extends ApplicationCommandOptionChannelTypesMixin {}\n","import { ChannelType } from 'discord-api-types/v9';\nimport { z, ZodLiteral } from 'zod';\n\n// Only allow valid channel types to be used. (This can't be dynamic because const enums are erased at runtime)\nconst allowedChannelTypes = [\n\tChannelType.GuildText,\n\tChannelType.GuildVoice,\n\tChannelType.GuildCategory,\n\tChannelType.GuildNews,\n\tChannelType.GuildStore,\n\tChannelType.GuildNewsThread,\n\tChannelType.GuildPublicThread,\n\tChannelType.GuildPrivateThread,\n\tChannelType.GuildStageVoice,\n] as const;\n\nexport type ApplicationCommandOptionAllowedChannelTypes = typeof allowedChannelTypes[number];\n\nconst channelTypePredicate = z.union(\n\tallowedChannelTypes.map((type) => z.literal(type)) as [\n\t\tZodLiteral,\n\t\tZodLiteral,\n\t\t...ZodLiteral[]\n\t],\n);\n\nexport class ApplicationCommandOptionChannelTypesMixin {\n\tpublic readonly channel_types?: ApplicationCommandOptionAllowedChannelTypes[];\n\n\t/**\n\t * Adds a channel type to this option\n\t *\n\t * @param channelType The type of channel to allow\n\t */\n\tpublic addChannelType(channelType: ApplicationCommandOptionAllowedChannelTypes) {\n\t\tif (this.channel_types === undefined) {\n\t\t\tReflect.set(this, 'channel_types', []);\n\t\t}\n\n\t\tchannelTypePredicate.parse(channelType);\n\t\tthis.channel_types!.push(channelType);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds channel types to this option\n\t *\n\t * @param channelTypes The channel types to add\n\t */\n\tpublic addChannelTypes(channelTypes: ApplicationCommandOptionAllowedChannelTypes[]) {\n\t\tchannelTypes.forEach((channelType) => this.addChannelType(channelType));\n\t\treturn this;\n\t}\n}\n","import { APIApplicationCommandIntegerOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport { z } from 'zod';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\nconst numberValidator = z.number().int().nonnegative();\n\n@mix(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandIntegerOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\tpublic readonly type = ApplicationCommandOptionType.Integer as const;\n\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'maxValue', max);\n\n\t\treturn this;\n\t}\n\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'minValue', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandIntegerOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandIntegerOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","export abstract class ApplicationCommandNumericOptionMinMaxValueMixin {\n\tprotected readonly maxValue?: number;\n\tprotected readonly minValue?: number;\n\n\t/**\n\t * Sets the maximum number value of this option\n\t * @param max The maximum value this option can be\n\t */\n\tpublic abstract setMaxValue(max: number): this;\n\n\t/**\n\t * Sets the minimum number value of this option\n\t * @param min The minimum value this option can be\n\t */\n\tpublic abstract setMinValue(min: number): this;\n}\n","import { APIApplicationCommandOptionChoice, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { z } from 'zod';\nimport { validateMaxChoicesLength } from '../Assertions';\n\nconst stringPredicate = z.string().min(1).max(100);\nconst numberPredicate = z.number().gt(-Infinity).lt(Infinity);\nconst choicesPredicate = z.tuple([stringPredicate, z.union([stringPredicate, numberPredicate])]).array();\nconst booleanPredicate = z.boolean();\n\nexport class ApplicationCommandOptionWithChoicesAndAutocompleteMixin {\n\tpublic readonly choices?: APIApplicationCommandOptionChoice[];\n\tpublic readonly autocomplete?: boolean;\n\n\t// Since this is present and this is a mixin, this is needed\n\tpublic readonly type!: ApplicationCommandOptionType;\n\n\t/**\n\t * Adds a choice for this option\n\t *\n\t * @param name The name of the choice\n\t * @param value The value of the choice\n\t */\n\tpublic addChoice(name: string, value: T): Omit {\n\t\tif (this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tif (this.choices === undefined) {\n\t\t\tReflect.set(this, 'choices', []);\n\t\t}\n\n\t\tvalidateMaxChoicesLength(this.choices!);\n\n\t\t// Validate name\n\t\tstringPredicate.parse(name);\n\n\t\t// Validate the value\n\t\tif (this.type === ApplicationCommandOptionType.String) {\n\t\t\tstringPredicate.parse(value);\n\t\t} else {\n\t\t\tnumberPredicate.parse(value);\n\t\t}\n\n\t\tthis.choices!.push({ name, value });\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds multiple choices for this option\n\t *\n\t * @param choices The choices to add\n\t */\n\tpublic addChoices(choices: [name: string, value: T][]): Omit {\n\t\tif (this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(choices);\n\n\t\tfor (const [label, value] of choices) this.addChoice(label, value);\n\t\treturn this;\n\t}\n\n\tpublic setChoices(\n\t\tchoices: Input,\n\t): Input extends []\n\t\t? this & Pick, 'setAutocomplete'>\n\t\t: Omit {\n\t\tif (choices.length > 0 && this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(choices);\n\n\t\tReflect.set(this, 'choices', []);\n\t\tfor (const [label, value] of choices) this.addChoice(label, value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Marks the option as autocompletable\n\t * @param autocomplete If this option should be autocompletable\n\t */\n\tpublic setAutocomplete(\n\t\tautocomplete: U,\n\t): U extends true\n\t\t? Omit\n\t\t: this & Pick, 'addChoice' | 'addChoices'> {\n\t\t// Assert that you actually passed a boolean\n\t\tbooleanPredicate.parse(autocomplete);\n\n\t\tif (autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tReflect.set(this, 'autocomplete', autocomplete);\n\n\t\treturn this;\n\t}\n}\n","import { APIApplicationCommandMentionableOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandMentionableOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.Mentionable as const;\n\n\tpublic toJSON(): APIApplicationCommandMentionableOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { APIApplicationCommandNumberOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport { z } from 'zod';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\nconst numberValidator = z.number().nonnegative();\n\n@mix(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandNumberOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\tpublic readonly type = ApplicationCommandOptionType.Number as const;\n\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'maxValue', max);\n\n\t\treturn this;\n\t}\n\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'minValue', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandNumberOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandNumberOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","import { APIApplicationCommandRoleOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandRoleOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Role as const;\n\n\tpublic toJSON(): APIApplicationCommandRoleOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { APIApplicationCommandStringOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\n@mix(ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandStringOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.String as const;\n\n\tpublic toJSON(): APIApplicationCommandStringOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandStringOption extends ApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","import { APIApplicationCommandUserOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandUserOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.User as const;\n\n\tpublic toJSON(): APIApplicationCommandUserOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { assertReturnOfBuilder, validateMaxOptionsLength } from '../Assertions';\nimport type { ApplicationCommandOptionBase } from './ApplicationCommandOptionBase';\nimport { SlashCommandBooleanOption } from '../options/boolean';\nimport { SlashCommandChannelOption } from '../options/channel';\nimport { SlashCommandIntegerOption } from '../options/integer';\nimport { SlashCommandMentionableOption } from '../options/mentionable';\nimport { SlashCommandNumberOption } from '../options/number';\nimport { SlashCommandRoleOption } from '../options/role';\nimport { SlashCommandStringOption } from '../options/string';\nimport { SlashCommandUserOption } from '../options/user';\nimport type { ToAPIApplicationCommandOptions } from '../SlashCommandBuilder';\n\nexport class SharedSlashCommandOptions {\n\tpublic readonly options!: ToAPIApplicationCommandOptions[];\n\n\t/**\n\t * Adds a boolean option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addBooleanOption(\n\t\tinput: SlashCommandBooleanOption | ((builder: SlashCommandBooleanOption) => SlashCommandBooleanOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandBooleanOption);\n\t}\n\n\t/**\n\t * Adds a user option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addUserOption(input: SlashCommandUserOption | ((builder: SlashCommandUserOption) => SlashCommandUserOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandUserOption);\n\t}\n\n\t/**\n\t * Adds a channel option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addChannelOption(\n\t\tinput: SlashCommandChannelOption | ((builder: SlashCommandChannelOption) => SlashCommandChannelOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandChannelOption);\n\t}\n\n\t/**\n\t * Adds a role option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addRoleOption(input: SlashCommandRoleOption | ((builder: SlashCommandRoleOption) => SlashCommandRoleOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandRoleOption);\n\t}\n\n\t/**\n\t * Adds a mentionable option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addMentionableOption(\n\t\tinput: SlashCommandMentionableOption | ((builder: SlashCommandMentionableOption) => SlashCommandMentionableOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandMentionableOption);\n\t}\n\n\t/**\n\t * Adds a string option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addStringOption(\n\t\tinput:\n\t\t\t| SlashCommandStringOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandStringOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandStringOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandStringOption);\n\t}\n\n\t/**\n\t * Adds an integer option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addIntegerOption(\n\t\tinput:\n\t\t\t| SlashCommandIntegerOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandIntegerOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandIntegerOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandIntegerOption);\n\t}\n\n\t/**\n\t * Adds a number option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addNumberOption(\n\t\tinput:\n\t\t\t| SlashCommandNumberOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandNumberOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandNumberOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandNumberOption);\n\t}\n\n\tprivate _sharedAddOptionMethod(\n\t\tinput:\n\t\t\t| T\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((builder: T) => T | Omit | Omit),\n\t\tInstance: new () => T,\n\t): ShouldOmitSubcommandFunctions extends true ? Omit : this {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new Instance()) : input;\n\n\t\tassertReturnOfBuilder(result, Instance);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n}\n","import {\n\tAPIApplicationCommandSubcommandGroupOption,\n\tAPIApplicationCommandSubcommandOption,\n\tApplicationCommandOptionType,\n} from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport { assertReturnOfBuilder, validateMaxOptionsLength, validateRequiredParameters } from './Assertions';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder';\n\n/**\n * Represents a folder for subcommands\n *\n * For more information, go to https://discord.com/developers/docs/interactions/slash-commands#subcommands-and-subcommand-groups\n */\n@mix(SharedNameAndDescription)\nexport class SlashCommandSubcommandGroupBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand group\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand group\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The subcommands part of this subcommand group\n\t */\n\tpublic readonly options: SlashCommandSubcommandBuilder[] = [];\n\n\t/**\n\t * Adds a new subcommand to this group\n\t *\n\t * @param input A function that returns a subcommand builder, or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t) {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandSubcommandGroupOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.SubcommandGroup,\n\t\t\tname: this.name,\n\t\t\tdescription: this.description,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandGroupBuilder extends SharedNameAndDescription {}\n\n/**\n * Represents a subcommand\n *\n * For more information, go to https://discord.com/developers/docs/interactions/slash-commands#subcommands-and-subcommand-groups\n */\n@mix(SharedNameAndDescription, SharedSlashCommandOptions)\nexport class SlashCommandSubcommandBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The options of this subcommand\n\t */\n\tpublic readonly options: ApplicationCommandOptionBase[] = [];\n\n\tpublic toJSON(): APIApplicationCommandSubcommandOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.Subcommand,\n\t\t\tname: this.name,\n\t\t\tdescription: this.description,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {}\n","import { z } from 'zod';\nimport { ApplicationCommandType } from 'discord-api-types/v9';\nimport type { ContextMenuCommandType } from './ContextMenuCommandBuilder';\n\nexport function validateRequiredParameters(name: string, type: number) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert type is valid\n\tvalidateType(type);\n}\n\nconst namePredicate = z\n\t.string()\n\t.min(1)\n\t.max(32)\n\t.regex(/^( *[\\p{L}\\p{N}_-]+ *)+$/u);\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nconst typePredicate = z.union([z.literal(ApplicationCommandType.User), z.literal(ApplicationCommandType.Message)]);\n\nexport function validateType(type: unknown): asserts type is ContextMenuCommandType {\n\ttypePredicate.parse(type);\n}\n\nconst booleanPredicate = z.boolean();\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n","import { validateRequiredParameters, validateName, validateType, validateDefaultPermission } from './Assertions';\nimport type { ApplicationCommandType, RESTPostAPIApplicationCommandsJSONBody } from 'discord-api-types/v9';\n\nexport class ContextMenuCommandBuilder {\n\t/**\n\t * The name of this context menu command\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The type of this context menu command\n\t */\n\tpublic readonly type: ContextMenuCommandType = undefined!;\n\n\t/**\n\t * Whether the command is enabled by default when the app is added to a guild\n\t *\n\t * @default true\n\t */\n\tpublic readonly defaultPermission: boolean | undefined = undefined;\n\n\t/**\n\t * Sets the name\n\t *\n\t * @param name The name\n\t */\n\tpublic setName(name: string) {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the type\n\t *\n\t * @param type The type\n\t */\n\tpublic setType(type: ContextMenuCommandType) {\n\t\t// Assert the type is valid\n\t\tvalidateType(type);\n\n\t\tReflect.set(this, 'type', type);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * **Note**: If set to `false`, you will have to later `PUT` the permissions for this command.\n\t *\n\t * @param value Whether or not to enable this command by default\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'defaultPermission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns the final data that should be sent to Discord.\n\t *\n\t * **Note:** Calling this function will validate required properties based on their conditions.\n\t */\n\tpublic toJSON(): RESTPostAPIApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.type);\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\ttype: this.type,\n\t\t\tdefault_permission: this.defaultPermission,\n\t\t};\n\t}\n}\n\nexport type ContextMenuCommandType = ApplicationCommandType.User | ApplicationCommandType.Message;\n"],"mappings":"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","names":[]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts","../src/messages/embed/Assertions.ts","../src/util/validation.ts","../src/util/normalizeArray.ts","../src/messages/embed/Embed.ts","../src/messages/formatters.ts","../src/components/Assertions.ts","../src/components/selectMenu/SelectMenuOption.ts","../src/components/ActionRow.ts","../src/components/Component.ts","../src/components/Components.ts","../src/components/button/Button.ts","../src/components/selectMenu/SelectMenu.ts","../src/components/textInput/TextInput.ts","../src/components/textInput/Assertions.ts","../src/util/jsonEncodable.ts","../src/interactions/modals/Assertions.ts","../src/interactions/modals/Modal.ts","../src/interactions/slashCommands/Assertions.ts","../src/interactions/slashCommands/SlashCommandBuilder.ts","../src/interactions/slashCommands/SlashCommandSubcommands.ts","../src/interactions/slashCommands/mixins/NameAndDescription.ts","../src/interactions/slashCommands/options/attachment.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts","../src/interactions/slashCommands/options/boolean.ts","../src/interactions/slashCommands/options/channel.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts","../src/interactions/slashCommands/options/integer.ts","../src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.ts","../src/interactions/slashCommands/options/mentionable.ts","../src/interactions/slashCommands/options/number.ts","../src/interactions/slashCommands/options/role.ts","../src/interactions/slashCommands/options/string.ts","../src/interactions/slashCommands/options/user.ts","../src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts","../src/interactions/contextMenuCommands/Assertions.ts","../src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts","../src/util/equatable.ts","../src/util/componentUtil.ts"],"sourcesContent":["export * as EmbedAssertions from './messages/embed/Assertions';\nexport * from './messages/embed/Embed';\nexport * from './messages/formatters';\n\nexport * as ComponentAssertions from './components/Assertions';\nexport * from './components/ActionRow';\nexport * from './components/button/Button';\nexport * from './components/Component';\nexport * from './components/Components';\nexport * from './components/textInput/TextInput';\nexport * as TextInputAssertions from './components/textInput/Assertions';\nexport * from './interactions/modals/Modal';\nexport * as ModalAssertions from './interactions/modals/Assertions';\nexport * from './components/selectMenu/SelectMenu';\nexport * from './components/selectMenu/SelectMenuOption';\n\nexport * as SlashCommandAssertions from './interactions/slashCommands/Assertions';\nexport * from './interactions/slashCommands/SlashCommandBuilder';\nexport * from './interactions/slashCommands/SlashCommandSubcommands';\nexport * from './interactions/slashCommands/options/boolean';\nexport * from './interactions/slashCommands/options/channel';\nexport * from './interactions/slashCommands/options/integer';\nexport * from './interactions/slashCommands/options/mentionable';\nexport * from './interactions/slashCommands/options/number';\nexport * from './interactions/slashCommands/options/role';\nexport * from './interactions/slashCommands/options/attachment';\nexport * from './interactions/slashCommands/options/string';\nexport * from './interactions/slashCommands/options/user';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionBase';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\nexport * from './interactions/slashCommands/mixins/NameAndDescription';\nexport * from './interactions/slashCommands/mixins/SharedSlashCommandOptions';\n\nexport * as ContextMenuCommandAssertions from './interactions/contextMenuCommands/Assertions';\nexport * from './interactions/contextMenuCommands/ContextMenuCommandBuilder';\n\nexport * from './util/jsonEncodable';\nexport * from './util/equatable';\nexport * from './util/componentUtil';\nexport * from './util/normalizeArray';\nexport * from './util/validation';\n","import { s } from '@sapphire/shapeshift';\nimport type { APIEmbedField } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation';\n\nexport const fieldNamePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(256)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const fieldValuePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(1024)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const fieldInlinePredicate = s.boolean.optional;\n\nexport const embedFieldPredicate = s\n\t.object({\n\t\tname: fieldNamePredicate,\n\t\tvalue: fieldValuePredicate,\n\t\tinline: fieldInlinePredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const embedFieldsArrayPredicate = embedFieldPredicate.array.setValidationEnabled(isValidationEnabled);\n\nexport const fieldLengthPredicate = s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\n\nexport function validateFieldLength(amountAdding: number, fields?: APIEmbedField[]): void {\n\tfieldLengthPredicate.parse((fields?.length ?? 0) + amountAdding);\n}\n\nexport const authorNamePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const imageURLPredicate = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:', 'attachment:'],\n\t})\n\t.nullish.setValidationEnabled(isValidationEnabled);\n\nexport const urlPredicate = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:'],\n\t})\n\t.nullish.setValidationEnabled(isValidationEnabled);\n\nexport const embedAuthorPredicate = s\n\t.object({\n\t\tname: authorNamePredicate,\n\t\ticonURL: imageURLPredicate,\n\t\turl: urlPredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const RGBPredicate = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(255)\n\t.setValidationEnabled(isValidationEnabled);\nexport const colorPredicate = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(0xffffff)\n\t.or(s.tuple([RGBPredicate, RGBPredicate, RGBPredicate]))\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const descriptionPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(4096)\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const footerTextPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(2048)\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const embedFooterPredicate = s\n\t.object({\n\t\ttext: footerTextPredicate,\n\t\ticonURL: imageURLPredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const timestampPredicate = s.union(s.number, s.date).nullable.setValidationEnabled(isValidationEnabled);\n\nexport const titlePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);\n","let validate = true;\n\nexport const enableValidators = () => (validate = true);\nexport const disableValidators = () => (validate = false);\nexport const isValidationEnabled = () => validate;\n","export function normalizeArray(arr: RestOrArray): T[] {\n\tif (Array.isArray(arr[0])) return arr[0];\n\treturn arr as T[];\n}\n\nexport type RestOrArray = T[] | [T[]];\n","import type { APIEmbed, APIEmbedAuthor, APIEmbedField, APIEmbedFooter, APIEmbedImage } from 'discord-api-types/v10';\nimport {\n\tcolorPredicate,\n\tdescriptionPredicate,\n\tembedAuthorPredicate,\n\tembedFieldsArrayPredicate,\n\tembedFooterPredicate,\n\timageURLPredicate,\n\ttimestampPredicate,\n\ttitlePredicate,\n\turlPredicate,\n\tvalidateFieldLength,\n} from './Assertions';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray';\n\nexport type RGBTuple = [red: number, green: number, blue: number];\n\nexport interface IconData {\n\t/**\n\t * The URL of the icon\n\t */\n\ticonURL?: string;\n\t/**\n\t * The proxy URL of the icon\n\t */\n\tproxyIconURL?: string;\n}\n\nexport type EmbedAuthorData = Omit & IconData;\n\nexport type EmbedAuthorOptions = Omit;\n\nexport type EmbedFooterData = Omit & IconData;\n\nexport type EmbedFooterOptions = Omit;\n\nexport interface EmbedImageData extends Omit {\n\t/**\n\t * The proxy URL for the image\n\t */\n\tproxyURL?: string;\n}\n/**\n * Represents a embed in a message (image/video preview, rich embed, etc.)\n */\nexport class EmbedBuilder {\n\tpublic readonly data: APIEmbed;\n\n\tpublic constructor(data: APIEmbed = {}) {\n\t\tthis.data = { ...data };\n\t\tif (data.timestamp) this.data.timestamp = new Date(data.timestamp).toISOString();\n\t}\n\n\t/**\n\t * Adds fields to the embed (max 25)\n\t *\n\t * @param fields The fields to add\n\t */\n\tpublic addFields(...fields: RestOrArray): this {\n\t\tfields = normalizeArray(fields);\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(fields.length, this.data.fields);\n\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\n\t\tif (this.data.fields) this.data.fields.push(...fields);\n\t\telse this.data.fields = fields;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts fields in the embed (max 25)\n\t *\n\t * @param index The index to start at\n\t * @param deleteCount The number of fields to remove\n\t * @param fields The replacing field objects\n\t */\n\tpublic spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this {\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(fields.length - deleteCount, this.data.fields);\n\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\t\tif (this.data.fields) this.data.fields.splice(index, deleteCount, ...fields);\n\t\telse this.data.fields = fields;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the embed's fields (max 25).\n\t * @param fields The fields to set\n\t */\n\tpublic setFields(...fields: RestOrArray) {\n\t\tthis.spliceFields(0, this.data.fields?.length ?? 0, ...normalizeArray(fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the author of this embed\n\t *\n\t * @param options The options for the author\n\t */\n\n\tpublic setAuthor(options: EmbedAuthorOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.data.author = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Data assertions\n\t\tembedAuthorPredicate.parse(options);\n\n\t\tthis.data.author = { name: options.name, url: options.url, icon_url: options.iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the color of this embed\n\t *\n\t * @param color The color of the embed\n\t */\n\tpublic setColor(color: number | RGBTuple | null): this {\n\t\t// Data assertions\n\t\tcolorPredicate.parse(color);\n\n\t\tif (Array.isArray(color)) {\n\t\t\tconst [red, green, blue] = color;\n\t\t\tthis.data.color = (red << 16) + (green << 8) + blue;\n\t\t\treturn this;\n\t\t}\n\t\tthis.data.color = color ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this embed\n\t *\n\t * @param description The description\n\t */\n\tpublic setDescription(description: string | null): this {\n\t\t// Data assertions\n\t\tdescriptionPredicate.parse(description);\n\n\t\tthis.data.description = description ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the footer of this embed\n\t *\n\t * @param options The options for the footer\n\t */\n\tpublic setFooter(options: EmbedFooterOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.data.footer = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Data assertions\n\t\tembedFooterPredicate.parse(options);\n\n\t\tthis.data.footer = { text: options.text, icon_url: options.iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the image of this embed\n\t *\n\t * @param url The URL of the image\n\t */\n\tpublic setImage(url: string | null): this {\n\t\t// Data assertions\n\t\timageURLPredicate.parse(url);\n\n\t\tthis.data.image = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the thumbnail of this embed\n\t *\n\t * @param url The URL of the thumbnail\n\t */\n\tpublic setThumbnail(url: string | null): this {\n\t\t// Data assertions\n\t\timageURLPredicate.parse(url);\n\n\t\tthis.data.thumbnail = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the timestamp of this embed\n\t *\n\t * @param timestamp The timestamp or date\n\t */\n\tpublic setTimestamp(timestamp: number | Date | null = Date.now()): this {\n\t\t// Data assertions\n\t\ttimestampPredicate.parse(timestamp);\n\n\t\tthis.data.timestamp = timestamp ? new Date(timestamp).toISOString() : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the title of this embed\n\t *\n\t * @param title The title\n\t */\n\tpublic setTitle(title: string | null): this {\n\t\t// Data assertions\n\t\ttitlePredicate.parse(title);\n\n\t\tthis.data.title = title ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL of this embed\n\t *\n\t * @param url The URL\n\t */\n\tpublic setURL(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.data.url = url ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Transforms the embed to a plain object\n\t */\n\tpublic toJSON(): APIEmbed {\n\t\treturn { ...this.data };\n\t}\n}\n","import type { URL } from 'url';\nimport type { Snowflake } from 'discord-api-types/globals';\n\n/**\n * Wraps the content inside a codeblock with no language\n *\n * @param content - The content to wrap\n */\nexport function codeBlock(content: C): `\\`\\`\\`\\n${C}\\`\\`\\``;\n\n/**\n * Wraps the content inside a codeblock with the specified language\n *\n * @param language - The language for the codeblock\n * @param content - The content to wrap\n */\nexport function codeBlock(language: L, content: C): `\\`\\`\\`${L}\\n${C}\\`\\`\\``;\nexport function codeBlock(language: string, content?: string): string {\n\treturn typeof content === 'undefined' ? `\\`\\`\\`\\n${language}\\`\\`\\`` : `\\`\\`\\`${language}\\n${content}\\`\\`\\``;\n}\n\n/**\n * Wraps the content inside \\`backticks\\`, which formats it as inline code\n *\n * @param content - The content to wrap\n */\nexport function inlineCode(content: C): `\\`${C}\\`` {\n\treturn `\\`${content}\\``;\n}\n\n/**\n * Formats the content into italic text\n *\n * @param content - The content to wrap\n */\nexport function italic(content: C): `_${C}_` {\n\treturn `_${content}_`;\n}\n\n/**\n * Formats the content into bold text\n *\n * @param content - The content to wrap\n */\nexport function bold(content: C): `**${C}**` {\n\treturn `**${content}**`;\n}\n\n/**\n * Formats the content into underscored text\n *\n * @param content - The content to wrap\n */\nexport function underscore(content: C): `__${C}__` {\n\treturn `__${content}__`;\n}\n\n/**\n * Formats the content into strike-through text\n *\n * @param content - The content to wrap\n */\nexport function strikethrough(content: C): `~~${C}~~` {\n\treturn `~~${content}~~`;\n}\n\n/**\n * Formats the content into a quote. This needs to be at the start of the line for Discord to format it\n *\n * @param content - The content to wrap\n */\nexport function quote(content: C): `> ${C}` {\n\treturn `> ${content}`;\n}\n\n/**\n * Formats the content into a block quote. This needs to be at the start of the line for Discord to format it\n *\n * @param content - The content to wrap\n */\nexport function blockQuote(content: C): `>>> ${C}` {\n\treturn `>>> ${content}`;\n}\n\n/**\n * Wraps the URL into `<>`, which stops it from embedding\n *\n * @param url - The URL to wrap\n */\nexport function hideLinkEmbed(url: C): `<${C}>`;\n\n/**\n * Wraps the URL into `<>`, which stops it from embedding\n *\n * @param url - The URL to wrap\n */\nexport function hideLinkEmbed(url: URL): `<${string}>`;\nexport function hideLinkEmbed(url: string | URL) {\n\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\treturn `<${url}>`;\n}\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content - The content to display\n * @param url - The URL the content links to\n */\nexport function hyperlink(content: C, url: URL): `[${C}](${string})`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content - The content to display\n * @param url - The URL the content links to\n */\nexport function hyperlink(content: C, url: U): `[${C}](${U})`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content - The content to display\n * @param url - The URL the content links to\n * @param title - The title shown when hovering on the masked link\n */\nexport function hyperlink(\n\tcontent: C,\n\turl: URL,\n\ttitle: T,\n): `[${C}](${string} \"${T}\")`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content - The content to display\n * @param url - The URL the content links to\n * @param title - The title shown when hovering on the masked link\n */\nexport function hyperlink(\n\tcontent: C,\n\turl: U,\n\ttitle: T,\n): `[${C}](${U} \"${T}\")`;\nexport function hyperlink(content: string, url: string | URL, title?: string) {\n\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\treturn title ? `[${content}](${url} \"${title}\")` : `[${content}](${url})`;\n}\n\n/**\n * Wraps the content inside spoiler (hidden text)\n *\n * @param content - The content to wrap\n */\nexport function spoiler(content: C): `||${C}||` {\n\treturn `||${content}||`;\n}\n\n/**\n * Formats a user ID into a user mention\n *\n * @param userId - The user ID to format\n */\nexport function userMention(userId: C): `<@${C}>` {\n\treturn `<@${userId}>`;\n}\n\n/**\n * Formats a channel ID into a channel mention\n *\n * @param channelId - The channel ID to format\n */\nexport function channelMention(channelId: C): `<#${C}>` {\n\treturn `<#${channelId}>`;\n}\n\n/**\n * Formats a role ID into a role mention\n *\n * @param roleId - The role ID to format\n */\nexport function roleMention(roleId: C): `<@&${C}>` {\n\treturn `<@&${roleId}>`;\n}\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId - The emoji ID to format\n */\nexport function formatEmoji(emojiId: C, animated?: false): `<:_:${C}>`;\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId - The emoji ID to format\n * @param animated - Whether the emoji is animated or not. Defaults to `false`\n */\nexport function formatEmoji(emojiId: C, animated?: true): ``;\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId - The emoji ID to format\n * @param animated - Whether the emoji is animated or not. Defaults to `false`\n */\nexport function formatEmoji(emojiId: C, animated = false): `` | `<:_:${C}>` {\n\treturn `<${animated ? 'a' : ''}:_:${emojiId}>`;\n}\n\n/**\n * Formats a date into a short date-time string\n *\n * @param date - The date to format, defaults to the current time\n */\nexport function time(date?: Date): ``;\n\n/**\n * Formats a date given a format style\n *\n * @param date - The date to format\n * @param style - The style to use\n */\nexport function time(date: Date, style: S): ``;\n\n/**\n * Formats the given timestamp into a short date-time string\n *\n * @param seconds - The time to format, represents an UNIX timestamp in seconds\n */\nexport function time(seconds: C): ``;\n\n/**\n * Formats the given timestamp into a short date-time string\n *\n * @param seconds - The time to format, represents an UNIX timestamp in seconds\n * @param style - The style to use\n */\nexport function time(seconds: C, style: S): ``;\nexport function time(timeOrSeconds?: number | Date, style?: TimestampStylesString): string {\n\tif (typeof timeOrSeconds !== 'number') {\n\t\ttimeOrSeconds = Math.floor((timeOrSeconds?.getTime() ?? Date.now()) / 1000);\n\t}\n\n\treturn typeof style === 'string' ? `` : ``;\n}\n\n/**\n * The [message formatting timestamp styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord\n */\nexport const TimestampStyles = {\n\t/**\n\t * Short time format, consisting of hours and minutes, e.g. 16:20\n\t */\n\tShortTime: 't',\n\n\t/**\n\t * Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30\n\t */\n\tLongTime: 'T',\n\n\t/**\n\t * Short date format, consisting of day, month, and year, e.g. 20/04/2021\n\t */\n\tShortDate: 'd',\n\n\t/**\n\t * Long date format, consisting of day, month, and year, e.g. 20 April 2021\n\t */\n\tLongDate: 'D',\n\n\t/**\n\t * Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20\n\t */\n\tShortDateTime: 'f',\n\n\t/**\n\t * Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20\n\t */\n\tLongDateTime: 'F',\n\n\t/**\n\t * Relative time format, consisting of a relative duration format, e.g. 2 months ago\n\t */\n\tRelativeTime: 'R',\n} as const;\n\n/**\n * The possible values, see {@link TimestampStyles} for more information\n */\nexport type TimestampStylesString = typeof TimestampStyles[keyof typeof TimestampStyles];\n\n/**\n * An enum with all the available faces from Discord's native slash commands\n */\nexport enum Faces {\n\t/**\n\t * ¯\\\\_(ツ)\\\\_/¯\n\t */\n\tShrug = '¯\\\\_(ツ)\\\\_/¯',\n\n\t/**\n\t * (╯°□°)╯︵ ┻━┻\n\t */\n\tTableflip = '(╯°□°)╯︵ ┻━┻',\n\n\t/**\n\t * ┬─┬ ノ( ゜-゜ノ)\n\t */\n\tUnflip = '┬─┬ ノ( ゜-゜ノ)',\n}\n","import { s } from '@sapphire/shapeshift';\nimport { APIMessageComponentEmoji, ButtonStyle } from 'discord-api-types/v10';\nimport { SelectMenuOptionBuilder } from './selectMenu/SelectMenuOption';\nimport { isValidationEnabled } from '../util/validation';\n\nexport const customIdValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const emojiValidator = s\n\t.object({\n\t\tid: s.string,\n\t\tname: s.string,\n\t\tanimated: s.boolean,\n\t})\n\t.partial.strict.setValidationEnabled(isValidationEnabled);\n\nexport const disabledValidator = s.boolean;\n\nexport const buttonLabelValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(80)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const buttonStyleValidator = s.nativeEnum(ButtonStyle);\n\nexport const placeholderValidator = s.string.lengthLessThanOrEqual(150).setValidationEnabled(isValidationEnabled);\nexport const minMaxValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(25)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const labelValueDescriptionValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\nexport const optionValidator = s\n\t.union(\n\t\ts.object({\n\t\t\tlabel: labelValueDescriptionValidator,\n\t\t\tvalue: labelValueDescriptionValidator,\n\t\t\tdescription: labelValueDescriptionValidator.optional,\n\t\t\temoji: emojiValidator.optional,\n\t\t\tdefault: s.boolean.optional,\n\t\t}),\n\t\ts.instance(SelectMenuOptionBuilder),\n\t)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const optionsValidator = optionValidator.array\n\t.lengthGreaterThanOrEqual(0)\n\t.setValidationEnabled(isValidationEnabled);\nexport const optionsLengthValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(25)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredSelectMenuParameters(options: SelectMenuOptionBuilder[], customId?: string) {\n\tcustomIdValidator.parse(customId);\n\toptionsValidator.parse(options);\n}\n\nexport const defaultValidator = s.boolean;\n\nexport function validateRequiredSelectMenuOptionParameters(label?: string, value?: string) {\n\tlabelValueDescriptionValidator.parse(label);\n\tlabelValueDescriptionValidator.parse(value);\n}\n\nexport const urlValidator = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:', 'discord:'],\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredButtonParameters(\n\tstyle?: ButtonStyle,\n\tlabel?: string,\n\temoji?: APIMessageComponentEmoji,\n\tcustomId?: string,\n\turl?: string,\n) {\n\tif (url && customId) {\n\t\tthrow new RangeError('URL and custom id are mutually exclusive');\n\t}\n\n\tif (!label && !emoji) {\n\t\tthrow new RangeError('Buttons must have a label and/or an emoji');\n\t}\n\n\tif (style === ButtonStyle.Link) {\n\t\tif (!url) {\n\t\t\tthrow new RangeError('Link buttons must have a url');\n\t\t}\n\t} else if (url) {\n\t\tthrow new RangeError('Non-link buttons cannot have a url');\n\t}\n}\n","import type { APIMessageComponentEmoji, APISelectMenuOption } from 'discord-api-types/v10';\n\nimport {\n\tdefaultValidator,\n\temojiValidator,\n\tlabelValueDescriptionValidator,\n\tvalidateRequiredSelectMenuOptionParameters,\n} from '../Assertions';\n\n/**\n * Represents a option within a select menu component\n */\nexport class SelectMenuOptionBuilder {\n\tpublic constructor(public data: Partial = {}) {}\n\n\t/**\n\t * Sets the label of this option\n\t *\n\t * @param label - The label to show on this option\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = labelValueDescriptionValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the value of this option\n\t *\n\t * @param value - The value of this option\n\t */\n\tpublic setValue(value: string) {\n\t\tthis.data.value = labelValueDescriptionValidator.parse(value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this option\n\t *\n\t * @param description - The description of this option\n\t */\n\tpublic setDescription(description: string) {\n\t\tthis.data.description = labelValueDescriptionValidator.parse(description);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this option is selected by default\n\t *\n\t * @param isDefault - Whether this option is selected by default\n\t */\n\tpublic setDefault(isDefault = true) {\n\t\tthis.data.default = defaultValidator.parse(isDefault);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the emoji to display on this option\n\t *\n\t * @param emoji - The emoji to display on this option\n\t */\n\tpublic setEmoji(emoji: APIMessageComponentEmoji) {\n\t\tthis.data.emoji = emojiValidator.parse(emoji);\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APISelectMenuOption {\n\t\tvalidateRequiredSelectMenuOptionParameters(this.data.label, this.data.value);\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APISelectMenuOption;\n\t}\n}\n","import {\n\ttype APIActionRowComponent,\n\tComponentType,\n\tAPIMessageActionRowComponent,\n\tAPIModalActionRowComponent,\n\tAPIActionRowComponentTypes,\n} from 'discord-api-types/v10';\nimport { ComponentBuilder } from './Component';\nimport { createComponentBuilder } from './Components';\nimport type { ButtonBuilder } from './button/Button';\nimport type { SelectMenuBuilder } from './selectMenu/SelectMenu';\nimport type { TextInputBuilder } from './textInput/TextInput';\nimport { normalizeArray, type RestOrArray } from '../util/normalizeArray';\n\nexport type MessageComponentBuilder =\n\t| MessageActionRowComponentBuilder\n\t| ActionRowBuilder;\nexport type ModalComponentBuilder = ModalActionRowComponentBuilder | ActionRowBuilder;\nexport type MessageActionRowComponentBuilder = ButtonBuilder | SelectMenuBuilder;\nexport type ModalActionRowComponentBuilder = TextInputBuilder;\nexport type AnyComponentBuilder = MessageActionRowComponentBuilder | ModalActionRowComponentBuilder;\n\n/**\n * Represents an action row component\n */\nexport class ActionRowBuilder extends ComponentBuilder<\n\tAPIActionRowComponent\n> {\n\t/**\n\t * The components within this action row\n\t */\n\tpublic readonly components: T[];\n\n\tpublic constructor({ components, ...data }: Partial> = {}) {\n\t\tsuper({ type: ComponentType.ActionRow, ...data });\n\t\tthis.components = (components?.map((c) => createComponentBuilder(c)) ?? []) as T[];\n\t}\n\n\t/**\n\t * Adds components to this action row.\n\t *\n\t * @param components - The components to add to this action row.\n\t */\n\tpublic addComponents(...components: RestOrArray) {\n\t\tthis.components.push(...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the components in this action row\n\t *\n\t * @param components - The components to set this row to\n\t */\n\tpublic setComponents(...components: RestOrArray) {\n\t\tthis.components.splice(0, this.components.length, ...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIActionRowComponent> {\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t} as APIActionRowComponent>;\n\t}\n}\n","import type {\n\tAPIActionRowComponent,\n\tAPIActionRowComponentTypes,\n\tAPIBaseComponent,\n\tComponentType,\n} from 'discord-api-types/v10';\nimport type { JSONEncodable } from '../util/jsonEncodable';\n\nexport type AnyAPIActionRowComponent = APIActionRowComponentTypes | APIActionRowComponent;\n\n/**\n * Represents a discord component\n */\nexport abstract class ComponentBuilder<\n\tDataType extends Partial> = APIBaseComponent,\n> implements JSONEncodable\n{\n\t/**\n\t * The API data associated with this component\n\t */\n\tpublic readonly data: Partial;\n\n\tpublic abstract toJSON(): AnyAPIActionRowComponent;\n\n\tpublic constructor(data: Partial) {\n\t\tthis.data = data;\n\t}\n}\n","import { APIMessageComponent, APIModalComponent, ComponentType } from 'discord-api-types/v10';\nimport {\n\tActionRowBuilder,\n\ttype AnyComponentBuilder,\n\ttype MessageComponentBuilder,\n\ttype ModalComponentBuilder,\n} from './ActionRow';\nimport { ComponentBuilder } from './Component';\nimport { ButtonBuilder } from './button/Button';\nimport { SelectMenuBuilder } from './selectMenu/SelectMenu';\nimport { TextInputBuilder } from './textInput/TextInput';\n\nexport interface MappedComponentTypes {\n\t[ComponentType.ActionRow]: ActionRowBuilder;\n\t[ComponentType.Button]: ButtonBuilder;\n\t[ComponentType.SelectMenu]: SelectMenuBuilder;\n\t[ComponentType.TextInput]: TextInputBuilder;\n}\n\n/**\n * Factory for creating components from API data\n *\n * @param data - The api data to transform to a component class\n */\nexport function createComponentBuilder(\n\tdata: (APIMessageComponent | APIModalComponent) & { type: T },\n): MappedComponentTypes[T];\nexport function createComponentBuilder(data: C): C;\nexport function createComponentBuilder(\n\tdata: APIMessageComponent | APIModalComponent | MessageComponentBuilder,\n): ComponentBuilder {\n\tif (data instanceof ComponentBuilder) {\n\t\treturn data;\n\t}\n\n\tswitch (data.type) {\n\t\tcase ComponentType.ActionRow:\n\t\t\treturn new ActionRowBuilder(data);\n\t\tcase ComponentType.Button:\n\t\t\treturn new ButtonBuilder(data);\n\t\tcase ComponentType.SelectMenu:\n\t\t\treturn new SelectMenuBuilder(data);\n\t\tcase ComponentType.TextInput:\n\t\t\treturn new TextInputBuilder(data);\n\t\tdefault:\n\t\t\t// @ts-expect-error\n\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\tthrow new Error(`Cannot properly serialize component type: ${data.type}`);\n\t}\n}\n","import {\n\tComponentType,\n\tButtonStyle,\n\ttype APIMessageComponentEmoji,\n\ttype APIButtonComponent,\n\ttype APIButtonComponentWithURL,\n\ttype APIButtonComponentWithCustomId,\n} from 'discord-api-types/v10';\nimport {\n\tbuttonLabelValidator,\n\tbuttonStyleValidator,\n\tcustomIdValidator,\n\tdisabledValidator,\n\temojiValidator,\n\turlValidator,\n\tvalidateRequiredButtonParameters,\n} from '../Assertions';\nimport { ComponentBuilder } from '../Component';\n\n/**\n * Represents a button component\n */\nexport class ButtonBuilder extends ComponentBuilder {\n\tpublic constructor(data?: Partial) {\n\t\tsuper({ type: ComponentType.Button, ...data });\n\t}\n\n\t/**\n\t * Sets the style of this button\n\t *\n\t * @param style - The style of the button\n\t */\n\tpublic setStyle(style: ButtonStyle) {\n\t\tthis.data.style = buttonStyleValidator.parse(style);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL for this button\n\t *\n\t * @param url - The URL to open when this button is clicked\n\t */\n\tpublic setURL(url: string) {\n\t\t(this.data as APIButtonComponentWithURL).url = urlValidator.parse(url);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id for this button\n\t *\n\t * @param customId - The custom id to use for this button\n\t */\n\tpublic setCustomId(customId: string) {\n\t\t(this.data as APIButtonComponentWithCustomId).custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the emoji to display on this button\n\t *\n\t * @param emoji - The emoji to display on this button\n\t */\n\tpublic setEmoji(emoji: APIMessageComponentEmoji) {\n\t\tthis.data.emoji = emojiValidator.parse(emoji);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this button is disabled\n\t *\n\t * @param disabled - Whether to disable this button\n\t */\n\tpublic setDisabled(disabled = true) {\n\t\tthis.data.disabled = disabledValidator.parse(disabled);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the label for this button\n\t *\n\t * @param label - The label to display on this button\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = buttonLabelValidator.parse(label);\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIButtonComponent {\n\t\tvalidateRequiredButtonParameters(\n\t\t\tthis.data.style,\n\t\t\tthis.data.label,\n\t\t\tthis.data.emoji,\n\t\t\t(this.data as APIButtonComponentWithCustomId).custom_id,\n\t\t\t(this.data as APIButtonComponentWithURL).url,\n\t\t);\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APIButtonComponent;\n\t}\n}\n","import { APISelectMenuOption, ComponentType, type APISelectMenuComponent } from 'discord-api-types/v10';\nimport { SelectMenuOptionBuilder } from './SelectMenuOption';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray';\nimport {\n\tcustomIdValidator,\n\tdisabledValidator,\n\tminMaxValidator,\n\toptionsLengthValidator,\n\toptionValidator,\n\tplaceholderValidator,\n\tvalidateRequiredSelectMenuParameters,\n} from '../Assertions';\nimport { ComponentBuilder } from '../Component';\n\n/**\n * Represents a select menu component\n */\nexport class SelectMenuBuilder extends ComponentBuilder {\n\t/**\n\t * The options within this select menu\n\t */\n\tpublic readonly options: SelectMenuOptionBuilder[];\n\n\tpublic constructor(data?: Partial) {\n\t\tconst { options, ...initData } = data ?? {};\n\t\tsuper({ type: ComponentType.SelectMenu, ...initData });\n\t\tthis.options = options?.map((o) => new SelectMenuOptionBuilder(o)) ?? [];\n\t}\n\n\t/**\n\t * Sets the placeholder for this select menu\n\t *\n\t * @param placeholder - The placeholder to use for this select menu\n\t */\n\tpublic setPlaceholder(placeholder: string) {\n\t\tthis.data.placeholder = placeholderValidator.parse(placeholder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum values that must be selected in the select menu\n\t *\n\t * @param minValues - The minimum values that must be selected\n\t */\n\tpublic setMinValues(minValues: number) {\n\t\tthis.data.min_values = minMaxValidator.parse(minValues);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the maximum values that must be selected in the select menu\n\t *\n\t * @param maxValues - The maximum values that must be selected\n\t */\n\tpublic setMaxValues(maxValues: number) {\n\t\tthis.data.max_values = minMaxValidator.parse(maxValues);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id for this select menu\n\t *\n\t * @param customId - The custom id to use for this select menu\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this select menu is disabled\n\t *\n\t * @param disabled - Whether this select menu is disabled\n\t */\n\tpublic setDisabled(disabled = true) {\n\t\tthis.data.disabled = disabledValidator.parse(disabled);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds options to this select menu\n\t *\n\t * @param options - The options to add to this select menu\n\t * @returns\n\t */\n\tpublic addOptions(...options: RestOrArray) {\n\t\toptions = normalizeArray(options);\n\t\toptionsLengthValidator.parse(this.options.length + options.length);\n\t\tthis.options.push(\n\t\t\t...options.map((option) =>\n\t\t\t\toption instanceof SelectMenuOptionBuilder\n\t\t\t\t\t? option\n\t\t\t\t\t: new SelectMenuOptionBuilder(optionValidator.parse(option)),\n\t\t\t),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the options on this select menu\n\t *\n\t * @param options - The options to set on this select menu\n\t */\n\tpublic setOptions(...options: RestOrArray) {\n\t\toptions = normalizeArray(options);\n\t\toptionsLengthValidator.parse(options.length);\n\t\tthis.options.splice(\n\t\t\t0,\n\t\t\tthis.options.length,\n\t\t\t...options.map((option) =>\n\t\t\t\toption instanceof SelectMenuOptionBuilder\n\t\t\t\t\t? option\n\t\t\t\t\t: new SelectMenuOptionBuilder(optionValidator.parse(option)),\n\t\t\t),\n\t\t);\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APISelectMenuComponent {\n\t\tvalidateRequiredSelectMenuParameters(this.options, this.data.custom_id);\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t\toptions: this.options.map((o) => o.toJSON()),\n\t\t} as APISelectMenuComponent;\n\t}\n}\n","import { ComponentType, type TextInputStyle, type APITextInputComponent } from 'discord-api-types/v10';\nimport isEqual from 'fast-deep-equal';\nimport {\n\tmaxLengthValidator,\n\tminLengthValidator,\n\tplaceholderValidator,\n\trequiredValidator,\n\tvalueValidator,\n\tvalidateRequiredParameters,\n\tlabelValidator,\n\ttextInputStyleValidator,\n} from './Assertions';\nimport { isJSONEncodable, type JSONEncodable } from '../../util/jsonEncodable';\nimport { customIdValidator } from '../Assertions';\nimport { ComponentBuilder } from '../Component';\n\nexport class TextInputBuilder extends ComponentBuilder {\n\tpublic constructor(data?: APITextInputComponent & { type?: ComponentType.TextInput }) {\n\t\tsuper({ type: ComponentType.TextInput, ...data });\n\t}\n\n\t/**\n\t * Sets the custom id for this text input\n\t *\n\t * @param customId - The custom id of this text input\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the label for this text input\n\t *\n\t * @param label - The label for this text input\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = labelValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the style for this text input\n\t *\n\t * @param style - The style for this text input\n\t */\n\tpublic setStyle(style: TextInputStyle) {\n\t\tthis.data.style = textInputStyleValidator.parse(style);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum length of text for this text input\n\t *\n\t * @param minLength - The minimum length of text for this text input\n\t */\n\tpublic setMinLength(minLength: number) {\n\t\tthis.data.min_length = minLengthValidator.parse(minLength);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the maximum length of text for this text input\n\t *\n\t * @param maxLength - The maximum length of text for this text input\n\t */\n\tpublic setMaxLength(maxLength: number) {\n\t\tthis.data.max_length = maxLengthValidator.parse(maxLength);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the placeholder of this text input\n\t *\n\t * @param placeholder - The placeholder of this text input\n\t */\n\tpublic setPlaceholder(placeholder: string) {\n\t\tthis.data.placeholder = placeholderValidator.parse(placeholder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the value of this text input\n\t *\n\t * @param value - The value for this text input\n\t */\n\tpublic setValue(value: string) {\n\t\tthis.data.value = valueValidator.parse(value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this text input is required\n\t *\n\t * @param required - Whether this text input is required\n\t */\n\tpublic setRequired(required = true) {\n\t\tthis.data.required = requiredValidator.parse(required);\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APITextInputComponent {\n\t\tvalidateRequiredParameters(this.data.custom_id, this.data.style, this.data.label);\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APITextInputComponent;\n\t}\n\n\tpublic equals(other: JSONEncodable | APITextInputComponent): boolean {\n\t\tif (isJSONEncodable(other)) {\n\t\t\treturn isEqual(other.toJSON(), this.data);\n\t\t}\n\n\t\treturn isEqual(other, this.data);\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { TextInputStyle } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation';\nimport { customIdValidator } from '../Assertions';\n\nexport const textInputStyleValidator = s.nativeEnum(TextInputStyle);\nexport const minLengthValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(4000)\n\t.setValidationEnabled(isValidationEnabled);\nexport const maxLengthValidator = s.number.int\n\t.greaterThanOrEqual(1)\n\t.lessThanOrEqual(4000)\n\t.setValidationEnabled(isValidationEnabled);\nexport const requiredValidator = s.boolean;\nexport const valueValidator = s.string.lengthLessThanOrEqual(4000).setValidationEnabled(isValidationEnabled);\nexport const placeholderValidator = s.string.lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);\nexport const labelValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(45)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredParameters(customId?: string, style?: TextInputStyle, label?: string) {\n\tcustomIdValidator.parse(customId);\n\ttextInputStyleValidator.parse(style);\n\tlabelValidator.parse(label);\n}\n","export interface JSONEncodable {\n\t/**\n\t * Transforms this object to its JSON format\n\t */\n\ttoJSON: () => T;\n}\n\n/**\n * Indicates if an object is encodable or not.\n * @param maybeEncodable - The object to check against\n */\nexport function isJSONEncodable(maybeEncodable: unknown): maybeEncodable is JSONEncodable {\n\treturn maybeEncodable !== null && typeof maybeEncodable === 'object' && 'toJSON' in maybeEncodable;\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ActionRowBuilder, type ModalActionRowComponentBuilder } from '../../components/ActionRow';\nimport { customIdValidator } from '../../components/Assertions';\nimport { isValidationEnabled } from '../../util/validation';\n\nexport const titleValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(45)\n\t.setValidationEnabled(isValidationEnabled);\nexport const componentsValidator = s\n\t.instance(ActionRowBuilder)\n\t.array.lengthGreaterThanOrEqual(1)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredParameters(\n\tcustomId?: string,\n\ttitle?: string,\n\tcomponents?: ActionRowBuilder[],\n) {\n\tcustomIdValidator.parse(customId);\n\ttitleValidator.parse(title);\n\tcomponentsValidator.parse(components);\n}\n","import type {\n\tAPIActionRowComponent,\n\tAPIModalActionRowComponent,\n\tAPIModalInteractionResponseCallbackData,\n} from 'discord-api-types/v10';\nimport { titleValidator, validateRequiredParameters } from './Assertions';\nimport { ActionRowBuilder, type ModalActionRowComponentBuilder } from '../../components/ActionRow';\nimport { customIdValidator } from '../../components/Assertions';\nimport { createComponentBuilder } from '../../components/Components';\nimport type { JSONEncodable } from '../../util/jsonEncodable';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray';\n\nexport class ModalBuilder implements JSONEncodable {\n\tpublic readonly data: Partial;\n\tpublic readonly components: ActionRowBuilder[] = [];\n\n\tpublic constructor({ components, ...data }: Partial = {}) {\n\t\tthis.data = { ...data };\n\t\tthis.components = (components?.map((c) => createComponentBuilder(c)) ??\n\t\t\t[]) as ActionRowBuilder[];\n\t}\n\n\t/**\n\t * Sets the title of the modal\n\t *\n\t * @param title - The title of the modal\n\t */\n\tpublic setTitle(title: string) {\n\t\tthis.data.title = titleValidator.parse(title);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id of the modal\n\t *\n\t * @param customId - The custom id of this modal\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds components to this modal\n\t *\n\t * @param components - The components to add to this modal\n\t */\n\tpublic addComponents(\n\t\t...components: RestOrArray<\n\t\t\tActionRowBuilder | APIActionRowComponent\n\t\t>\n\t) {\n\t\tthis.components.push(\n\t\t\t...normalizeArray(components).map((component) =>\n\t\t\t\tcomponent instanceof ActionRowBuilder\n\t\t\t\t\t? component\n\t\t\t\t\t: new ActionRowBuilder(component),\n\t\t\t),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the components in this modal\n\t *\n\t * @param components - The components to set this modal to\n\t */\n\tpublic setComponents(...components: RestOrArray>) {\n\t\tthis.components.splice(0, this.components.length, ...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIModalInteractionResponseCallbackData {\n\t\tvalidateRequiredParameters(this.data.custom_id, this.data.title, this.components);\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t} as APIModalInteractionResponseCallbackData;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { type APIApplicationCommandOptionChoice, Locale, LocalizationMap } from 'discord-api-types/v10';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder';\nimport type { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase';\nimport { isValidationEnabled } from '../../util/validation';\n\nconst namePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(32)\n\t.regex(/^[\\p{Ll}\\p{Lm}\\p{Lo}\\p{N}\\p{sc=Devanagari}\\p{sc=Thai}_-]+$/u)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nconst descriptionPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\nconst localePredicate = s.nativeEnum(Locale);\n\nexport function validateDescription(description: unknown): asserts description is string {\n\tdescriptionPredicate.parse(description);\n}\n\nconst maxArrayLengthPredicate = s.unknown.array.lengthLessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\nexport function validateLocale(locale: unknown) {\n\treturn localePredicate.parse(locale);\n}\n\nexport function validateMaxOptionsLength(options: unknown): asserts options is ToAPIApplicationCommandOptions[] {\n\tmaxArrayLengthPredicate.parse(options);\n}\n\nexport function validateRequiredParameters(\n\tname: string,\n\tdescription: string,\n\toptions: ToAPIApplicationCommandOptions[],\n) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert description conditions\n\tvalidateDescription(description);\n\n\t// Assert options conditions\n\tvalidateMaxOptionsLength(options);\n}\n\nconst booleanPredicate = s.boolean;\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport function validateRequired(required: unknown): asserts required is boolean {\n\tbooleanPredicate.parse(required);\n}\n\nconst choicesLengthPredicate = s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\n\nexport function validateChoicesLength(amountAdding: number, choices?: APIApplicationCommandOptionChoice[]): void {\n\tchoicesLengthPredicate.parse((choices?.length ?? 0) + amountAdding);\n}\n\nexport function assertReturnOfBuilder<\n\tT extends ApplicationCommandOptionBase | SlashCommandSubcommandBuilder | SlashCommandSubcommandGroupBuilder,\n>(input: unknown, ExpectedInstanceOf: new () => T): asserts input is T {\n\ts.instance(ExpectedInstanceOf).parse(input);\n}\n\nexport const localizationMapPredicate = s\n\t.object(Object.fromEntries(Object.values(Locale).map((locale) => [locale, s.string.nullish])))\n\t.strict.nullish.setValidationEnabled(isValidationEnabled);\n\nexport function validateLocalizationMap(value: unknown): asserts value is LocalizationMap {\n\tlocalizationMapPredicate.parse(value);\n}\n\nconst dmPermissionPredicate = s.boolean.nullish;\n\nexport function validateDMPermission(value: unknown): asserts value is boolean | null | undefined {\n\tdmPermissionPredicate.parse(value);\n}\n\nconst memberPermissionPredicate = s.union(\n\ts.bigint.transform((value) => value.toString()),\n\ts.number.safeInt.transform((value) => value.toString()),\n\ts.string.regex(/^\\d+$/),\n).nullish;\n\nexport function validateDefaultMemberPermissions(permissions: unknown) {\n\treturn memberPermissionPredicate.parse(permissions);\n}\n","import type {\n\tAPIApplicationCommandOption,\n\tLocalizationMap,\n\tPermissions,\n\tRESTPostAPIApplicationCommandsJSONBody,\n} from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport {\n\tassertReturnOfBuilder,\n\tvalidateDefaultMemberPermissions,\n\tvalidateDefaultPermission,\n\tvalidateLocalizationMap,\n\tvalidateDMPermission,\n\tvalidateMaxOptionsLength,\n\tvalidateRequiredParameters,\n} from './Assertions';\nimport { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions';\n\n@mix(SharedSlashCommandOptions, SharedNameAndDescription)\nexport class SlashCommandBuilder {\n\t/**\n\t * The name of this slash command\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The localized names for this command\n\t */\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\t/**\n\t * The description of this slash command\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The localized descriptions for this command\n\t */\n\tpublic readonly description_localizations?: LocalizationMap;\n\n\t/**\n\t * The options of this slash command\n\t */\n\tpublic readonly options: ToAPIApplicationCommandOptions[] = [];\n\n\t/**\n\t * Whether the command is enabled by default when the app is added to a guild\n\t *\n\t * @deprecated This property is deprecated and will be removed in the future.\n\t * You should use `setDefaultMemberPermissions` or `setDMPermission` instead.\n\t */\n\tpublic readonly default_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Set of permissions represented as a bit set for the command\n\t */\n\tpublic readonly default_member_permissions: Permissions | null | undefined = undefined;\n\n\t/**\n\t * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t */\n\tpublic readonly dm_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Returns the final data that should be sent to Discord.\n\t *\n\t * **Note:** Calling this function will validate required properties based on their conditions.\n\t */\n\tpublic toJSON(): RESTPostAPIApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\tvalidateLocalizationMap(this.name_localizations);\n\t\tvalidateLocalizationMap(this.description_localizations);\n\n\t\treturn {\n\t\t\t...this,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * **Note**: If set to `false`, you will have to later `PUT` the permissions for this command.\n\t *\n\t * @param value - Whether or not to enable this command by default\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t * @deprecated Use `setDefaultMemberPermissions` or `setDMPermission` instead.\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'default_permission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the default permissions a member should have in order to run the command.\n\t *\n\t * **Note:** You can set this to `'0'` to disable the command by default.\n\t *\n\t * @param permissions - The permissions bit field to set\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined) {\n\t\t// Assert the value and parse it\n\t\tconst permissionValue = validateDefaultMemberPermissions(permissions);\n\n\t\tReflect.set(this, 'default_member_permissions', permissionValue);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets if the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t *\n\t * @param enabled - If the command should be enabled in DMs\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDMPermission(enabled: boolean | null | undefined) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDMPermission(enabled);\n\n\t\tReflect.set(this, 'dm_permission', enabled);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds a new subcommand group to this command\n\t *\n\t * @param input - A function that returns a subcommand group builder, or an already built builder\n\t */\n\tpublic addSubcommandGroup(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandGroupBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandGroupBuilder) => SlashCommandSubcommandGroupBuilder),\n\t): SlashCommandSubcommandsOnlyBuilder {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandGroupBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandGroupBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds a new subcommand to this command\n\t *\n\t * @param input - A function that returns a subcommand builder, or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t): SlashCommandSubcommandsOnlyBuilder {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n}\n\nexport interface SlashCommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {}\n\nexport interface SlashCommandSubcommandsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tPick {}\n\nexport interface SlashCommandOptionsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tSharedSlashCommandOptions,\n\t\tPick {}\n\nexport interface ToAPIApplicationCommandOptions {\n\ttoJSON: () => APIApplicationCommandOption;\n}\n","import {\n\tAPIApplicationCommandSubcommandGroupOption,\n\tAPIApplicationCommandSubcommandOption,\n\tApplicationCommandOptionType,\n} from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { assertReturnOfBuilder, validateMaxOptionsLength, validateRequiredParameters } from './Assertions';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions';\n\n/**\n * Represents a folder for subcommands\n *\n * For more information, go to https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups\n */\n@mix(SharedNameAndDescription)\nexport class SlashCommandSubcommandGroupBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand group\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand group\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The subcommands part of this subcommand group\n\t */\n\tpublic readonly options: SlashCommandSubcommandBuilder[] = [];\n\n\t/**\n\t * Adds a new subcommand to this group\n\t *\n\t * @param input - A function that returns a subcommand builder, or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t) {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandSubcommandGroupOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.SubcommandGroup,\n\t\t\tname: this.name,\n\t\t\tname_localizations: this.name_localizations,\n\t\t\tdescription: this.description,\n\t\t\tdescription_localizations: this.description_localizations,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandGroupBuilder extends SharedNameAndDescription {}\n\n/**\n * Represents a subcommand\n *\n * For more information, go to https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups\n */\n@mix(SharedNameAndDescription, SharedSlashCommandOptions)\nexport class SlashCommandSubcommandBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The options of this subcommand\n\t */\n\tpublic readonly options: ApplicationCommandOptionBase[] = [];\n\n\tpublic toJSON(): APIApplicationCommandSubcommandOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.Subcommand,\n\t\t\tname: this.name,\n\t\t\tname_localizations: this.name_localizations,\n\t\t\tdescription: this.description,\n\t\t\tdescription_localizations: this.description_localizations,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {}\n","import type { LocaleString, LocalizationMap } from 'discord-api-types/v10';\nimport { validateDescription, validateLocale, validateName } from '../Assertions';\n\nexport class SharedNameAndDescription {\n\tpublic readonly name!: string;\n\tpublic readonly name_localizations?: LocalizationMap;\n\tpublic readonly description!: string;\n\tpublic readonly description_localizations?: LocalizationMap;\n\n\t/**\n\t * Sets the name\n\t *\n\t * @param name - The name\n\t */\n\tpublic setName(name: string): this {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description\n\t *\n\t * @param description - The description\n\t */\n\tpublic setDescription(description: string) {\n\t\t// Assert the description matches the conditions\n\t\tvalidateDescription(description);\n\n\t\tReflect.set(this, 'description', description);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a name localization\n\t *\n\t * @param locale - The locale to set a description for\n\t * @param localizedName - The localized description for the given locale\n\t */\n\tpublic setNameLocalization(locale: LocaleString, localizedName: string | null) {\n\t\tif (!this.name_localizations) {\n\t\t\tReflect.set(this, 'name_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedName === null) {\n\t\t\tthis.name_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateName(localizedName);\n\n\t\tthis.name_localizations![parsedLocale] = localizedName;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the name localizations\n\t *\n\t * @param localizedNames - The dictionary of localized descriptions to set\n\t */\n\tpublic setNameLocalizations(localizedNames: LocalizationMap | null) {\n\t\tif (localizedNames === null) {\n\t\t\tReflect.set(this, 'name_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'name_localizations', {});\n\n\t\tObject.entries(localizedNames).forEach((args) =>\n\t\t\tthis.setNameLocalization(...(args as [LocaleString, string | null])),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a description localization\n\t *\n\t * @param locale - The locale to set a description for\n\t * @param localizedDescription - The localized description for the given locale\n\t */\n\tpublic setDescriptionLocalization(locale: LocaleString, localizedDescription: string | null) {\n\t\tif (!this.description_localizations) {\n\t\t\tReflect.set(this, 'description_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedDescription === null) {\n\t\t\tthis.description_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateDescription(localizedDescription);\n\n\t\tthis.description_localizations![parsedLocale] = localizedDescription;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description localizations\n\t *\n\t * @param localizedDescriptions - The dictionary of localized descriptions to set\n\t */\n\tpublic setDescriptionLocalizations(localizedDescriptions: LocalizationMap | null) {\n\t\tif (localizedDescriptions === null) {\n\t\t\tReflect.set(this, 'description_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'description_localizations', {});\n\t\tObject.entries(localizedDescriptions).forEach((args) =>\n\t\t\tthis.setDescriptionLocalization(...(args as [LocaleString, string | null])),\n\t\t);\n\t\treturn this;\n\t}\n}\n","import { APIApplicationCommandAttachmentOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandAttachmentOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Attachment as const;\n\n\tpublic toJSON(): APIApplicationCommandAttachmentOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import type { APIApplicationCommandBasicOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { SharedNameAndDescription } from './NameAndDescription';\nimport { validateRequiredParameters, validateRequired, validateLocalizationMap } from '../Assertions';\n\nexport abstract class ApplicationCommandOptionBase extends SharedNameAndDescription {\n\tpublic abstract readonly type: ApplicationCommandOptionType;\n\n\tpublic readonly required: boolean = false;\n\n\t/**\n\t * Marks the option as required\n\t *\n\t * @param required - If this option should be required\n\t */\n\tpublic setRequired(required: boolean) {\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(required);\n\n\t\tReflect.set(this, 'required', required);\n\n\t\treturn this;\n\t}\n\n\tpublic abstract toJSON(): APIApplicationCommandBasicOption;\n\n\tprotected runRequiredValidations() {\n\t\tvalidateRequiredParameters(this.name, this.description, []);\n\n\t\t// Validate localizations\n\t\tvalidateLocalizationMap(this.name_localizations);\n\t\tvalidateLocalizationMap(this.description_localizations);\n\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(this.required);\n\t}\n}\n","import { APIApplicationCommandBooleanOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandBooleanOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.Boolean as const;\n\n\tpublic toJSON(): APIApplicationCommandBooleanOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { APIApplicationCommandChannelOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionChannelTypesMixin } from '../mixins/ApplicationCommandOptionChannelTypesMixin';\n\n@mix(ApplicationCommandOptionChannelTypesMixin)\nexport class SlashCommandChannelOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Channel as const;\n\n\tpublic toJSON(): APIApplicationCommandChannelOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandChannelOption extends ApplicationCommandOptionChannelTypesMixin {}\n","import { s } from '@sapphire/shapeshift';\nimport { ChannelType } from 'discord-api-types/v10';\n\n// Only allow valid channel types to be used. (This can't be dynamic because const enums are erased at runtime)\nconst allowedChannelTypes = [\n\tChannelType.GuildText,\n\tChannelType.GuildVoice,\n\tChannelType.GuildCategory,\n\tChannelType.GuildNews,\n\tChannelType.GuildNewsThread,\n\tChannelType.GuildPublicThread,\n\tChannelType.GuildPrivateThread,\n\tChannelType.GuildStageVoice,\n] as const;\n\nexport type ApplicationCommandOptionAllowedChannelTypes = typeof allowedChannelTypes[number];\n\nconst channelTypesPredicate = s.array(s.union(...allowedChannelTypes.map((type) => s.literal(type))));\n\nexport class ApplicationCommandOptionChannelTypesMixin {\n\tpublic readonly channel_types?: ApplicationCommandOptionAllowedChannelTypes[];\n\n\t/**\n\t * Adds channel types to this option\n\t *\n\t * @param channelTypes - The channel types to add\n\t */\n\tpublic addChannelTypes(...channelTypes: ApplicationCommandOptionAllowedChannelTypes[]) {\n\t\tif (this.channel_types === undefined) {\n\t\t\tReflect.set(this, 'channel_types', []);\n\t\t}\n\n\t\tthis.channel_types!.push(...channelTypesPredicate.parse(channelTypes));\n\n\t\treturn this;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { APIApplicationCommandIntegerOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\nconst numberValidator = s.number.int;\n\n@mix(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandIntegerOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\tpublic readonly type = ApplicationCommandOptionType.Integer as const;\n\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'max_value', max);\n\n\t\treturn this;\n\t}\n\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'min_value', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandIntegerOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandIntegerOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","export abstract class ApplicationCommandNumericOptionMinMaxValueMixin {\n\tpublic readonly max_value?: number;\n\tpublic readonly min_value?: number;\n\n\t/**\n\t * Sets the maximum number value of this option\n\t *\n\t * @param max - The maximum value this option can be\n\t */\n\tpublic abstract setMaxValue(max: number): this;\n\n\t/**\n\t * Sets the minimum number value of this option\n\t *\n\t * @param min - The minimum value this option can be\n\t */\n\tpublic abstract setMinValue(min: number): this;\n}\n","import { s } from '@sapphire/shapeshift';\nimport { APIApplicationCommandOptionChoice, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { localizationMapPredicate, validateChoicesLength } from '../Assertions';\n\nconst stringPredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100);\nconst numberPredicate = s.number.greaterThan(-Infinity).lessThan(Infinity);\nconst choicesPredicate = s.object({\n\tname: stringPredicate,\n\tname_localizations: localizationMapPredicate,\n\tvalue: s.union(stringPredicate, numberPredicate),\n}).array;\nconst booleanPredicate = s.boolean;\n\nexport class ApplicationCommandOptionWithChoicesAndAutocompleteMixin {\n\tpublic readonly choices?: APIApplicationCommandOptionChoice[];\n\tpublic readonly autocomplete?: boolean;\n\n\t// Since this is present and this is a mixin, this is needed\n\tpublic readonly type!: ApplicationCommandOptionType;\n\n\t/**\n\t * Adds multiple choices for this option\n\t *\n\t * @param choices - The choices to add\n\t */\n\tpublic addChoices(...choices: APIApplicationCommandOptionChoice[]): this {\n\t\tif (choices.length > 0 && this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(choices);\n\n\t\tif (this.choices === undefined) {\n\t\t\tReflect.set(this, 'choices', []);\n\t\t}\n\n\t\tvalidateChoicesLength(choices.length, this.choices);\n\n\t\tfor (const { name, name_localizations, value } of choices) {\n\t\t\t// Validate the value\n\t\t\tif (this.type === ApplicationCommandOptionType.String) {\n\t\t\t\tstringPredicate.parse(value);\n\t\t\t} else {\n\t\t\t\tnumberPredicate.parse(value);\n\t\t\t}\n\n\t\t\tthis.choices!.push({ name, name_localizations, value });\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tpublic setChoices[]>(...choices: Input): this {\n\t\tif (choices.length > 0 && this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(choices);\n\n\t\tReflect.set(this, 'choices', []);\n\t\tthis.addChoices(...choices);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Marks the option as autocompletable\n\t * @param autocomplete - If this option should be autocompletable\n\t */\n\tpublic setAutocomplete(autocomplete: boolean): this {\n\t\t// Assert that you actually passed a boolean\n\t\tbooleanPredicate.parse(autocomplete);\n\n\t\tif (autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tReflect.set(this, 'autocomplete', autocomplete);\n\n\t\treturn this;\n\t}\n}\n","import { APIApplicationCommandMentionableOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandMentionableOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.Mentionable as const;\n\n\tpublic toJSON(): APIApplicationCommandMentionableOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { APIApplicationCommandNumberOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\nconst numberValidator = s.number;\n\n@mix(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandNumberOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\tpublic readonly type = ApplicationCommandOptionType.Number as const;\n\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'max_value', max);\n\n\t\treturn this;\n\t}\n\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'min_value', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandNumberOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandNumberOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","import { APIApplicationCommandRoleOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandRoleOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Role as const;\n\n\tpublic toJSON(): APIApplicationCommandRoleOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { APIApplicationCommandStringOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\nconst minLengthValidator = s.number.greaterThanOrEqual(0).lessThanOrEqual(6000);\nconst maxLengthValidator = s.number.greaterThanOrEqual(1).lessThanOrEqual(6000);\n\n@mix(ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandStringOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.String as const;\n\tpublic readonly max_length?: number;\n\tpublic readonly min_length?: number;\n\n\t/**\n\t * Sets the maximum length of this string option.\n\t *\n\t * @param max - The maximum length this option can be\n\t */\n\tpublic setMaxLength(max: number): this {\n\t\tmaxLengthValidator.parse(max);\n\n\t\tReflect.set(this, 'max_length', max);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum length of this string option.\n\t *\n\t * @param min - The minimum length this option can be\n\t */\n\tpublic setMinLength(min: number): this {\n\t\tminLengthValidator.parse(min);\n\n\t\tReflect.set(this, 'min_length', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandStringOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandStringOption extends ApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","import { APIApplicationCommandUserOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandUserOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.User as const;\n\n\tpublic toJSON(): APIApplicationCommandUserOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import type { ApplicationCommandOptionBase } from './ApplicationCommandOptionBase';\nimport { assertReturnOfBuilder, validateMaxOptionsLength } from '../Assertions';\nimport type { ToAPIApplicationCommandOptions } from '../SlashCommandBuilder';\nimport { SlashCommandAttachmentOption } from '../options/attachment';\nimport { SlashCommandBooleanOption } from '../options/boolean';\nimport { SlashCommandChannelOption } from '../options/channel';\nimport { SlashCommandIntegerOption } from '../options/integer';\nimport { SlashCommandMentionableOption } from '../options/mentionable';\nimport { SlashCommandNumberOption } from '../options/number';\nimport { SlashCommandRoleOption } from '../options/role';\nimport { SlashCommandStringOption } from '../options/string';\nimport { SlashCommandUserOption } from '../options/user';\n\nexport class SharedSlashCommandOptions {\n\tpublic readonly options!: ToAPIApplicationCommandOptions[];\n\n\t/**\n\t * Adds a boolean option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addBooleanOption(\n\t\tinput: SlashCommandBooleanOption | ((builder: SlashCommandBooleanOption) => SlashCommandBooleanOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandBooleanOption);\n\t}\n\n\t/**\n\t * Adds a user option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addUserOption(input: SlashCommandUserOption | ((builder: SlashCommandUserOption) => SlashCommandUserOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandUserOption);\n\t}\n\n\t/**\n\t * Adds a channel option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addChannelOption(\n\t\tinput: SlashCommandChannelOption | ((builder: SlashCommandChannelOption) => SlashCommandChannelOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandChannelOption);\n\t}\n\n\t/**\n\t * Adds a role option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addRoleOption(input: SlashCommandRoleOption | ((builder: SlashCommandRoleOption) => SlashCommandRoleOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandRoleOption);\n\t}\n\n\t/**\n\t * Adds an attachment option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addAttachmentOption(\n\t\tinput: SlashCommandAttachmentOption | ((builder: SlashCommandAttachmentOption) => SlashCommandAttachmentOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandAttachmentOption);\n\t}\n\n\t/**\n\t * Adds a mentionable option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addMentionableOption(\n\t\tinput: SlashCommandMentionableOption | ((builder: SlashCommandMentionableOption) => SlashCommandMentionableOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandMentionableOption);\n\t}\n\n\t/**\n\t * Adds a string option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addStringOption(\n\t\tinput:\n\t\t\t| SlashCommandStringOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandStringOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandStringOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandStringOption);\n\t}\n\n\t/**\n\t * Adds an integer option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addIntegerOption(\n\t\tinput:\n\t\t\t| SlashCommandIntegerOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandIntegerOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandIntegerOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandIntegerOption);\n\t}\n\n\t/**\n\t * Adds a number option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addNumberOption(\n\t\tinput:\n\t\t\t| SlashCommandNumberOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandNumberOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandNumberOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandNumberOption);\n\t}\n\n\tprivate _sharedAddOptionMethod(\n\t\tinput:\n\t\t\t| T\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((builder: T) => T | Omit | Omit),\n\t\tInstance: new () => T,\n\t): ShouldOmitSubcommandFunctions extends true ? Omit : this {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new Instance()) : input;\n\n\t\tassertReturnOfBuilder(result, Instance);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandType } from 'discord-api-types/v10';\nimport type { ContextMenuCommandType } from './ContextMenuCommandBuilder';\nimport { isValidationEnabled } from '../../util/validation';\n\nconst namePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(32)\n\t.regex(/^( *[\\p{L}\\p{N}\\p{sc=Devanagari}\\p{sc=Thai}_-]+ *)+$/u)\n\t.setValidationEnabled(isValidationEnabled);\nconst typePredicate = s\n\t.union(s.literal(ApplicationCommandType.User), s.literal(ApplicationCommandType.Message))\n\t.setValidationEnabled(isValidationEnabled);\nconst booleanPredicate = s.boolean;\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nexport function validateType(type: unknown): asserts type is ContextMenuCommandType {\n\ttypePredicate.parse(type);\n}\n\nexport function validateRequiredParameters(name: string, type: number) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert type is valid\n\tvalidateType(type);\n}\n\nconst dmPermissionPredicate = s.boolean.nullish;\n\nexport function validateDMPermission(value: unknown): asserts value is boolean | null | undefined {\n\tdmPermissionPredicate.parse(value);\n}\n\nconst memberPermissionPredicate = s.union(\n\ts.bigint.transform((value) => value.toString()),\n\ts.number.safeInt.transform((value) => value.toString()),\n\ts.string.regex(/^\\d+$/),\n).nullish;\n\nexport function validateDefaultMemberPermissions(permissions: unknown) {\n\treturn memberPermissionPredicate.parse(permissions);\n}\n","import type {\n\tApplicationCommandType,\n\tLocaleString,\n\tLocalizationMap,\n\tPermissions,\n\tRESTPostAPIApplicationCommandsJSONBody,\n} from 'discord-api-types/v10';\nimport {\n\tvalidateRequiredParameters,\n\tvalidateName,\n\tvalidateType,\n\tvalidateDefaultPermission,\n\tvalidateDefaultMemberPermissions,\n\tvalidateDMPermission,\n} from './Assertions';\nimport { validateLocale, validateLocalizationMap } from '../slashCommands/Assertions';\n\nexport class ContextMenuCommandBuilder {\n\t/**\n\t * The name of this context menu command\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The localized names for this command\n\t */\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\t/**\n\t * The type of this context menu command\n\t */\n\tpublic readonly type: ContextMenuCommandType = undefined!;\n\n\t/**\n\t * Whether the command is enabled by default when the app is added to a guild\n\t *\n\t * @deprecated This property is deprecated and will be removed in the future.\n\t * You should use `setDefaultMemberPermissions` or `setDMPermission` instead.\n\t */\n\tpublic readonly default_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Set of permissions represented as a bit set for the command\n\t */\n\tpublic readonly default_member_permissions: Permissions | null | undefined = undefined;\n\n\t/**\n\t * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t */\n\tpublic readonly dm_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Sets the name\n\t *\n\t * @param name - The name\n\t */\n\tpublic setName(name: string) {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the type\n\t *\n\t * @param type - The type\n\t */\n\tpublic setType(type: ContextMenuCommandType) {\n\t\t// Assert the type is valid\n\t\tvalidateType(type);\n\n\t\tReflect.set(this, 'type', type);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * **Note**: If set to `false`, you will have to later `PUT` the permissions for this command.\n\t *\n\t * @param value - Whether or not to enable this command by default\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t * @deprecated Use `setDefaultMemberPermissions` or `setDMPermission` instead.\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'default_permission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the default permissions a member should have in order to run the command.\n\t *\n\t * **Note:** You can set this to `'0'` to disable the command by default.\n\t *\n\t * @param permissions - The permissions bit field to set\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined) {\n\t\t// Assert the value and parse it\n\t\tconst permissionValue = validateDefaultMemberPermissions(permissions);\n\n\t\tReflect.set(this, 'default_member_permissions', permissionValue);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets if the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t *\n\t * @param enabled - If the command should be enabled in DMs\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDMPermission(enabled: boolean | null | undefined) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDMPermission(enabled);\n\n\t\tReflect.set(this, 'dm_permission', enabled);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a name localization\n\t *\n\t * @param locale - The locale to set a description for\n\t * @param localizedName - The localized description for the given locale\n\t */\n\tpublic setNameLocalization(locale: LocaleString, localizedName: string | null) {\n\t\tif (!this.name_localizations) {\n\t\t\tReflect.set(this, 'name_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedName === null) {\n\t\t\tthis.name_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateName(localizedName);\n\n\t\tthis.name_localizations![parsedLocale] = localizedName;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the name localizations\n\t *\n\t * @param localizedNames - The dictionary of localized descriptions to set\n\t */\n\tpublic setNameLocalizations(localizedNames: LocalizationMap | null) {\n\t\tif (localizedNames === null) {\n\t\t\tReflect.set(this, 'name_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'name_localizations', {});\n\n\t\tObject.entries(localizedNames).forEach((args) =>\n\t\t\tthis.setNameLocalization(...(args as [LocaleString, string | null])),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns the final data that should be sent to Discord.\n\t *\n\t * **Note:** Calling this function will validate required properties based on their conditions.\n\t */\n\tpublic toJSON(): RESTPostAPIApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.type);\n\n\t\tvalidateLocalizationMap(this.name_localizations);\n\n\t\treturn { ...this };\n\t}\n}\n\nexport type ContextMenuCommandType = ApplicationCommandType.User | ApplicationCommandType.Message;\n","export interface Equatable {\n\t/**\n\t * Whether or not this is equal to another structure\n\t */\n\tequals: (other: T) => boolean;\n}\n\n/**\n * Indicates if an object is equatable or not.\n * @param maybeEquatable - The object to check against\n */\nexport function isEquatable(maybeEquatable: unknown): maybeEquatable is Equatable {\n\treturn maybeEquatable !== null && typeof maybeEquatable === 'object' && 'equals' in maybeEquatable;\n}\n","import type { APIEmbed } from 'discord-api-types/v10';\n\nexport function embedLength(data: APIEmbed) {\n\treturn (\n\t\t(data.title?.length ?? 0) +\n\t\t(data.description?.length ?? 0) +\n\t\t(data.fields?.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) ?? 0) +\n\t\t(data.footer?.text.length ?? 0) +\n\t\t(data.author?.name.length ?? 0)\n\t);\n}\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/dist/index.mjs b/node_modules/@discordjs/builders/dist/index.mjs index ca8b264..bce0a1b 100644 --- a/node_modules/@discordjs/builders/dist/index.mjs +++ b/node_modules/@discordjs/builders/dist/index.mjs @@ -1,4 +1,1482 @@ -var G=Object.defineProperty;var ge=Object.getOwnPropertyDescriptor;var Pe=(t,e,i)=>e in t?G(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var q=(t,e)=>{for(var i in e)G(t,i,{get:e[i],enumerable:!0})};var m=(t,e,i,o)=>{for(var p=o>1?void 0:o?ge(e,i):e,A=t.length-1,y;A>=0;A--)(y=t[A])&&(p=(o?y(e,i,p):y(p))||p);return o&&p&&G(e,i,p),p};var n=(t,e,i)=>(Pe(t,typeof e!="symbol"?e+"":e,i),i);var le={};q(le,{authorNamePredicate:()=>z,colorPredicate:()=>W,descriptionPredicate:()=>j,embedFieldPredicate:()=>pe,embedFieldsArrayPredicate:()=>w,fieldInlinePredicate:()=>B,fieldLengthPredicate:()=>me,fieldNamePredicate:()=>O,fieldValuePredicate:()=>N,footerTextPredicate:()=>Z,timestampPredicate:()=>K,titlePredicate:()=>Q,urlPredicate:()=>u,validateFieldLength:()=>E});import{z as l}from"zod";var O=l.string().min(1).max(256),N=l.string().min(1).max(1024),B=l.boolean().optional(),pe=l.object({name:O,value:N,inline:B}),w=pe.array(),me=l.number().lte(25);function E(t,e){me.parse(t.length+e)}var z=O.nullable(),u=l.string().url().nullish(),W=l.number().gte(0).lte(16777215).nullable(),j=l.string().min(1).max(4096).nullable(),Z=l.string().min(1).max(2048).nullable(),K=l.union([l.number(),l.date()]).nullable(),Q=O.nullable();var k=class{constructor(e={}){n(this,"fields");n(this,"title");n(this,"description");n(this,"url");n(this,"color");n(this,"timestamp");n(this,"thumbnail");n(this,"image");n(this,"video");n(this,"author");n(this,"provider");n(this,"footer");this.title=e.title,this.description=e.description,this.url=e.url,this.color=e.color,this.thumbnail=e.thumbnail,this.image=e.image,this.video=e.video,this.author=e.author,this.provider=e.provider,this.footer=e.footer,this.fields=e.fields??[],e.timestamp&&(this.timestamp=new Date(e.timestamp).toISOString())}get length(){return(this.title?.length??0)+(this.description?.length??0)+this.fields.reduce((e,i)=>e+i.name.length+i.value.length,0)+(this.footer?.text.length??0)+(this.author?.name.length??0)}addField(e){return this.addFields(e)}addFields(...e){return w.parse(e),E(this.fields,e.length),this.fields.push(...k.normalizeFields(...e)),this}spliceFields(e,i,...o){return w.parse(o),E(this.fields,o.length-i),this.fields.splice(e,i,...k.normalizeFields(...o)),this}setAuthor(e){if(e===null)return this.author=void 0,this;let{name:i,iconURL:o,url:p}=e;return z.parse(i),u.parse(o),u.parse(p),this.author={name:i,url:p,icon_url:o},this}setColor(e){return W.parse(e),this.color=e??void 0,this}setDescription(e){return j.parse(e),this.description=e??void 0,this}setFooter(e){if(e===null)return this.footer=void 0,this;let{text:i,iconURL:o}=e;return Z.parse(i),u.parse(o),this.footer={text:i,icon_url:o},this}setImage(e){return u.parse(e),this.image=e?{url:e}:void 0,this}setThumbnail(e){return u.parse(e),this.thumbnail=e?{url:e}:void 0,this}setTimestamp(e=Date.now()){return K.parse(e),this.timestamp=e?new Date(e).toISOString():void 0,this}setTitle(e){return Q.parse(e),this.title=e??void 0,this}setURL(e){return u.parse(e),this.url=e??void 0,this}toJSON(){return{...this}}static normalizeFields(...e){return e.flat(1/0).map(i=>(O.parse(i.name),N.parse(i.value),B.parse(i.inline),{name:i.name,value:i.value,inline:i.inline??void 0}))}};function tt(t,e){return typeof e=="undefined"?`\`\`\` -${t}\`\`\``:`\`\`\`${t} -${e}\`\`\``}function it(t){return`\`${t}\``}function nt(t){return`_${t}_`}function ot(t){return`**${t}**`}function rt(t){return`__${t}__`}function at(t){return`~~${t}~~`}function st(t){return`> ${t}`}function pt(t){return`>>> ${t}`}function mt(t){return`<${t}>`}function lt(t,e,i){return i?`[${t}](${e} "${i}")`:`[${t}](${e})`}function dt(t){return`||${t}||`}function ct(t){return`<@${t}>`}function ut(t){return`<@!${t}>`}function ht(t){return`<#${t}>`}function Ct(t){return`<@&${t}>`}function ft(t,e=!1){return`<${e?"a":""}:_:${t}>`}function bt(t,e){return typeof t!="number"&&(t=Math.floor((t?.getTime()??Date.now())/1e3)),typeof e=="string"?``:``}var xt={ShortTime:"t",LongTime:"T",ShortDate:"d",LongDate:"D",ShortDateTime:"f",LongDateTime:"F",RelativeTime:"R"},Te=(o=>(o.Shrug="\xAF\\_(\u30C4)\\_/\xAF",o.Tableflip="(\u256F\xB0\u25A1\xB0\uFF09\u256F\uFE35 \u253B\u2501\u253B",o.Unflip="\u252C\u2500\u252C \u30CE( \u309C-\u309C\u30CE)",o))(Te||{});var ue={};q(ue,{assertReturnOfBuilder:()=>C,validateDefaultPermission:()=>X,validateDescription:()=>V,validateMaxChoicesLength:()=>Y,validateMaxOptionsLength:()=>d,validateName:()=>L,validateRequired:()=>U,validateRequiredParameters:()=>h});import H from"@sindresorhus/is";import{z as _}from"zod";function h(t,e,i){L(t),V(e),d(i)}var Ie=_.string().min(1).max(32).regex(/^[\P{Lu}\p{N}_-]+$/u);function L(t){Ie.parse(t)}var $e=_.string().min(1).max(100);function V(t){$e.parse(t)}var de=_.boolean();function X(t){de.parse(t)}function U(t){de.parse(t)}var ce=_.unknown().array().max(25);function d(t){ce.parse(t)}function Y(t){ce.parse(t)}function C(t,e){let i=e.name;if(H.nullOrUndefined(t))throw new TypeError(`Expected to receive a ${i} builder, got ${t===null?"null":"undefined"} instead.`);if(H.primitive(t))throw new TypeError(`Expected to receive a ${i} builder, got a primitive (${typeof t}) instead.`);if(!(t instanceof e)){let o=t,p=H.function_(t)?t.name:o.constructor.name,A=Reflect.get(o,Symbol.toStringTag),y=A?`${p} [${A}]`:p;throw new TypeError(`Expected to receive a ${i} builder, got ${y} instead.`)}}import{mix as We}from"ts-mixer";import{ApplicationCommandOptionType as Re}from"discord-api-types/v9";var f=class{constructor(){n(this,"name");n(this,"description")}setName(e){return L(e),Reflect.set(this,"name",e),this}setDescription(e){return V(e),Reflect.set(this,"description",e),this}};var s=class extends f{constructor(){super(...arguments);n(this,"required",!1)}setRequired(e){return U(e),Reflect.set(this,"required",e),this}runRequiredValidations(){h(this.name,this.description,[]),U(this.required)}};var ee=class extends s{constructor(){super(...arguments);n(this,"type",Re.Boolean)}toJSON(){return this.runRequiredValidations(),{...this}}};import{ApplicationCommandOptionType as Ne}from"discord-api-types/v9";import{mix as Be}from"ts-mixer";import{ChannelType as c}from"discord-api-types/v9";import{z as he}from"zod";var Me=[c.GuildText,c.GuildVoice,c.GuildCategory,c.GuildNews,c.GuildStore,c.GuildNewsThread,c.GuildPublicThread,c.GuildPrivateThread,c.GuildStageVoice],ve=he.union(Me.map(t=>he.literal(t))),te=class{constructor(){n(this,"channel_types")}addChannelType(e){return this.channel_types===void 0&&Reflect.set(this,"channel_types",[]),ve.parse(e),this.channel_types.push(e),this}addChannelTypes(e){return e.forEach(i=>this.addChannelType(i)),this}};var g=class extends s{constructor(){super(...arguments);n(this,"type",Ne.Channel)}toJSON(){return this.runRequiredValidations(),{...this}}};g=m([Be(te)],g);import{ApplicationCommandOptionType as ke}from"discord-api-types/v9";import{mix as _e}from"ts-mixer";import{z as Le}from"zod";var P=class{constructor(){n(this,"maxValue");n(this,"minValue")}};import{ApplicationCommandOptionType as we}from"discord-api-types/v9";import{z as T}from"zod";var D=T.string().min(1).max(100),Ce=T.number().gt(-1/0).lt(1/0),fe=T.tuple([D,T.union([D,Ce])]).array(),Ee=T.boolean(),x=class{constructor(){n(this,"choices");n(this,"autocomplete");n(this,"type")}addChoice(e,i){if(this.autocomplete)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return this.choices===void 0&&Reflect.set(this,"choices",[]),Y(this.choices),D.parse(e),this.type===we.String?D.parse(i):Ce.parse(i),this.choices.push({name:e,value:i}),this}addChoices(e){if(this.autocomplete)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");fe.parse(e);for(let[i,o]of e)this.addChoice(i,o);return this}setChoices(e){if(e.length>0&&this.autocomplete)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");fe.parse(e),Reflect.set(this,"choices",[]);for(let[i,o]of e)this.addChoice(i,o);return this}setAutocomplete(e){if(Ee.parse(e),e&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return Reflect.set(this,"autocomplete",e),this}};var be=Le.number().int().nonnegative(),I=class extends s{constructor(){super(...arguments);n(this,"type",ke.Integer)}setMaxValue(e){return be.parse(e),Reflect.set(this,"maxValue",e),this}setMinValue(e){return be.parse(e),Reflect.set(this,"minValue",e),this}toJSON(){if(this.runRequiredValidations(),this.autocomplete&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return{...this}}};I=m([_e(P,x)],I);import{ApplicationCommandOptionType as Ve}from"discord-api-types/v9";var ie=class extends s{constructor(){super(...arguments);n(this,"type",Ve.Mentionable)}toJSON(){return this.runRequiredValidations(),{...this}}};import{ApplicationCommandOptionType as Ue}from"discord-api-types/v9";import{mix as De}from"ts-mixer";import{z as Fe}from"zod";var xe=Fe.number().nonnegative(),$=class extends s{constructor(){super(...arguments);n(this,"type",Ue.Number)}setMaxValue(e){return xe.parse(e),Reflect.set(this,"maxValue",e),this}setMinValue(e){return xe.parse(e),Reflect.set(this,"minValue",e),this}toJSON(){if(this.runRequiredValidations(),this.autocomplete&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return{...this}}};$=m([De(P,x)],$);import{ApplicationCommandOptionType as Je}from"discord-api-types/v9";var ne=class extends s{constructor(){super(...arguments);n(this,"type",Je.Role)}toJSON(){return this.runRequiredValidations(),{...this}}};import{ApplicationCommandOptionType as Ge}from"discord-api-types/v9";import{mix as qe}from"ts-mixer";var R=class extends s{constructor(){super(...arguments);n(this,"type",Ge.String)}toJSON(){if(this.runRequiredValidations(),this.autocomplete&&Array.isArray(this.choices)&&this.choices.length>0)throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");return{...this}}};R=m([qe(x)],R);import{ApplicationCommandOptionType as ze}from"discord-api-types/v9";var oe=class extends s{constructor(){super(...arguments);n(this,"type",ze.User)}toJSON(){return this.runRequiredValidations(),{...this}}};var M=class{constructor(){n(this,"options")}addBooleanOption(e){return this._sharedAddOptionMethod(e,ee)}addUserOption(e){return this._sharedAddOptionMethod(e,oe)}addChannelOption(e){return this._sharedAddOptionMethod(e,g)}addRoleOption(e){return this._sharedAddOptionMethod(e,ne)}addMentionableOption(e){return this._sharedAddOptionMethod(e,ie)}addStringOption(e){return this._sharedAddOptionMethod(e,R)}addIntegerOption(e){return this._sharedAddOptionMethod(e,I)}addNumberOption(e){return this._sharedAddOptionMethod(e,$)}_sharedAddOptionMethod(e,i){let{options:o}=this;d(o);let p=typeof e=="function"?e(new i):e;return C(p,i),o.push(p),this}};import{ApplicationCommandOptionType as Ae}from"discord-api-types/v9";import{mix as Oe}from"ts-mixer";var S=class{constructor(){n(this,"name");n(this,"description");n(this,"options",[])}addSubcommand(e){let{options:i}=this;d(i);let o=typeof e=="function"?e(new b):e;return C(o,b),i.push(o),this}toJSON(){return h(this.name,this.description,this.options),{type:Ae.SubcommandGroup,name:this.name,description:this.description,options:this.options.map(e=>e.toJSON())}}};S=m([Oe(f)],S);var b=class{constructor(){n(this,"name");n(this,"description");n(this,"options",[])}toJSON(){return h(this.name,this.description,this.options),{type:Ae.Subcommand,name:this.name,description:this.description,options:this.options.map(e=>e.toJSON())}}};b=m([Oe(f,M)],b);var re=class{constructor(){n(this,"name");n(this,"description");n(this,"options",[]);n(this,"defaultPermission")}toJSON(){return h(this.name,this.description,this.options),{name:this.name,description:this.description,options:this.options.map(e=>e.toJSON()),default_permission:this.defaultPermission}}setDefaultPermission(e){return X(e),Reflect.set(this,"defaultPermission",e),this}addSubcommandGroup(e){let{options:i}=this;d(i);let o=typeof e=="function"?e(new S):e;return C(o,S),i.push(o),this}addSubcommand(e){let{options:i}=this;d(i);let o=typeof e=="function"?e(new b):e;return C(o,b),i.push(o),this}};re=m([We(M,f)],re);var ye={};q(ye,{validateDefaultPermission:()=>se,validateName:()=>F,validateRequiredParameters:()=>ae,validateType:()=>J});import{z as v}from"zod";import{ApplicationCommandType as Se}from"discord-api-types/v9";function ae(t,e){F(t),J(e)}var je=v.string().min(1).max(32).regex(/^( *[\p{L}\p{N}_-]+ *)+$/u);function F(t){je.parse(t)}var Ze=v.union([v.literal(Se.User),v.literal(Se.Message)]);function J(t){Ze.parse(t)}var Ke=v.boolean();function se(t){Ke.parse(t)}var Qe=class{constructor(){n(this,"name");n(this,"type");n(this,"defaultPermission")}setName(e){return F(e),Reflect.set(this,"name",e),this}setType(e){return J(e),Reflect.set(this,"type",e),this}setDefaultPermission(e){return se(e),Reflect.set(this,"defaultPermission",e),this}toJSON(){return ae(this.name,this.type),{name:this.name,type:this.type,default_permission:this.defaultPermission}}};export{ye as ContextMenuCommandAssertions,Qe as ContextMenuCommandBuilder,k as Embed,le as EmbedAssertions,Te as Faces,ue as SlashCommandAssertions,ee as SlashCommandBooleanOption,re as SlashCommandBuilder,g as SlashCommandChannelOption,I as SlashCommandIntegerOption,ie as SlashCommandMentionableOption,$ as SlashCommandNumberOption,ne as SlashCommandRoleOption,R as SlashCommandStringOption,b as SlashCommandSubcommandBuilder,S as SlashCommandSubcommandGroupBuilder,oe as SlashCommandUserOption,xt as TimestampStyles,pt as blockQuote,ot as bold,ht as channelMention,tt as codeBlock,ft as formatEmoji,mt as hideLinkEmbed,lt as hyperlink,it as inlineCode,nt as italic,ut as memberNicknameMention,st as quote,Ct as roleMention,dt as spoiler,at as strikethrough,bt as time,rt as underscore,ct as userMention}; +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __decorateClass = (decorators, target, key, kind) => { + var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target; + for (var i = decorators.length - 1, decorator; i >= 0; i--) + if (decorator = decorators[i]) + result = (kind ? decorator(target, key, result) : decorator(result)) || result; + if (kind && result) + __defProp(target, key, result); + return result; +}; +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; + +// src/messages/embed/Assertions.ts +var Assertions_exports = {}; +__export(Assertions_exports, { + RGBPredicate: () => RGBPredicate, + authorNamePredicate: () => authorNamePredicate, + colorPredicate: () => colorPredicate, + descriptionPredicate: () => descriptionPredicate, + embedAuthorPredicate: () => embedAuthorPredicate, + embedFieldPredicate: () => embedFieldPredicate, + embedFieldsArrayPredicate: () => embedFieldsArrayPredicate, + embedFooterPredicate: () => embedFooterPredicate, + fieldInlinePredicate: () => fieldInlinePredicate, + fieldLengthPredicate: () => fieldLengthPredicate, + fieldNamePredicate: () => fieldNamePredicate, + fieldValuePredicate: () => fieldValuePredicate, + footerTextPredicate: () => footerTextPredicate, + imageURLPredicate: () => imageURLPredicate, + timestampPredicate: () => timestampPredicate, + titlePredicate: () => titlePredicate, + urlPredicate: () => urlPredicate, + validateFieldLength: () => validateFieldLength +}); +import { s } from "@sapphire/shapeshift"; + +// src/util/validation.ts +var validate = true; +var enableValidators = /* @__PURE__ */ __name(() => validate = true, "enableValidators"); +var disableValidators = /* @__PURE__ */ __name(() => validate = false, "disableValidators"); +var isValidationEnabled = /* @__PURE__ */ __name(() => validate, "isValidationEnabled"); + +// src/messages/embed/Assertions.ts +var fieldNamePredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(256).setValidationEnabled(isValidationEnabled); +var fieldValuePredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(1024).setValidationEnabled(isValidationEnabled); +var fieldInlinePredicate = s.boolean.optional; +var embedFieldPredicate = s.object({ + name: fieldNamePredicate, + value: fieldValuePredicate, + inline: fieldInlinePredicate +}).setValidationEnabled(isValidationEnabled); +var embedFieldsArrayPredicate = embedFieldPredicate.array.setValidationEnabled(isValidationEnabled); +var fieldLengthPredicate = s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled); +function validateFieldLength(amountAdding, fields) { + fieldLengthPredicate.parse((fields?.length ?? 0) + amountAdding); +} +__name(validateFieldLength, "validateFieldLength"); +var authorNamePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled); +var imageURLPredicate = s.string.url({ + allowedProtocols: ["http:", "https:", "attachment:"] +}).nullish.setValidationEnabled(isValidationEnabled); +var urlPredicate = s.string.url({ + allowedProtocols: ["http:", "https:"] +}).nullish.setValidationEnabled(isValidationEnabled); +var embedAuthorPredicate = s.object({ + name: authorNamePredicate, + iconURL: imageURLPredicate, + url: urlPredicate +}).setValidationEnabled(isValidationEnabled); +var RGBPredicate = s.number.int.greaterThanOrEqual(0).lessThanOrEqual(255).setValidationEnabled(isValidationEnabled); +var colorPredicate = s.number.int.greaterThanOrEqual(0).lessThanOrEqual(16777215).or(s.tuple([RGBPredicate, RGBPredicate, RGBPredicate])).nullable.setValidationEnabled(isValidationEnabled); +var descriptionPredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(4096).nullable.setValidationEnabled(isValidationEnabled); +var footerTextPredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(2048).nullable.setValidationEnabled(isValidationEnabled); +var embedFooterPredicate = s.object({ + text: footerTextPredicate, + iconURL: imageURLPredicate +}).setValidationEnabled(isValidationEnabled); +var timestampPredicate = s.union(s.number, s.date).nullable.setValidationEnabled(isValidationEnabled); +var titlePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled); + +// src/util/normalizeArray.ts +function normalizeArray(arr) { + if (Array.isArray(arr[0])) + return arr[0]; + return arr; +} +__name(normalizeArray, "normalizeArray"); + +// src/messages/embed/Embed.ts +var EmbedBuilder = class { + constructor(data = {}) { + __publicField(this, "data"); + this.data = { ...data }; + if (data.timestamp) + this.data.timestamp = new Date(data.timestamp).toISOString(); + } + addFields(...fields) { + fields = normalizeArray(fields); + validateFieldLength(fields.length, this.data.fields); + embedFieldsArrayPredicate.parse(fields); + if (this.data.fields) + this.data.fields.push(...fields); + else + this.data.fields = fields; + return this; + } + spliceFields(index, deleteCount, ...fields) { + validateFieldLength(fields.length - deleteCount, this.data.fields); + embedFieldsArrayPredicate.parse(fields); + if (this.data.fields) + this.data.fields.splice(index, deleteCount, ...fields); + else + this.data.fields = fields; + return this; + } + setFields(...fields) { + this.spliceFields(0, this.data.fields?.length ?? 0, ...normalizeArray(fields)); + return this; + } + setAuthor(options) { + if (options === null) { + this.data.author = void 0; + return this; + } + embedAuthorPredicate.parse(options); + this.data.author = { name: options.name, url: options.url, icon_url: options.iconURL }; + return this; + } + setColor(color) { + colorPredicate.parse(color); + if (Array.isArray(color)) { + const [red, green, blue] = color; + this.data.color = (red << 16) + (green << 8) + blue; + return this; + } + this.data.color = color ?? void 0; + return this; + } + setDescription(description) { + descriptionPredicate.parse(description); + this.data.description = description ?? void 0; + return this; + } + setFooter(options) { + if (options === null) { + this.data.footer = void 0; + return this; + } + embedFooterPredicate.parse(options); + this.data.footer = { text: options.text, icon_url: options.iconURL }; + return this; + } + setImage(url) { + imageURLPredicate.parse(url); + this.data.image = url ? { url } : void 0; + return this; + } + setThumbnail(url) { + imageURLPredicate.parse(url); + this.data.thumbnail = url ? { url } : void 0; + return this; + } + setTimestamp(timestamp = Date.now()) { + timestampPredicate.parse(timestamp); + this.data.timestamp = timestamp ? new Date(timestamp).toISOString() : void 0; + return this; + } + setTitle(title) { + titlePredicate.parse(title); + this.data.title = title ?? void 0; + return this; + } + setURL(url) { + urlPredicate.parse(url); + this.data.url = url ?? void 0; + return this; + } + toJSON() { + return { ...this.data }; + } +}; +__name(EmbedBuilder, "EmbedBuilder"); + +// src/messages/formatters.ts +function codeBlock(language, content) { + return typeof content === "undefined" ? `\`\`\` +${language}\`\`\`` : `\`\`\`${language} +${content}\`\`\``; +} +__name(codeBlock, "codeBlock"); +function inlineCode(content) { + return `\`${content}\``; +} +__name(inlineCode, "inlineCode"); +function italic(content) { + return `_${content}_`; +} +__name(italic, "italic"); +function bold(content) { + return `**${content}**`; +} +__name(bold, "bold"); +function underscore(content) { + return `__${content}__`; +} +__name(underscore, "underscore"); +function strikethrough(content) { + return `~~${content}~~`; +} +__name(strikethrough, "strikethrough"); +function quote(content) { + return `> ${content}`; +} +__name(quote, "quote"); +function blockQuote(content) { + return `>>> ${content}`; +} +__name(blockQuote, "blockQuote"); +function hideLinkEmbed(url) { + return `<${url}>`; +} +__name(hideLinkEmbed, "hideLinkEmbed"); +function hyperlink(content, url, title) { + return title ? `[${content}](${url} "${title}")` : `[${content}](${url})`; +} +__name(hyperlink, "hyperlink"); +function spoiler(content) { + return `||${content}||`; +} +__name(spoiler, "spoiler"); +function userMention(userId) { + return `<@${userId}>`; +} +__name(userMention, "userMention"); +function channelMention(channelId) { + return `<#${channelId}>`; +} +__name(channelMention, "channelMention"); +function roleMention(roleId) { + return `<@&${roleId}>`; +} +__name(roleMention, "roleMention"); +function formatEmoji(emojiId, animated = false) { + return `<${animated ? "a" : ""}:_:${emojiId}>`; +} +__name(formatEmoji, "formatEmoji"); +function time(timeOrSeconds, style) { + if (typeof timeOrSeconds !== "number") { + timeOrSeconds = Math.floor((timeOrSeconds?.getTime() ?? Date.now()) / 1e3); + } + return typeof style === "string" ? `` : ``; +} +__name(time, "time"); +var TimestampStyles = { + ShortTime: "t", + LongTime: "T", + ShortDate: "d", + LongDate: "D", + ShortDateTime: "f", + LongDateTime: "F", + RelativeTime: "R" +}; +var Faces = /* @__PURE__ */ ((Faces2) => { + Faces2["Shrug"] = "\xAF\\_(\u30C4)\\_/\xAF"; + Faces2["Tableflip"] = "(\u256F\xB0\u25A1\xB0\uFF09\u256F\uFE35 \u253B\u2501\u253B"; + Faces2["Unflip"] = "\u252C\u2500\u252C \u30CE( \u309C-\u309C\u30CE)"; + return Faces2; +})(Faces || {}); + +// src/components/Assertions.ts +var Assertions_exports2 = {}; +__export(Assertions_exports2, { + buttonLabelValidator: () => buttonLabelValidator, + buttonStyleValidator: () => buttonStyleValidator, + customIdValidator: () => customIdValidator, + defaultValidator: () => defaultValidator, + disabledValidator: () => disabledValidator, + emojiValidator: () => emojiValidator, + labelValueDescriptionValidator: () => labelValueDescriptionValidator, + minMaxValidator: () => minMaxValidator, + optionValidator: () => optionValidator, + optionsLengthValidator: () => optionsLengthValidator, + optionsValidator: () => optionsValidator, + placeholderValidator: () => placeholderValidator, + urlValidator: () => urlValidator, + validateRequiredButtonParameters: () => validateRequiredButtonParameters, + validateRequiredSelectMenuOptionParameters: () => validateRequiredSelectMenuOptionParameters, + validateRequiredSelectMenuParameters: () => validateRequiredSelectMenuParameters +}); +import { s as s2 } from "@sapphire/shapeshift"; +import { ButtonStyle } from "discord-api-types/v10"; + +// src/components/selectMenu/SelectMenuOption.ts +var SelectMenuOptionBuilder = class { + constructor(data = {}) { + this.data = data; + } + setLabel(label) { + this.data.label = labelValueDescriptionValidator.parse(label); + return this; + } + setValue(value) { + this.data.value = labelValueDescriptionValidator.parse(value); + return this; + } + setDescription(description) { + this.data.description = labelValueDescriptionValidator.parse(description); + return this; + } + setDefault(isDefault = true) { + this.data.default = defaultValidator.parse(isDefault); + return this; + } + setEmoji(emoji) { + this.data.emoji = emojiValidator.parse(emoji); + return this; + } + toJSON() { + validateRequiredSelectMenuOptionParameters(this.data.label, this.data.value); + return { + ...this.data + }; + } +}; +__name(SelectMenuOptionBuilder, "SelectMenuOptionBuilder"); + +// src/components/Assertions.ts +var customIdValidator = s2.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled); +var emojiValidator = s2.object({ + id: s2.string, + name: s2.string, + animated: s2.boolean +}).partial.strict.setValidationEnabled(isValidationEnabled); +var disabledValidator = s2.boolean; +var buttonLabelValidator = s2.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(80).setValidationEnabled(isValidationEnabled); +var buttonStyleValidator = s2.nativeEnum(ButtonStyle); +var placeholderValidator = s2.string.lengthLessThanOrEqual(150).setValidationEnabled(isValidationEnabled); +var minMaxValidator = s2.number.int.greaterThanOrEqual(0).lessThanOrEqual(25).setValidationEnabled(isValidationEnabled); +var labelValueDescriptionValidator = s2.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled); +var optionValidator = s2.union(s2.object({ + label: labelValueDescriptionValidator, + value: labelValueDescriptionValidator, + description: labelValueDescriptionValidator.optional, + emoji: emojiValidator.optional, + default: s2.boolean.optional +}), s2.instance(SelectMenuOptionBuilder)).setValidationEnabled(isValidationEnabled); +var optionsValidator = optionValidator.array.lengthGreaterThanOrEqual(0).setValidationEnabled(isValidationEnabled); +var optionsLengthValidator = s2.number.int.greaterThanOrEqual(0).lessThanOrEqual(25).setValidationEnabled(isValidationEnabled); +function validateRequiredSelectMenuParameters(options, customId) { + customIdValidator.parse(customId); + optionsValidator.parse(options); +} +__name(validateRequiredSelectMenuParameters, "validateRequiredSelectMenuParameters"); +var defaultValidator = s2.boolean; +function validateRequiredSelectMenuOptionParameters(label, value) { + labelValueDescriptionValidator.parse(label); + labelValueDescriptionValidator.parse(value); +} +__name(validateRequiredSelectMenuOptionParameters, "validateRequiredSelectMenuOptionParameters"); +var urlValidator = s2.string.url({ + allowedProtocols: ["http:", "https:", "discord:"] +}).setValidationEnabled(isValidationEnabled); +function validateRequiredButtonParameters(style, label, emoji, customId, url) { + if (url && customId) { + throw new RangeError("URL and custom id are mutually exclusive"); + } + if (!label && !emoji) { + throw new RangeError("Buttons must have a label and/or an emoji"); + } + if (style === ButtonStyle.Link) { + if (!url) { + throw new RangeError("Link buttons must have a url"); + } + } else if (url) { + throw new RangeError("Non-link buttons cannot have a url"); + } +} +__name(validateRequiredButtonParameters, "validateRequiredButtonParameters"); + +// src/components/ActionRow.ts +import { + ComponentType as ComponentType5 +} from "discord-api-types/v10"; + +// src/components/Component.ts +var ComponentBuilder = class { + constructor(data) { + __publicField(this, "data"); + this.data = data; + } +}; +__name(ComponentBuilder, "ComponentBuilder"); + +// src/components/Components.ts +import { ComponentType as ComponentType4 } from "discord-api-types/v10"; + +// src/components/button/Button.ts +import { + ComponentType +} from "discord-api-types/v10"; +var ButtonBuilder = class extends ComponentBuilder { + constructor(data) { + super({ type: ComponentType.Button, ...data }); + } + setStyle(style) { + this.data.style = buttonStyleValidator.parse(style); + return this; + } + setURL(url) { + this.data.url = urlValidator.parse(url); + return this; + } + setCustomId(customId) { + this.data.custom_id = customIdValidator.parse(customId); + return this; + } + setEmoji(emoji) { + this.data.emoji = emojiValidator.parse(emoji); + return this; + } + setDisabled(disabled = true) { + this.data.disabled = disabledValidator.parse(disabled); + return this; + } + setLabel(label) { + this.data.label = buttonLabelValidator.parse(label); + return this; + } + toJSON() { + validateRequiredButtonParameters(this.data.style, this.data.label, this.data.emoji, this.data.custom_id, this.data.url); + return { + ...this.data + }; + } +}; +__name(ButtonBuilder, "ButtonBuilder"); + +// src/components/selectMenu/SelectMenu.ts +import { ComponentType as ComponentType2 } from "discord-api-types/v10"; +var SelectMenuBuilder = class extends ComponentBuilder { + constructor(data) { + const { options, ...initData } = data ?? {}; + super({ type: ComponentType2.SelectMenu, ...initData }); + __publicField(this, "options"); + this.options = options?.map((o) => new SelectMenuOptionBuilder(o)) ?? []; + } + setPlaceholder(placeholder) { + this.data.placeholder = placeholderValidator.parse(placeholder); + return this; + } + setMinValues(minValues) { + this.data.min_values = minMaxValidator.parse(minValues); + return this; + } + setMaxValues(maxValues) { + this.data.max_values = minMaxValidator.parse(maxValues); + return this; + } + setCustomId(customId) { + this.data.custom_id = customIdValidator.parse(customId); + return this; + } + setDisabled(disabled = true) { + this.data.disabled = disabledValidator.parse(disabled); + return this; + } + addOptions(...options) { + options = normalizeArray(options); + optionsLengthValidator.parse(this.options.length + options.length); + this.options.push(...options.map((option) => option instanceof SelectMenuOptionBuilder ? option : new SelectMenuOptionBuilder(optionValidator.parse(option)))); + return this; + } + setOptions(...options) { + options = normalizeArray(options); + optionsLengthValidator.parse(options.length); + this.options.splice(0, this.options.length, ...options.map((option) => option instanceof SelectMenuOptionBuilder ? option : new SelectMenuOptionBuilder(optionValidator.parse(option)))); + return this; + } + toJSON() { + validateRequiredSelectMenuParameters(this.options, this.data.custom_id); + return { + ...this.data, + options: this.options.map((o) => o.toJSON()) + }; + } +}; +__name(SelectMenuBuilder, "SelectMenuBuilder"); + +// src/components/textInput/TextInput.ts +import { ComponentType as ComponentType3 } from "discord-api-types/v10"; +import isEqual from "fast-deep-equal"; + +// src/components/textInput/Assertions.ts +var Assertions_exports3 = {}; +__export(Assertions_exports3, { + labelValidator: () => labelValidator, + maxLengthValidator: () => maxLengthValidator, + minLengthValidator: () => minLengthValidator, + placeholderValidator: () => placeholderValidator2, + requiredValidator: () => requiredValidator, + textInputStyleValidator: () => textInputStyleValidator, + validateRequiredParameters: () => validateRequiredParameters, + valueValidator: () => valueValidator +}); +import { s as s3 } from "@sapphire/shapeshift"; +import { TextInputStyle } from "discord-api-types/v10"; +var textInputStyleValidator = s3.nativeEnum(TextInputStyle); +var minLengthValidator = s3.number.int.greaterThanOrEqual(0).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled); +var maxLengthValidator = s3.number.int.greaterThanOrEqual(1).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled); +var requiredValidator = s3.boolean; +var valueValidator = s3.string.lengthLessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled); +var placeholderValidator2 = s3.string.lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled); +var labelValidator = s3.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled); +function validateRequiredParameters(customId, style, label) { + customIdValidator.parse(customId); + textInputStyleValidator.parse(style); + labelValidator.parse(label); +} +__name(validateRequiredParameters, "validateRequiredParameters"); + +// src/util/jsonEncodable.ts +function isJSONEncodable(maybeEncodable) { + return maybeEncodable !== null && typeof maybeEncodable === "object" && "toJSON" in maybeEncodable; +} +__name(isJSONEncodable, "isJSONEncodable"); + +// src/components/textInput/TextInput.ts +var TextInputBuilder = class extends ComponentBuilder { + constructor(data) { + super({ type: ComponentType3.TextInput, ...data }); + } + setCustomId(customId) { + this.data.custom_id = customIdValidator.parse(customId); + return this; + } + setLabel(label) { + this.data.label = labelValidator.parse(label); + return this; + } + setStyle(style) { + this.data.style = textInputStyleValidator.parse(style); + return this; + } + setMinLength(minLength) { + this.data.min_length = minLengthValidator.parse(minLength); + return this; + } + setMaxLength(maxLength) { + this.data.max_length = maxLengthValidator.parse(maxLength); + return this; + } + setPlaceholder(placeholder) { + this.data.placeholder = placeholderValidator2.parse(placeholder); + return this; + } + setValue(value) { + this.data.value = valueValidator.parse(value); + return this; + } + setRequired(required = true) { + this.data.required = requiredValidator.parse(required); + return this; + } + toJSON() { + validateRequiredParameters(this.data.custom_id, this.data.style, this.data.label); + return { + ...this.data + }; + } + equals(other) { + if (isJSONEncodable(other)) { + return isEqual(other.toJSON(), this.data); + } + return isEqual(other, this.data); + } +}; +__name(TextInputBuilder, "TextInputBuilder"); + +// src/components/Components.ts +function createComponentBuilder(data) { + if (data instanceof ComponentBuilder) { + return data; + } + switch (data.type) { + case ComponentType4.ActionRow: + return new ActionRowBuilder(data); + case ComponentType4.Button: + return new ButtonBuilder(data); + case ComponentType4.SelectMenu: + return new SelectMenuBuilder(data); + case ComponentType4.TextInput: + return new TextInputBuilder(data); + default: + throw new Error(`Cannot properly serialize component type: ${data.type}`); + } +} +__name(createComponentBuilder, "createComponentBuilder"); + +// src/components/ActionRow.ts +var ActionRowBuilder = class extends ComponentBuilder { + constructor({ components, ...data } = {}) { + super({ type: ComponentType5.ActionRow, ...data }); + __publicField(this, "components"); + this.components = components?.map((c) => createComponentBuilder(c)) ?? []; + } + addComponents(...components) { + this.components.push(...normalizeArray(components)); + return this; + } + setComponents(...components) { + this.components.splice(0, this.components.length, ...normalizeArray(components)); + return this; + } + toJSON() { + return { + ...this.data, + components: this.components.map((component) => component.toJSON()) + }; + } +}; +__name(ActionRowBuilder, "ActionRowBuilder"); + +// src/interactions/modals/Assertions.ts +var Assertions_exports4 = {}; +__export(Assertions_exports4, { + componentsValidator: () => componentsValidator, + titleValidator: () => titleValidator, + validateRequiredParameters: () => validateRequiredParameters2 +}); +import { s as s4 } from "@sapphire/shapeshift"; +var titleValidator = s4.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled); +var componentsValidator = s4.instance(ActionRowBuilder).array.lengthGreaterThanOrEqual(1).setValidationEnabled(isValidationEnabled); +function validateRequiredParameters2(customId, title, components) { + customIdValidator.parse(customId); + titleValidator.parse(title); + componentsValidator.parse(components); +} +__name(validateRequiredParameters2, "validateRequiredParameters"); + +// src/interactions/modals/Modal.ts +var ModalBuilder = class { + constructor({ components, ...data } = {}) { + __publicField(this, "data"); + __publicField(this, "components", []); + this.data = { ...data }; + this.components = components?.map((c) => createComponentBuilder(c)) ?? []; + } + setTitle(title) { + this.data.title = titleValidator.parse(title); + return this; + } + setCustomId(customId) { + this.data.custom_id = customIdValidator.parse(customId); + return this; + } + addComponents(...components) { + this.components.push(...normalizeArray(components).map((component) => component instanceof ActionRowBuilder ? component : new ActionRowBuilder(component))); + return this; + } + setComponents(...components) { + this.components.splice(0, this.components.length, ...normalizeArray(components)); + return this; + } + toJSON() { + validateRequiredParameters2(this.data.custom_id, this.data.title, this.components); + return { + ...this.data, + components: this.components.map((component) => component.toJSON()) + }; + } +}; +__name(ModalBuilder, "ModalBuilder"); + +// src/interactions/slashCommands/Assertions.ts +var Assertions_exports5 = {}; +__export(Assertions_exports5, { + assertReturnOfBuilder: () => assertReturnOfBuilder, + localizationMapPredicate: () => localizationMapPredicate, + validateChoicesLength: () => validateChoicesLength, + validateDMPermission: () => validateDMPermission, + validateDefaultMemberPermissions: () => validateDefaultMemberPermissions, + validateDefaultPermission: () => validateDefaultPermission, + validateDescription: () => validateDescription, + validateLocale: () => validateLocale, + validateLocalizationMap: () => validateLocalizationMap, + validateMaxOptionsLength: () => validateMaxOptionsLength, + validateName: () => validateName, + validateRequired: () => validateRequired, + validateRequiredParameters: () => validateRequiredParameters3 +}); +import { s as s5 } from "@sapphire/shapeshift"; +import { Locale } from "discord-api-types/v10"; +var namePredicate = s5.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^[\p{Ll}\p{Lm}\p{Lo}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+$/u).setValidationEnabled(isValidationEnabled); +function validateName(name) { + namePredicate.parse(name); +} +__name(validateName, "validateName"); +var descriptionPredicate2 = s5.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled); +var localePredicate = s5.nativeEnum(Locale); +function validateDescription(description) { + descriptionPredicate2.parse(description); +} +__name(validateDescription, "validateDescription"); +var maxArrayLengthPredicate = s5.unknown.array.lengthLessThanOrEqual(25).setValidationEnabled(isValidationEnabled); +function validateLocale(locale) { + return localePredicate.parse(locale); +} +__name(validateLocale, "validateLocale"); +function validateMaxOptionsLength(options) { + maxArrayLengthPredicate.parse(options); +} +__name(validateMaxOptionsLength, "validateMaxOptionsLength"); +function validateRequiredParameters3(name, description, options) { + validateName(name); + validateDescription(description); + validateMaxOptionsLength(options); +} +__name(validateRequiredParameters3, "validateRequiredParameters"); +var booleanPredicate = s5.boolean; +function validateDefaultPermission(value) { + booleanPredicate.parse(value); +} +__name(validateDefaultPermission, "validateDefaultPermission"); +function validateRequired(required) { + booleanPredicate.parse(required); +} +__name(validateRequired, "validateRequired"); +var choicesLengthPredicate = s5.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled); +function validateChoicesLength(amountAdding, choices) { + choicesLengthPredicate.parse((choices?.length ?? 0) + amountAdding); +} +__name(validateChoicesLength, "validateChoicesLength"); +function assertReturnOfBuilder(input, ExpectedInstanceOf) { + s5.instance(ExpectedInstanceOf).parse(input); +} +__name(assertReturnOfBuilder, "assertReturnOfBuilder"); +var localizationMapPredicate = s5.object(Object.fromEntries(Object.values(Locale).map((locale) => [locale, s5.string.nullish]))).strict.nullish.setValidationEnabled(isValidationEnabled); +function validateLocalizationMap(value) { + localizationMapPredicate.parse(value); +} +__name(validateLocalizationMap, "validateLocalizationMap"); +var dmPermissionPredicate = s5.boolean.nullish; +function validateDMPermission(value) { + dmPermissionPredicate.parse(value); +} +__name(validateDMPermission, "validateDMPermission"); +var memberPermissionPredicate = s5.union(s5.bigint.transform((value) => value.toString()), s5.number.safeInt.transform((value) => value.toString()), s5.string.regex(/^\d+$/)).nullish; +function validateDefaultMemberPermissions(permissions) { + return memberPermissionPredicate.parse(permissions); +} +__name(validateDefaultMemberPermissions, "validateDefaultMemberPermissions"); + +// src/interactions/slashCommands/SlashCommandBuilder.ts +import { mix as mix6 } from "ts-mixer"; + +// src/interactions/slashCommands/SlashCommandSubcommands.ts +import { + ApplicationCommandOptionType as ApplicationCommandOptionType11 +} from "discord-api-types/v10"; +import { mix as mix5 } from "ts-mixer"; + +// src/interactions/slashCommands/mixins/NameAndDescription.ts +var SharedNameAndDescription = class { + constructor() { + __publicField(this, "name"); + __publicField(this, "name_localizations"); + __publicField(this, "description"); + __publicField(this, "description_localizations"); + } + setName(name) { + validateName(name); + Reflect.set(this, "name", name); + return this; + } + setDescription(description) { + validateDescription(description); + Reflect.set(this, "description", description); + return this; + } + setNameLocalization(locale, localizedName) { + if (!this.name_localizations) { + Reflect.set(this, "name_localizations", {}); + } + const parsedLocale = validateLocale(locale); + if (localizedName === null) { + this.name_localizations[parsedLocale] = null; + return this; + } + validateName(localizedName); + this.name_localizations[parsedLocale] = localizedName; + return this; + } + setNameLocalizations(localizedNames) { + if (localizedNames === null) { + Reflect.set(this, "name_localizations", null); + return this; + } + Reflect.set(this, "name_localizations", {}); + Object.entries(localizedNames).forEach((args) => this.setNameLocalization(...args)); + return this; + } + setDescriptionLocalization(locale, localizedDescription) { + if (!this.description_localizations) { + Reflect.set(this, "description_localizations", {}); + } + const parsedLocale = validateLocale(locale); + if (localizedDescription === null) { + this.description_localizations[parsedLocale] = null; + return this; + } + validateDescription(localizedDescription); + this.description_localizations[parsedLocale] = localizedDescription; + return this; + } + setDescriptionLocalizations(localizedDescriptions) { + if (localizedDescriptions === null) { + Reflect.set(this, "description_localizations", null); + return this; + } + Reflect.set(this, "description_localizations", {}); + Object.entries(localizedDescriptions).forEach((args) => this.setDescriptionLocalization(...args)); + return this; + } +}; +__name(SharedNameAndDescription, "SharedNameAndDescription"); + +// src/interactions/slashCommands/options/attachment.ts +import { ApplicationCommandOptionType } from "discord-api-types/v10"; + +// src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts +var ApplicationCommandOptionBase = class extends SharedNameAndDescription { + constructor() { + super(...arguments); + __publicField(this, "required", false); + } + setRequired(required) { + validateRequired(required); + Reflect.set(this, "required", required); + return this; + } + runRequiredValidations() { + validateRequiredParameters3(this.name, this.description, []); + validateLocalizationMap(this.name_localizations); + validateLocalizationMap(this.description_localizations); + validateRequired(this.required); + } +}; +__name(ApplicationCommandOptionBase, "ApplicationCommandOptionBase"); + +// src/interactions/slashCommands/options/attachment.ts +var SlashCommandAttachmentOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", ApplicationCommandOptionType.Attachment); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandAttachmentOption, "SlashCommandAttachmentOption"); + +// src/interactions/slashCommands/options/boolean.ts +import { ApplicationCommandOptionType as ApplicationCommandOptionType2 } from "discord-api-types/v10"; +var SlashCommandBooleanOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", ApplicationCommandOptionType2.Boolean); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandBooleanOption, "SlashCommandBooleanOption"); + +// src/interactions/slashCommands/options/channel.ts +import { ApplicationCommandOptionType as ApplicationCommandOptionType3 } from "discord-api-types/v10"; +import { mix } from "ts-mixer"; + +// src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts +import { s as s6 } from "@sapphire/shapeshift"; +import { ChannelType } from "discord-api-types/v10"; +var allowedChannelTypes = [ + ChannelType.GuildText, + ChannelType.GuildVoice, + ChannelType.GuildCategory, + ChannelType.GuildNews, + ChannelType.GuildNewsThread, + ChannelType.GuildPublicThread, + ChannelType.GuildPrivateThread, + ChannelType.GuildStageVoice +]; +var channelTypesPredicate = s6.array(s6.union(...allowedChannelTypes.map((type) => s6.literal(type)))); +var ApplicationCommandOptionChannelTypesMixin = class { + constructor() { + __publicField(this, "channel_types"); + } + addChannelTypes(...channelTypes) { + if (this.channel_types === void 0) { + Reflect.set(this, "channel_types", []); + } + this.channel_types.push(...channelTypesPredicate.parse(channelTypes)); + return this; + } +}; +__name(ApplicationCommandOptionChannelTypesMixin, "ApplicationCommandOptionChannelTypesMixin"); + +// src/interactions/slashCommands/options/channel.ts +var SlashCommandChannelOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", ApplicationCommandOptionType3.Channel); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandChannelOption, "SlashCommandChannelOption"); +SlashCommandChannelOption = __decorateClass([ + mix(ApplicationCommandOptionChannelTypesMixin) +], SlashCommandChannelOption); + +// src/interactions/slashCommands/options/integer.ts +import { s as s8 } from "@sapphire/shapeshift"; +import { ApplicationCommandOptionType as ApplicationCommandOptionType5 } from "discord-api-types/v10"; +import { mix as mix2 } from "ts-mixer"; + +// src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts +var ApplicationCommandNumericOptionMinMaxValueMixin = class { + constructor() { + __publicField(this, "max_value"); + __publicField(this, "min_value"); + } +}; +__name(ApplicationCommandNumericOptionMinMaxValueMixin, "ApplicationCommandNumericOptionMinMaxValueMixin"); + +// src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.ts +import { s as s7 } from "@sapphire/shapeshift"; +import { ApplicationCommandOptionType as ApplicationCommandOptionType4 } from "discord-api-types/v10"; +var stringPredicate = s7.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100); +var numberPredicate = s7.number.greaterThan(-Infinity).lessThan(Infinity); +var choicesPredicate = s7.object({ + name: stringPredicate, + name_localizations: localizationMapPredicate, + value: s7.union(stringPredicate, numberPredicate) +}).array; +var booleanPredicate2 = s7.boolean; +var ApplicationCommandOptionWithChoicesAndAutocompleteMixin = class { + constructor() { + __publicField(this, "choices"); + __publicField(this, "autocomplete"); + __publicField(this, "type"); + } + addChoices(...choices) { + if (choices.length > 0 && this.autocomplete) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + choicesPredicate.parse(choices); + if (this.choices === void 0) { + Reflect.set(this, "choices", []); + } + validateChoicesLength(choices.length, this.choices); + for (const { name, name_localizations, value } of choices) { + if (this.type === ApplicationCommandOptionType4.String) { + stringPredicate.parse(value); + } else { + numberPredicate.parse(value); + } + this.choices.push({ name, name_localizations, value }); + } + return this; + } + setChoices(...choices) { + if (choices.length > 0 && this.autocomplete) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + choicesPredicate.parse(choices); + Reflect.set(this, "choices", []); + this.addChoices(...choices); + return this; + } + setAutocomplete(autocomplete) { + booleanPredicate2.parse(autocomplete); + if (autocomplete && Array.isArray(this.choices) && this.choices.length > 0) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + Reflect.set(this, "autocomplete", autocomplete); + return this; + } +}; +__name(ApplicationCommandOptionWithChoicesAndAutocompleteMixin, "ApplicationCommandOptionWithChoicesAndAutocompleteMixin"); + +// src/interactions/slashCommands/options/integer.ts +var numberValidator = s8.number.int; +var SlashCommandIntegerOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", ApplicationCommandOptionType5.Integer); + } + setMaxValue(max) { + numberValidator.parse(max); + Reflect.set(this, "max_value", max); + return this; + } + setMinValue(min) { + numberValidator.parse(min); + Reflect.set(this, "min_value", min); + return this; + } + toJSON() { + this.runRequiredValidations(); + if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + return { ...this }; + } +}; +__name(SlashCommandIntegerOption, "SlashCommandIntegerOption"); +SlashCommandIntegerOption = __decorateClass([ + mix2(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin) +], SlashCommandIntegerOption); + +// src/interactions/slashCommands/options/mentionable.ts +import { ApplicationCommandOptionType as ApplicationCommandOptionType6 } from "discord-api-types/v10"; +var SlashCommandMentionableOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", ApplicationCommandOptionType6.Mentionable); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandMentionableOption, "SlashCommandMentionableOption"); + +// src/interactions/slashCommands/options/number.ts +import { s as s9 } from "@sapphire/shapeshift"; +import { ApplicationCommandOptionType as ApplicationCommandOptionType7 } from "discord-api-types/v10"; +import { mix as mix3 } from "ts-mixer"; +var numberValidator2 = s9.number; +var SlashCommandNumberOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", ApplicationCommandOptionType7.Number); + } + setMaxValue(max) { + numberValidator2.parse(max); + Reflect.set(this, "max_value", max); + return this; + } + setMinValue(min) { + numberValidator2.parse(min); + Reflect.set(this, "min_value", min); + return this; + } + toJSON() { + this.runRequiredValidations(); + if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + return { ...this }; + } +}; +__name(SlashCommandNumberOption, "SlashCommandNumberOption"); +SlashCommandNumberOption = __decorateClass([ + mix3(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin) +], SlashCommandNumberOption); + +// src/interactions/slashCommands/options/role.ts +import { ApplicationCommandOptionType as ApplicationCommandOptionType8 } from "discord-api-types/v10"; +var SlashCommandRoleOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", ApplicationCommandOptionType8.Role); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandRoleOption, "SlashCommandRoleOption"); + +// src/interactions/slashCommands/options/string.ts +import { s as s10 } from "@sapphire/shapeshift"; +import { ApplicationCommandOptionType as ApplicationCommandOptionType9 } from "discord-api-types/v10"; +import { mix as mix4 } from "ts-mixer"; +var minLengthValidator2 = s10.number.greaterThanOrEqual(0).lessThanOrEqual(6e3); +var maxLengthValidator2 = s10.number.greaterThanOrEqual(1).lessThanOrEqual(6e3); +var SlashCommandStringOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", ApplicationCommandOptionType9.String); + __publicField(this, "max_length"); + __publicField(this, "min_length"); + } + setMaxLength(max) { + maxLengthValidator2.parse(max); + Reflect.set(this, "max_length", max); + return this; + } + setMinLength(min) { + minLengthValidator2.parse(min); + Reflect.set(this, "min_length", min); + return this; + } + toJSON() { + this.runRequiredValidations(); + if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) { + throw new RangeError("Autocomplete and choices are mutually exclusive to each other."); + } + return { ...this }; + } +}; +__name(SlashCommandStringOption, "SlashCommandStringOption"); +SlashCommandStringOption = __decorateClass([ + mix4(ApplicationCommandOptionWithChoicesAndAutocompleteMixin) +], SlashCommandStringOption); + +// src/interactions/slashCommands/options/user.ts +import { ApplicationCommandOptionType as ApplicationCommandOptionType10 } from "discord-api-types/v10"; +var SlashCommandUserOption = class extends ApplicationCommandOptionBase { + constructor() { + super(...arguments); + __publicField(this, "type", ApplicationCommandOptionType10.User); + } + toJSON() { + this.runRequiredValidations(); + return { ...this }; + } +}; +__name(SlashCommandUserOption, "SlashCommandUserOption"); + +// src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts +var SharedSlashCommandOptions = class { + constructor() { + __publicField(this, "options"); + } + addBooleanOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandBooleanOption); + } + addUserOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandUserOption); + } + addChannelOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandChannelOption); + } + addRoleOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandRoleOption); + } + addAttachmentOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandAttachmentOption); + } + addMentionableOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandMentionableOption); + } + addStringOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandStringOption); + } + addIntegerOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandIntegerOption); + } + addNumberOption(input) { + return this._sharedAddOptionMethod(input, SlashCommandNumberOption); + } + _sharedAddOptionMethod(input, Instance) { + const { options } = this; + validateMaxOptionsLength(options); + const result = typeof input === "function" ? input(new Instance()) : input; + assertReturnOfBuilder(result, Instance); + options.push(result); + return this; + } +}; +__name(SharedSlashCommandOptions, "SharedSlashCommandOptions"); + +// src/interactions/slashCommands/SlashCommandSubcommands.ts +var SlashCommandSubcommandGroupBuilder = class { + constructor() { + __publicField(this, "name"); + __publicField(this, "description"); + __publicField(this, "options", []); + } + addSubcommand(input) { + const { options } = this; + validateMaxOptionsLength(options); + const result = typeof input === "function" ? input(new SlashCommandSubcommandBuilder()) : input; + assertReturnOfBuilder(result, SlashCommandSubcommandBuilder); + options.push(result); + return this; + } + toJSON() { + validateRequiredParameters3(this.name, this.description, this.options); + return { + type: ApplicationCommandOptionType11.SubcommandGroup, + name: this.name, + name_localizations: this.name_localizations, + description: this.description, + description_localizations: this.description_localizations, + options: this.options.map((option) => option.toJSON()) + }; + } +}; +__name(SlashCommandSubcommandGroupBuilder, "SlashCommandSubcommandGroupBuilder"); +SlashCommandSubcommandGroupBuilder = __decorateClass([ + mix5(SharedNameAndDescription) +], SlashCommandSubcommandGroupBuilder); +var SlashCommandSubcommandBuilder = class { + constructor() { + __publicField(this, "name"); + __publicField(this, "description"); + __publicField(this, "options", []); + } + toJSON() { + validateRequiredParameters3(this.name, this.description, this.options); + return { + type: ApplicationCommandOptionType11.Subcommand, + name: this.name, + name_localizations: this.name_localizations, + description: this.description, + description_localizations: this.description_localizations, + options: this.options.map((option) => option.toJSON()) + }; + } +}; +__name(SlashCommandSubcommandBuilder, "SlashCommandSubcommandBuilder"); +SlashCommandSubcommandBuilder = __decorateClass([ + mix5(SharedNameAndDescription, SharedSlashCommandOptions) +], SlashCommandSubcommandBuilder); + +// src/interactions/slashCommands/SlashCommandBuilder.ts +var SlashCommandBuilder = class { + constructor() { + __publicField(this, "name"); + __publicField(this, "name_localizations"); + __publicField(this, "description"); + __publicField(this, "description_localizations"); + __publicField(this, "options", []); + __publicField(this, "default_permission"); + __publicField(this, "default_member_permissions"); + __publicField(this, "dm_permission"); + } + toJSON() { + validateRequiredParameters3(this.name, this.description, this.options); + validateLocalizationMap(this.name_localizations); + validateLocalizationMap(this.description_localizations); + return { + ...this, + options: this.options.map((option) => option.toJSON()) + }; + } + setDefaultPermission(value) { + validateDefaultPermission(value); + Reflect.set(this, "default_permission", value); + return this; + } + setDefaultMemberPermissions(permissions) { + const permissionValue = validateDefaultMemberPermissions(permissions); + Reflect.set(this, "default_member_permissions", permissionValue); + return this; + } + setDMPermission(enabled) { + validateDMPermission(enabled); + Reflect.set(this, "dm_permission", enabled); + return this; + } + addSubcommandGroup(input) { + const { options } = this; + validateMaxOptionsLength(options); + const result = typeof input === "function" ? input(new SlashCommandSubcommandGroupBuilder()) : input; + assertReturnOfBuilder(result, SlashCommandSubcommandGroupBuilder); + options.push(result); + return this; + } + addSubcommand(input) { + const { options } = this; + validateMaxOptionsLength(options); + const result = typeof input === "function" ? input(new SlashCommandSubcommandBuilder()) : input; + assertReturnOfBuilder(result, SlashCommandSubcommandBuilder); + options.push(result); + return this; + } +}; +__name(SlashCommandBuilder, "SlashCommandBuilder"); +SlashCommandBuilder = __decorateClass([ + mix6(SharedSlashCommandOptions, SharedNameAndDescription) +], SlashCommandBuilder); + +// src/interactions/contextMenuCommands/Assertions.ts +var Assertions_exports6 = {}; +__export(Assertions_exports6, { + validateDMPermission: () => validateDMPermission2, + validateDefaultMemberPermissions: () => validateDefaultMemberPermissions2, + validateDefaultPermission: () => validateDefaultPermission2, + validateName: () => validateName2, + validateRequiredParameters: () => validateRequiredParameters4, + validateType: () => validateType +}); +import { s as s11 } from "@sapphire/shapeshift"; +import { ApplicationCommandType } from "discord-api-types/v10"; +var namePredicate2 = s11.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^( *[\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+ *)+$/u).setValidationEnabled(isValidationEnabled); +var typePredicate = s11.union(s11.literal(ApplicationCommandType.User), s11.literal(ApplicationCommandType.Message)).setValidationEnabled(isValidationEnabled); +var booleanPredicate3 = s11.boolean; +function validateDefaultPermission2(value) { + booleanPredicate3.parse(value); +} +__name(validateDefaultPermission2, "validateDefaultPermission"); +function validateName2(name) { + namePredicate2.parse(name); +} +__name(validateName2, "validateName"); +function validateType(type) { + typePredicate.parse(type); +} +__name(validateType, "validateType"); +function validateRequiredParameters4(name, type) { + validateName2(name); + validateType(type); +} +__name(validateRequiredParameters4, "validateRequiredParameters"); +var dmPermissionPredicate2 = s11.boolean.nullish; +function validateDMPermission2(value) { + dmPermissionPredicate2.parse(value); +} +__name(validateDMPermission2, "validateDMPermission"); +var memberPermissionPredicate2 = s11.union(s11.bigint.transform((value) => value.toString()), s11.number.safeInt.transform((value) => value.toString()), s11.string.regex(/^\d+$/)).nullish; +function validateDefaultMemberPermissions2(permissions) { + return memberPermissionPredicate2.parse(permissions); +} +__name(validateDefaultMemberPermissions2, "validateDefaultMemberPermissions"); + +// src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts +var ContextMenuCommandBuilder = class { + constructor() { + __publicField(this, "name"); + __publicField(this, "name_localizations"); + __publicField(this, "type"); + __publicField(this, "default_permission"); + __publicField(this, "default_member_permissions"); + __publicField(this, "dm_permission"); + } + setName(name) { + validateName2(name); + Reflect.set(this, "name", name); + return this; + } + setType(type) { + validateType(type); + Reflect.set(this, "type", type); + return this; + } + setDefaultPermission(value) { + validateDefaultPermission2(value); + Reflect.set(this, "default_permission", value); + return this; + } + setDefaultMemberPermissions(permissions) { + const permissionValue = validateDefaultMemberPermissions2(permissions); + Reflect.set(this, "default_member_permissions", permissionValue); + return this; + } + setDMPermission(enabled) { + validateDMPermission2(enabled); + Reflect.set(this, "dm_permission", enabled); + return this; + } + setNameLocalization(locale, localizedName) { + if (!this.name_localizations) { + Reflect.set(this, "name_localizations", {}); + } + const parsedLocale = validateLocale(locale); + if (localizedName === null) { + this.name_localizations[parsedLocale] = null; + return this; + } + validateName2(localizedName); + this.name_localizations[parsedLocale] = localizedName; + return this; + } + setNameLocalizations(localizedNames) { + if (localizedNames === null) { + Reflect.set(this, "name_localizations", null); + return this; + } + Reflect.set(this, "name_localizations", {}); + Object.entries(localizedNames).forEach((args) => this.setNameLocalization(...args)); + return this; + } + toJSON() { + validateRequiredParameters4(this.name, this.type); + validateLocalizationMap(this.name_localizations); + return { ...this }; + } +}; +__name(ContextMenuCommandBuilder, "ContextMenuCommandBuilder"); + +// src/util/equatable.ts +function isEquatable(maybeEquatable) { + return maybeEquatable !== null && typeof maybeEquatable === "object" && "equals" in maybeEquatable; +} +__name(isEquatable, "isEquatable"); + +// src/util/componentUtil.ts +function embedLength(data) { + return (data.title?.length ?? 0) + (data.description?.length ?? 0) + (data.fields?.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) ?? 0) + (data.footer?.text.length ?? 0) + (data.author?.name.length ?? 0); +} +__name(embedLength, "embedLength"); +export { + ActionRowBuilder, + ApplicationCommandNumericOptionMinMaxValueMixin, + ApplicationCommandOptionBase, + ApplicationCommandOptionChannelTypesMixin, + ApplicationCommandOptionWithChoicesAndAutocompleteMixin, + ButtonBuilder, + Assertions_exports2 as ComponentAssertions, + ComponentBuilder, + Assertions_exports6 as ContextMenuCommandAssertions, + ContextMenuCommandBuilder, + Assertions_exports as EmbedAssertions, + EmbedBuilder, + Faces, + Assertions_exports4 as ModalAssertions, + ModalBuilder, + SelectMenuBuilder, + SelectMenuOptionBuilder, + SharedNameAndDescription, + SharedSlashCommandOptions, + Assertions_exports5 as SlashCommandAssertions, + SlashCommandAttachmentOption, + SlashCommandBooleanOption, + SlashCommandBuilder, + SlashCommandChannelOption, + SlashCommandIntegerOption, + SlashCommandMentionableOption, + SlashCommandNumberOption, + SlashCommandRoleOption, + SlashCommandStringOption, + SlashCommandSubcommandBuilder, + SlashCommandSubcommandGroupBuilder, + SlashCommandUserOption, + Assertions_exports3 as TextInputAssertions, + TextInputBuilder, + TimestampStyles, + blockQuote, + bold, + channelMention, + codeBlock, + createComponentBuilder, + disableValidators, + embedLength, + enableValidators, + formatEmoji, + hideLinkEmbed, + hyperlink, + inlineCode, + isEquatable, + isJSONEncodable, + isValidationEnabled, + italic, + normalizeArray, + quote, + roleMention, + spoiler, + strikethrough, + time, + underscore, + userMention +}; //# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/dist/index.mjs.map b/node_modules/@discordjs/builders/dist/index.mjs.map index ffcd451..9480c31 100644 --- a/node_modules/@discordjs/builders/dist/index.mjs.map +++ b/node_modules/@discordjs/builders/dist/index.mjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/messages/embed/Assertions.ts","../src/messages/embed/Embed.ts","../src/messages/formatters.ts","../src/interactions/slashCommands/Assertions.ts","../src/interactions/slashCommands/SlashCommandBuilder.ts","../src/interactions/slashCommands/options/boolean.ts","../src/interactions/slashCommands/mixins/NameAndDescription.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts","../src/interactions/slashCommands/options/channel.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts","../src/interactions/slashCommands/options/integer.ts","../src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.ts","../src/interactions/slashCommands/options/mentionable.ts","../src/interactions/slashCommands/options/number.ts","../src/interactions/slashCommands/options/role.ts","../src/interactions/slashCommands/options/string.ts","../src/interactions/slashCommands/options/user.ts","../src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts","../src/interactions/slashCommands/SlashCommandSubcommands.ts","../src/interactions/contextMenuCommands/Assertions.ts","../src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts"],"sourcesContent":["import type { APIEmbedField } from 'discord-api-types/v9';\nimport { z } from 'zod';\n\nexport const fieldNamePredicate = z.string().min(1).max(256);\n\nexport const fieldValuePredicate = z.string().min(1).max(1024);\n\nexport const fieldInlinePredicate = z.boolean().optional();\n\nexport const embedFieldPredicate = z.object({\n\tname: fieldNamePredicate,\n\tvalue: fieldValuePredicate,\n\tinline: fieldInlinePredicate,\n});\n\nexport const embedFieldsArrayPredicate = embedFieldPredicate.array();\n\nexport const fieldLengthPredicate = z.number().lte(25);\n\nexport function validateFieldLength(fields: APIEmbedField[], amountAdding: number): void {\n\tfieldLengthPredicate.parse(fields.length + amountAdding);\n}\n\nexport const authorNamePredicate = fieldNamePredicate.nullable();\n\nexport const urlPredicate = z.string().url().nullish();\n\nexport const colorPredicate = z.number().gte(0).lte(0xffffff).nullable();\n\nexport const descriptionPredicate = z.string().min(1).max(4096).nullable();\n\nexport const footerTextPredicate = z.string().min(1).max(2048).nullable();\n\nexport const timestampPredicate = z.union([z.number(), z.date()]).nullable();\n\nexport const titlePredicate = fieldNamePredicate.nullable();\n","import type {\n\tAPIEmbed,\n\tAPIEmbedAuthor,\n\tAPIEmbedField,\n\tAPIEmbedFooter,\n\tAPIEmbedImage,\n\tAPIEmbedProvider,\n\tAPIEmbedThumbnail,\n\tAPIEmbedVideo,\n} from 'discord-api-types/v9';\nimport {\n\tauthorNamePredicate,\n\tcolorPredicate,\n\tdescriptionPredicate,\n\tembedFieldsArrayPredicate,\n\tfieldInlinePredicate,\n\tfieldNamePredicate,\n\tfieldValuePredicate,\n\tfooterTextPredicate,\n\ttimestampPredicate,\n\ttitlePredicate,\n\turlPredicate,\n\tvalidateFieldLength,\n} from './Assertions';\n\nexport interface AuthorOptions {\n\tname: string;\n\turl?: string;\n\ticonURL?: string;\n}\n\nexport interface FooterOptions {\n\ttext: string;\n\ticonURL?: string;\n}\n\n/**\n * Represents an embed in a message (image/video preview, rich embed, etc.)\n */\nexport class Embed implements APIEmbed {\n\t/**\n\t * An array of fields of this embed\n\t */\n\tpublic fields: APIEmbedField[];\n\n\t/**\n\t * The embed title\n\t */\n\tpublic title?: string;\n\n\t/**\n\t * The embed description\n\t */\n\tpublic description?: string;\n\n\t/**\n\t * The embed url\n\t */\n\tpublic url?: string;\n\n\t/**\n\t * The embed color\n\t */\n\tpublic color?: number;\n\n\t/**\n\t * The timestamp of the embed in the ISO format\n\t */\n\tpublic timestamp?: string;\n\n\t/**\n\t * The embed thumbnail data\n\t */\n\tpublic thumbnail?: APIEmbedThumbnail;\n\n\t/**\n\t * The embed image data\n\t */\n\tpublic image?: APIEmbedImage;\n\n\t/**\n\t * Received video data\n\t */\n\tpublic video?: APIEmbedVideo;\n\n\t/**\n\t * The embed author data\n\t */\n\tpublic author?: APIEmbedAuthor;\n\n\t/**\n\t * Received data about the embed provider\n\t */\n\tpublic provider?: APIEmbedProvider;\n\n\t/**\n\t * The embed footer data\n\t */\n\tpublic footer?: APIEmbedFooter;\n\n\tpublic constructor(data: APIEmbed = {}) {\n\t\tthis.title = data.title;\n\t\tthis.description = data.description;\n\t\tthis.url = data.url;\n\t\tthis.color = data.color;\n\t\tthis.thumbnail = data.thumbnail;\n\t\tthis.image = data.image;\n\t\tthis.video = data.video;\n\t\tthis.author = data.author;\n\t\tthis.provider = data.provider;\n\t\tthis.footer = data.footer;\n\t\tthis.fields = data.fields ?? [];\n\n\t\tif (data.timestamp) this.timestamp = new Date(data.timestamp).toISOString();\n\t}\n\n\t/**\n\t * The accumulated length for the embed title, description, fields, footer text, and author name\n\t */\n\tpublic get length(): number {\n\t\treturn (\n\t\t\t(this.title?.length ?? 0) +\n\t\t\t(this.description?.length ?? 0) +\n\t\t\tthis.fields.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) +\n\t\t\t(this.footer?.text.length ?? 0) +\n\t\t\t(this.author?.name.length ?? 0)\n\t\t);\n\t}\n\n\t/**\n\t * Adds a field to the embed (max 25)\n\t *\n\t * @param field The field to add.\n\t */\n\tpublic addField(field: APIEmbedField): this {\n\t\treturn this.addFields(field);\n\t}\n\n\t/**\n\t * Adds fields to the embed (max 25)\n\t *\n\t * @param fields The fields to add\n\t */\n\tpublic addFields(...fields: APIEmbedField[]): this {\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(this.fields, fields.length);\n\n\t\tthis.fields.push(...Embed.normalizeFields(...fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts fields in the embed (max 25)\n\t *\n\t * @param index The index to start at\n\t * @param deleteCount The number of fields to remove\n\t * @param fields The replacing field objects\n\t */\n\tpublic spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this {\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(this.fields, fields.length - deleteCount);\n\n\t\tthis.fields.splice(index, deleteCount, ...Embed.normalizeFields(...fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the author of this embed\n\t *\n\t * @param options The options for the author\n\t */\n\tpublic setAuthor(options: AuthorOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.author = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\tconst { name, iconURL, url } = options;\n\t\t// Data assertions\n\t\tauthorNamePredicate.parse(name);\n\t\turlPredicate.parse(iconURL);\n\t\turlPredicate.parse(url);\n\n\t\tthis.author = { name, url, icon_url: iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the color of this embed\n\t *\n\t * @param color The color of the embed\n\t */\n\tpublic setColor(color: number | null): this {\n\t\t// Data assertions\n\t\tcolorPredicate.parse(color);\n\n\t\tthis.color = color ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this embed\n\t *\n\t * @param description The description\n\t */\n\tpublic setDescription(description: string | null): this {\n\t\t// Data assertions\n\t\tdescriptionPredicate.parse(description);\n\n\t\tthis.description = description ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the footer of this embed\n\t *\n\t * @param options The options for the footer\n\t */\n\tpublic setFooter(options: FooterOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.footer = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\tconst { text, iconURL } = options;\n\t\t// Data assertions\n\t\tfooterTextPredicate.parse(text);\n\t\turlPredicate.parse(iconURL);\n\n\t\tthis.footer = { text, icon_url: iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the image of this embed\n\t *\n\t * @param url The URL of the image\n\t */\n\tpublic setImage(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.image = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the thumbnail of this embed\n\t *\n\t * @param url The URL of the thumbnail\n\t */\n\tpublic setThumbnail(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.thumbnail = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the timestamp of this embed\n\t *\n\t * @param timestamp The timestamp or date\n\t */\n\tpublic setTimestamp(timestamp: number | Date | null = Date.now()): this {\n\t\t// Data assertions\n\t\ttimestampPredicate.parse(timestamp);\n\n\t\tthis.timestamp = timestamp ? new Date(timestamp).toISOString() : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the title of this embed\n\t *\n\t * @param title The title\n\t */\n\tpublic setTitle(title: string | null): this {\n\t\t// Data assertions\n\t\ttitlePredicate.parse(title);\n\n\t\tthis.title = title ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL of this embed\n\t *\n\t * @param url The URL\n\t */\n\tpublic setURL(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.url = url ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Transforms the embed to a plain object\n\t */\n\tpublic toJSON(): APIEmbed {\n\t\treturn { ...this };\n\t}\n\n\t/**\n\t * Normalizes field input and resolves strings\n\t *\n\t * @param fields Fields to normalize\n\t */\n\tpublic static normalizeFields(...fields: APIEmbedField[]): APIEmbedField[] {\n\t\treturn fields.flat(Infinity).map((field) => {\n\t\t\tfieldNamePredicate.parse(field.name);\n\t\t\tfieldValuePredicate.parse(field.value);\n\t\t\tfieldInlinePredicate.parse(field.inline);\n\n\t\t\treturn { name: field.name, value: field.value, inline: field.inline ?? undefined };\n\t\t});\n\t}\n}\n","import type { Snowflake } from 'discord-api-types/globals';\nimport type { URL } from 'url';\n\n/**\n * Wraps the content inside a codeblock with no language\n *\n * @param content The content to wrap\n */\nexport function codeBlock(content: C): `\\`\\`\\`\\n${C}\\`\\`\\``;\n\n/**\n * Wraps the content inside a codeblock with the specified language\n *\n * @param language The language for the codeblock\n * @param content The content to wrap\n */\nexport function codeBlock(language: L, content: C): `\\`\\`\\`${L}\\n${C}\\`\\`\\``;\nexport function codeBlock(language: string, content?: string): string {\n\treturn typeof content === 'undefined' ? `\\`\\`\\`\\n${language}\\`\\`\\`` : `\\`\\`\\`${language}\\n${content}\\`\\`\\``;\n}\n\n/**\n * Wraps the content inside \\`backticks\\`, which formats it as inline code\n *\n * @param content The content to wrap\n */\nexport function inlineCode(content: C): `\\`${C}\\`` {\n\treturn `\\`${content}\\``;\n}\n\n/**\n * Formats the content into italic text\n *\n * @param content The content to wrap\n */\nexport function italic(content: C): `_${C}_` {\n\treturn `_${content}_`;\n}\n\n/**\n * Formats the content into bold text\n *\n * @param content The content to wrap\n */\nexport function bold(content: C): `**${C}**` {\n\treturn `**${content}**`;\n}\n\n/**\n * Formats the content into underscored text\n *\n * @param content The content to wrap\n */\nexport function underscore(content: C): `__${C}__` {\n\treturn `__${content}__`;\n}\n\n/**\n * Formats the content into strike-through text\n *\n * @param content The content to wrap\n */\nexport function strikethrough(content: C): `~~${C}~~` {\n\treturn `~~${content}~~`;\n}\n\n/**\n * Formats the content into a quote. This needs to be at the start of the line for Discord to format it\n *\n * @param content The content to wrap\n */\nexport function quote(content: C): `> ${C}` {\n\treturn `> ${content}`;\n}\n\n/**\n * Formats the content into a block quote. This needs to be at the start of the line for Discord to format it\n *\n * @param content The content to wrap\n */\nexport function blockQuote(content: C): `>>> ${C}` {\n\treturn `>>> ${content}`;\n}\n\n/**\n * Wraps the URL into `<>`, which stops it from embedding\n *\n * @param url The URL to wrap\n */\nexport function hideLinkEmbed(url: C): `<${C}>`;\n\n/**\n * Wraps the URL into `<>`, which stops it from embedding\n *\n * @param url The URL to wrap\n */\nexport function hideLinkEmbed(url: URL): `<${string}>`;\nexport function hideLinkEmbed(url: string | URL) {\n\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\treturn `<${url}>`;\n}\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content The content to display\n * @param url The URL the content links to\n */\nexport function hyperlink(content: C, url: URL): `[${C}](${string})`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content The content to display\n * @param url The URL the content links to\n */\nexport function hyperlink(content: C, url: U): `[${C}](${U})`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content The content to display\n * @param url The URL the content links to\n * @param title The title shown when hovering on the masked link\n */\nexport function hyperlink(\n\tcontent: C,\n\turl: URL,\n\ttitle: T,\n): `[${C}](${string} \"${T}\")`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content The content to display\n * @param url The URL the content links to\n * @param title The title shown when hovering on the masked link\n */\nexport function hyperlink(\n\tcontent: C,\n\turl: U,\n\ttitle: T,\n): `[${C}](${U} \"${T}\")`;\nexport function hyperlink(content: string, url: string | URL, title?: string) {\n\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\treturn title ? `[${content}](${url} \"${title}\")` : `[${content}](${url})`;\n}\n\n/**\n * Wraps the content inside spoiler (hidden text)\n *\n * @param content The content to wrap\n */\nexport function spoiler(content: C): `||${C}||` {\n\treturn `||${content}||`;\n}\n\n/**\n * Formats a user ID into a user mention\n *\n * @param userId The user ID to format\n */\nexport function userMention(userId: C): `<@${C}>` {\n\treturn `<@${userId}>`;\n}\n\n/**\n * Formats a user ID into a member-nickname mention\n *\n * @param memberId The user ID to format\n */\nexport function memberNicknameMention(memberId: C): `<@!${C}>` {\n\treturn `<@!${memberId}>`;\n}\n\n/**\n * Formats a channel ID into a channel mention\n *\n * @param channelId The channel ID to format\n */\nexport function channelMention(channelId: C): `<#${C}>` {\n\treturn `<#${channelId}>`;\n}\n\n/**\n * Formats a role ID into a role mention\n *\n * @param roleId The role ID to format\n */\nexport function roleMention(roleId: C): `<@&${C}>` {\n\treturn `<@&${roleId}>`;\n}\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId The emoji ID to format\n */\nexport function formatEmoji(emojiId: C, animated?: false): `<:_:${C}>`;\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId The emoji ID to format\n * @param animated Whether the emoji is animated or not. Defaults to `false`\n */\nexport function formatEmoji(emojiId: C, animated?: true): ``;\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId The emoji ID to format\n * @param animated Whether the emoji is animated or not. Defaults to `false`\n */\nexport function formatEmoji(emojiId: C, animated = false): `` | `<:_:${C}>` {\n\treturn `<${animated ? 'a' : ''}:_:${emojiId}>`;\n}\n\n/**\n * Formats a date into a short date-time string\n *\n * @param date The date to format, defaults to the current time\n */\nexport function time(date?: Date): ``;\n\n/**\n * Formats a date given a format style\n *\n * @param date The date to format\n * @param style The style to use\n */\nexport function time(date: Date, style: S): ``;\n\n/**\n * Formats the given timestamp into a short date-time string\n *\n * @param seconds The time to format, represents an UNIX timestamp in seconds\n */\nexport function time(seconds: C): ``;\n\n/**\n * Formats the given timestamp into a short date-time string\n *\n * @param seconds The time to format, represents an UNIX timestamp in seconds\n * @param style The style to use\n */\nexport function time(seconds: C, style: S): ``;\nexport function time(timeOrSeconds?: number | Date, style?: TimestampStylesString): string {\n\tif (typeof timeOrSeconds !== 'number') {\n\t\ttimeOrSeconds = Math.floor((timeOrSeconds?.getTime() ?? Date.now()) / 1000);\n\t}\n\n\treturn typeof style === 'string' ? `` : ``;\n}\n\n/**\n * The [message formatting timestamp styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord\n */\nexport const TimestampStyles = {\n\t/**\n\t * Short time format, consisting of hours and minutes, e.g. 16:20\n\t */\n\tShortTime: 't',\n\n\t/**\n\t * Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30\n\t */\n\tLongTime: 'T',\n\n\t/**\n\t * Short date format, consisting of day, month, and year, e.g. 20/04/2021\n\t */\n\tShortDate: 'd',\n\n\t/**\n\t * Long date format, consisting of day, month, and year, e.g. 20 April 2021\n\t */\n\tLongDate: 'D',\n\n\t/**\n\t * Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20\n\t */\n\tShortDateTime: 'f',\n\n\t/**\n\t * Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20\n\t */\n\tLongDateTime: 'F',\n\n\t/**\n\t * Relative time format, consisting of a relative duration format, e.g. 2 months ago\n\t */\n\tRelativeTime: 'R',\n} as const;\n\n/**\n * The possible values, see {@link TimestampStyles} for more information\n */\nexport type TimestampStylesString = typeof TimestampStyles[keyof typeof TimestampStyles];\n\n/**\n * An enum with all the available faces from Discord's native slash commands\n */\nexport enum Faces {\n\t/**\n\t * ¯\\\\_(ツ)\\\\_/¯\n\t */\n\tShrug = '¯\\\\_(ツ)\\\\_/¯',\n\n\t/**\n\t * (╯°□°)╯︵ ┻━┻\n\t */\n\tTableflip = '(╯°□°)╯︵ ┻━┻',\n\n\t/**\n\t * ┬─┬ ノ( ゜-゜ノ)\n\t */\n\tUnflip = '┬─┬ ノ( ゜-゜ノ)',\n}\n","import is from '@sindresorhus/is';\nimport type { APIApplicationCommandOptionChoice } from 'discord-api-types/v9';\nimport { z } from 'zod';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder';\nimport type { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands';\n\nexport function validateRequiredParameters(\n\tname: string,\n\tdescription: string,\n\toptions: ToAPIApplicationCommandOptions[],\n) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert description conditions\n\tvalidateDescription(description);\n\n\t// Assert options conditions\n\tvalidateMaxOptionsLength(options);\n}\n\nconst namePredicate = z\n\t.string()\n\t.min(1)\n\t.max(32)\n\t.regex(/^[\\P{Lu}\\p{N}_-]+$/u);\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nconst descriptionPredicate = z.string().min(1).max(100);\n\nexport function validateDescription(description: unknown): asserts description is string {\n\tdescriptionPredicate.parse(description);\n}\n\nconst booleanPredicate = z.boolean();\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport function validateRequired(required: unknown): asserts required is boolean {\n\tbooleanPredicate.parse(required);\n}\n\nconst maxArrayLengthPredicate = z.unknown().array().max(25);\n\nexport function validateMaxOptionsLength(options: unknown): asserts options is ToAPIApplicationCommandOptions[] {\n\tmaxArrayLengthPredicate.parse(options);\n}\n\nexport function validateMaxChoicesLength(choices: APIApplicationCommandOptionChoice[]) {\n\tmaxArrayLengthPredicate.parse(choices);\n}\n\nexport function assertReturnOfBuilder<\n\tT extends ApplicationCommandOptionBase | SlashCommandSubcommandBuilder | SlashCommandSubcommandGroupBuilder,\n>(input: unknown, ExpectedInstanceOf: new () => T): asserts input is T {\n\tconst instanceName = ExpectedInstanceOf.name;\n\n\tif (is.nullOrUndefined(input)) {\n\t\tthrow new TypeError(\n\t\t\t`Expected to receive a ${instanceName} builder, got ${input === null ? 'null' : 'undefined'} instead.`,\n\t\t);\n\t}\n\n\tif (is.primitive(input)) {\n\t\tthrow new TypeError(`Expected to receive a ${instanceName} builder, got a primitive (${typeof input}) instead.`);\n\t}\n\n\tif (!(input instanceof ExpectedInstanceOf)) {\n\t\tconst casted = input as Record;\n\n\t\tconst constructorName = is.function_(input) ? input.name : casted.constructor.name;\n\t\tconst stringTag = Reflect.get(casted, Symbol.toStringTag) as string | undefined;\n\n\t\tconst fullResultName = stringTag ? `${constructorName} [${stringTag}]` : constructorName;\n\n\t\tthrow new TypeError(`Expected to receive a ${instanceName} builder, got ${fullResultName} instead.`);\n\t}\n}\n","import type { APIApplicationCommandOption, RESTPostAPIApplicationCommandsJSONBody } from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport {\n\tassertReturnOfBuilder,\n\tvalidateDefaultPermission,\n\tvalidateMaxOptionsLength,\n\tvalidateRequiredParameters,\n} from './Assertions';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription';\nimport { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands';\n\n@mix(SharedSlashCommandOptions, SharedNameAndDescription)\nexport class SlashCommandBuilder {\n\t/**\n\t * The name of this slash command\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this slash command\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The options of this slash command\n\t */\n\tpublic readonly options: ToAPIApplicationCommandOptions[] = [];\n\n\t/**\n\t * Whether the command is enabled by default when the app is added to a guild\n\t *\n\t * @default true\n\t */\n\tpublic readonly defaultPermission: boolean | undefined = undefined;\n\n\t/**\n\t * Returns the final data that should be sent to Discord.\n\t *\n\t * **Note:** Calling this function will validate required properties based on their conditions.\n\t */\n\tpublic toJSON(): RESTPostAPIApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tdescription: this.description,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t\tdefault_permission: this.defaultPermission,\n\t\t};\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * **Note**: If set to `false`, you will have to later `PUT` the permissions for this command.\n\t *\n\t * @param value Whether or not to enable this command by default\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'defaultPermission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds a new subcommand group to this command\n\t *\n\t * @param input A function that returns a subcommand group builder, or an already built builder\n\t */\n\tpublic addSubcommandGroup(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandGroupBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandGroupBuilder) => SlashCommandSubcommandGroupBuilder),\n\t): SlashCommandSubcommandsOnlyBuilder {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandGroupBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandGroupBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds a new subcommand to this command\n\t *\n\t * @param input A function that returns a subcommand builder, or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t): SlashCommandSubcommandsOnlyBuilder {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n}\n\nexport interface SlashCommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {}\n\nexport interface SlashCommandSubcommandsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tPick {}\n\nexport interface SlashCommandOptionsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tSharedSlashCommandOptions,\n\t\tPick {}\n\nexport interface ToAPIApplicationCommandOptions {\n\ttoJSON(): APIApplicationCommandOption;\n}\n","import { APIApplicationCommandBooleanOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandBooleanOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.Boolean as const;\n\n\tpublic toJSON(): APIApplicationCommandBooleanOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { validateDescription, validateName } from '../Assertions';\n\nexport class SharedNameAndDescription {\n\tpublic readonly name!: string;\n\tpublic readonly description!: string;\n\n\t/**\n\t * Sets the name\n\t *\n\t * @param name The name\n\t */\n\tpublic setName(name: string) {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description\n\t *\n\t * @param description The description\n\t */\n\tpublic setDescription(description: string) {\n\t\t// Assert the description matches the conditions\n\t\tvalidateDescription(description);\n\n\t\tReflect.set(this, 'description', description);\n\n\t\treturn this;\n\t}\n}\n","import type { APIApplicationCommandBasicOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { validateRequiredParameters, validateRequired } from '../Assertions';\nimport { SharedNameAndDescription } from './NameAndDescription';\n\nexport abstract class ApplicationCommandOptionBase extends SharedNameAndDescription {\n\tpublic abstract readonly type: ApplicationCommandOptionType;\n\n\tpublic readonly required = false;\n\n\t/**\n\t * Marks the option as required\n\t *\n\t * @param required If this option should be required\n\t */\n\tpublic setRequired(required: boolean) {\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(required);\n\n\t\tReflect.set(this, 'required', required);\n\n\t\treturn this;\n\t}\n\n\tpublic abstract toJSON(): APIApplicationCommandBasicOption;\n\n\tprotected runRequiredValidations() {\n\t\tvalidateRequiredParameters(this.name, this.description, []);\n\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(this.required);\n\t}\n}\n","import { APIApplicationCommandChannelOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionChannelTypesMixin } from '../mixins/ApplicationCommandOptionChannelTypesMixin';\n\n@mix(ApplicationCommandOptionChannelTypesMixin)\nexport class SlashCommandChannelOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Channel as const;\n\n\tpublic toJSON(): APIApplicationCommandChannelOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandChannelOption extends ApplicationCommandOptionChannelTypesMixin {}\n","import { ChannelType } from 'discord-api-types/v9';\nimport { z, ZodLiteral } from 'zod';\n\n// Only allow valid channel types to be used. (This can't be dynamic because const enums are erased at runtime)\nconst allowedChannelTypes = [\n\tChannelType.GuildText,\n\tChannelType.GuildVoice,\n\tChannelType.GuildCategory,\n\tChannelType.GuildNews,\n\tChannelType.GuildStore,\n\tChannelType.GuildNewsThread,\n\tChannelType.GuildPublicThread,\n\tChannelType.GuildPrivateThread,\n\tChannelType.GuildStageVoice,\n] as const;\n\nexport type ApplicationCommandOptionAllowedChannelTypes = typeof allowedChannelTypes[number];\n\nconst channelTypePredicate = z.union(\n\tallowedChannelTypes.map((type) => z.literal(type)) as [\n\t\tZodLiteral,\n\t\tZodLiteral,\n\t\t...ZodLiteral[]\n\t],\n);\n\nexport class ApplicationCommandOptionChannelTypesMixin {\n\tpublic readonly channel_types?: ApplicationCommandOptionAllowedChannelTypes[];\n\n\t/**\n\t * Adds a channel type to this option\n\t *\n\t * @param channelType The type of channel to allow\n\t */\n\tpublic addChannelType(channelType: ApplicationCommandOptionAllowedChannelTypes) {\n\t\tif (this.channel_types === undefined) {\n\t\t\tReflect.set(this, 'channel_types', []);\n\t\t}\n\n\t\tchannelTypePredicate.parse(channelType);\n\t\tthis.channel_types!.push(channelType);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds channel types to this option\n\t *\n\t * @param channelTypes The channel types to add\n\t */\n\tpublic addChannelTypes(channelTypes: ApplicationCommandOptionAllowedChannelTypes[]) {\n\t\tchannelTypes.forEach((channelType) => this.addChannelType(channelType));\n\t\treturn this;\n\t}\n}\n","import { APIApplicationCommandIntegerOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport { z } from 'zod';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\nconst numberValidator = z.number().int().nonnegative();\n\n@mix(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandIntegerOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\tpublic readonly type = ApplicationCommandOptionType.Integer as const;\n\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'maxValue', max);\n\n\t\treturn this;\n\t}\n\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'minValue', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandIntegerOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandIntegerOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","export abstract class ApplicationCommandNumericOptionMinMaxValueMixin {\n\tprotected readonly maxValue?: number;\n\tprotected readonly minValue?: number;\n\n\t/**\n\t * Sets the maximum number value of this option\n\t * @param max The maximum value this option can be\n\t */\n\tpublic abstract setMaxValue(max: number): this;\n\n\t/**\n\t * Sets the minimum number value of this option\n\t * @param min The minimum value this option can be\n\t */\n\tpublic abstract setMinValue(min: number): this;\n}\n","import { APIApplicationCommandOptionChoice, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { z } from 'zod';\nimport { validateMaxChoicesLength } from '../Assertions';\n\nconst stringPredicate = z.string().min(1).max(100);\nconst numberPredicate = z.number().gt(-Infinity).lt(Infinity);\nconst choicesPredicate = z.tuple([stringPredicate, z.union([stringPredicate, numberPredicate])]).array();\nconst booleanPredicate = z.boolean();\n\nexport class ApplicationCommandOptionWithChoicesAndAutocompleteMixin {\n\tpublic readonly choices?: APIApplicationCommandOptionChoice[];\n\tpublic readonly autocomplete?: boolean;\n\n\t// Since this is present and this is a mixin, this is needed\n\tpublic readonly type!: ApplicationCommandOptionType;\n\n\t/**\n\t * Adds a choice for this option\n\t *\n\t * @param name The name of the choice\n\t * @param value The value of the choice\n\t */\n\tpublic addChoice(name: string, value: T): Omit {\n\t\tif (this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tif (this.choices === undefined) {\n\t\t\tReflect.set(this, 'choices', []);\n\t\t}\n\n\t\tvalidateMaxChoicesLength(this.choices!);\n\n\t\t// Validate name\n\t\tstringPredicate.parse(name);\n\n\t\t// Validate the value\n\t\tif (this.type === ApplicationCommandOptionType.String) {\n\t\t\tstringPredicate.parse(value);\n\t\t} else {\n\t\t\tnumberPredicate.parse(value);\n\t\t}\n\n\t\tthis.choices!.push({ name, value });\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds multiple choices for this option\n\t *\n\t * @param choices The choices to add\n\t */\n\tpublic addChoices(choices: [name: string, value: T][]): Omit {\n\t\tif (this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(choices);\n\n\t\tfor (const [label, value] of choices) this.addChoice(label, value);\n\t\treturn this;\n\t}\n\n\tpublic setChoices(\n\t\tchoices: Input,\n\t): Input extends []\n\t\t? this & Pick, 'setAutocomplete'>\n\t\t: Omit {\n\t\tif (choices.length > 0 && this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(choices);\n\n\t\tReflect.set(this, 'choices', []);\n\t\tfor (const [label, value] of choices) this.addChoice(label, value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Marks the option as autocompletable\n\t * @param autocomplete If this option should be autocompletable\n\t */\n\tpublic setAutocomplete(\n\t\tautocomplete: U,\n\t): U extends true\n\t\t? Omit\n\t\t: this & Pick, 'addChoice' | 'addChoices'> {\n\t\t// Assert that you actually passed a boolean\n\t\tbooleanPredicate.parse(autocomplete);\n\n\t\tif (autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tReflect.set(this, 'autocomplete', autocomplete);\n\n\t\treturn this;\n\t}\n}\n","import { APIApplicationCommandMentionableOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandMentionableOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.Mentionable as const;\n\n\tpublic toJSON(): APIApplicationCommandMentionableOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { APIApplicationCommandNumberOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport { z } from 'zod';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\nconst numberValidator = z.number().nonnegative();\n\n@mix(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandNumberOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\tpublic readonly type = ApplicationCommandOptionType.Number as const;\n\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'maxValue', max);\n\n\t\treturn this;\n\t}\n\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'minValue', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandNumberOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandNumberOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","import { APIApplicationCommandRoleOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandRoleOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Role as const;\n\n\tpublic toJSON(): APIApplicationCommandRoleOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { APIApplicationCommandStringOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\n@mix(ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandStringOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.String as const;\n\n\tpublic toJSON(): APIApplicationCommandStringOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandStringOption extends ApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","import { APIApplicationCommandUserOption, ApplicationCommandOptionType } from 'discord-api-types/v9';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandUserOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.User as const;\n\n\tpublic toJSON(): APIApplicationCommandUserOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { assertReturnOfBuilder, validateMaxOptionsLength } from '../Assertions';\nimport type { ApplicationCommandOptionBase } from './ApplicationCommandOptionBase';\nimport { SlashCommandBooleanOption } from '../options/boolean';\nimport { SlashCommandChannelOption } from '../options/channel';\nimport { SlashCommandIntegerOption } from '../options/integer';\nimport { SlashCommandMentionableOption } from '../options/mentionable';\nimport { SlashCommandNumberOption } from '../options/number';\nimport { SlashCommandRoleOption } from '../options/role';\nimport { SlashCommandStringOption } from '../options/string';\nimport { SlashCommandUserOption } from '../options/user';\nimport type { ToAPIApplicationCommandOptions } from '../SlashCommandBuilder';\n\nexport class SharedSlashCommandOptions {\n\tpublic readonly options!: ToAPIApplicationCommandOptions[];\n\n\t/**\n\t * Adds a boolean option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addBooleanOption(\n\t\tinput: SlashCommandBooleanOption | ((builder: SlashCommandBooleanOption) => SlashCommandBooleanOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandBooleanOption);\n\t}\n\n\t/**\n\t * Adds a user option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addUserOption(input: SlashCommandUserOption | ((builder: SlashCommandUserOption) => SlashCommandUserOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandUserOption);\n\t}\n\n\t/**\n\t * Adds a channel option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addChannelOption(\n\t\tinput: SlashCommandChannelOption | ((builder: SlashCommandChannelOption) => SlashCommandChannelOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandChannelOption);\n\t}\n\n\t/**\n\t * Adds a role option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addRoleOption(input: SlashCommandRoleOption | ((builder: SlashCommandRoleOption) => SlashCommandRoleOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandRoleOption);\n\t}\n\n\t/**\n\t * Adds a mentionable option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addMentionableOption(\n\t\tinput: SlashCommandMentionableOption | ((builder: SlashCommandMentionableOption) => SlashCommandMentionableOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandMentionableOption);\n\t}\n\n\t/**\n\t * Adds a string option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addStringOption(\n\t\tinput:\n\t\t\t| SlashCommandStringOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandStringOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandStringOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandStringOption);\n\t}\n\n\t/**\n\t * Adds an integer option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addIntegerOption(\n\t\tinput:\n\t\t\t| SlashCommandIntegerOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandIntegerOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandIntegerOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandIntegerOption);\n\t}\n\n\t/**\n\t * Adds a number option\n\t *\n\t * @param input A function that returns an option builder, or an already built builder\n\t */\n\tpublic addNumberOption(\n\t\tinput:\n\t\t\t| SlashCommandNumberOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandNumberOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandNumberOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandNumberOption);\n\t}\n\n\tprivate _sharedAddOptionMethod(\n\t\tinput:\n\t\t\t| T\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((builder: T) => T | Omit | Omit),\n\t\tInstance: new () => T,\n\t): ShouldOmitSubcommandFunctions extends true ? Omit : this {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new Instance()) : input;\n\n\t\tassertReturnOfBuilder(result, Instance);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n}\n","import {\n\tAPIApplicationCommandSubcommandGroupOption,\n\tAPIApplicationCommandSubcommandOption,\n\tApplicationCommandOptionType,\n} from 'discord-api-types/v9';\nimport { mix } from 'ts-mixer';\nimport { assertReturnOfBuilder, validateMaxOptionsLength, validateRequiredParameters } from './Assertions';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder';\n\n/**\n * Represents a folder for subcommands\n *\n * For more information, go to https://discord.com/developers/docs/interactions/slash-commands#subcommands-and-subcommand-groups\n */\n@mix(SharedNameAndDescription)\nexport class SlashCommandSubcommandGroupBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand group\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand group\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The subcommands part of this subcommand group\n\t */\n\tpublic readonly options: SlashCommandSubcommandBuilder[] = [];\n\n\t/**\n\t * Adds a new subcommand to this group\n\t *\n\t * @param input A function that returns a subcommand builder, or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t) {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandSubcommandGroupOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.SubcommandGroup,\n\t\t\tname: this.name,\n\t\t\tdescription: this.description,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandGroupBuilder extends SharedNameAndDescription {}\n\n/**\n * Represents a subcommand\n *\n * For more information, go to https://discord.com/developers/docs/interactions/slash-commands#subcommands-and-subcommand-groups\n */\n@mix(SharedNameAndDescription, SharedSlashCommandOptions)\nexport class SlashCommandSubcommandBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The options of this subcommand\n\t */\n\tpublic readonly options: ApplicationCommandOptionBase[] = [];\n\n\tpublic toJSON(): APIApplicationCommandSubcommandOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.Subcommand,\n\t\t\tname: this.name,\n\t\t\tdescription: this.description,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {}\n","import { z } from 'zod';\nimport { ApplicationCommandType } from 'discord-api-types/v9';\nimport type { ContextMenuCommandType } from './ContextMenuCommandBuilder';\n\nexport function validateRequiredParameters(name: string, type: number) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert type is valid\n\tvalidateType(type);\n}\n\nconst namePredicate = z\n\t.string()\n\t.min(1)\n\t.max(32)\n\t.regex(/^( *[\\p{L}\\p{N}_-]+ *)+$/u);\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nconst typePredicate = z.union([z.literal(ApplicationCommandType.User), z.literal(ApplicationCommandType.Message)]);\n\nexport function validateType(type: unknown): asserts type is ContextMenuCommandType {\n\ttypePredicate.parse(type);\n}\n\nconst booleanPredicate = z.boolean();\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n","import { validateRequiredParameters, validateName, validateType, validateDefaultPermission } from './Assertions';\nimport type { ApplicationCommandType, RESTPostAPIApplicationCommandsJSONBody } from 'discord-api-types/v9';\n\nexport class ContextMenuCommandBuilder {\n\t/**\n\t * The name of this context menu command\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The type of this context menu command\n\t */\n\tpublic readonly type: ContextMenuCommandType = undefined!;\n\n\t/**\n\t * Whether the command is enabled by default when the app is added to a guild\n\t *\n\t * @default true\n\t */\n\tpublic readonly defaultPermission: boolean | undefined = undefined;\n\n\t/**\n\t * Sets the name\n\t *\n\t * @param name The name\n\t */\n\tpublic setName(name: string) {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the type\n\t *\n\t * @param type The type\n\t */\n\tpublic setType(type: ContextMenuCommandType) {\n\t\t// Assert the type is valid\n\t\tvalidateType(type);\n\n\t\tReflect.set(this, 'type', type);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * **Note**: If set to `false`, you will have to later `PUT` the permissions for this command.\n\t *\n\t * @param value Whether or not to enable this command by default\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'defaultPermission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns the final data that should be sent to Discord.\n\t *\n\t * **Note:** Calling this function will validate required properties based on their conditions.\n\t */\n\tpublic toJSON(): RESTPostAPIApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.type);\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\ttype: this.type,\n\t\t\tdefault_permission: this.defaultPermission,\n\t\t};\n\t}\n}\n\nexport type ContextMenuCommandType = ApplicationCommandType.User | ApplicationCommandType.Message;\n"],"mappings":"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","names":[]} \ No newline at end of file +{"version":3,"sources":["../src/messages/embed/Assertions.ts","../src/util/validation.ts","../src/util/normalizeArray.ts","../src/messages/embed/Embed.ts","../src/messages/formatters.ts","../src/components/Assertions.ts","../src/components/selectMenu/SelectMenuOption.ts","../src/components/ActionRow.ts","../src/components/Component.ts","../src/components/Components.ts","../src/components/button/Button.ts","../src/components/selectMenu/SelectMenu.ts","../src/components/textInput/TextInput.ts","../src/components/textInput/Assertions.ts","../src/util/jsonEncodable.ts","../src/interactions/modals/Assertions.ts","../src/interactions/modals/Modal.ts","../src/interactions/slashCommands/Assertions.ts","../src/interactions/slashCommands/SlashCommandBuilder.ts","../src/interactions/slashCommands/SlashCommandSubcommands.ts","../src/interactions/slashCommands/mixins/NameAndDescription.ts","../src/interactions/slashCommands/options/attachment.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts","../src/interactions/slashCommands/options/boolean.ts","../src/interactions/slashCommands/options/channel.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts","../src/interactions/slashCommands/options/integer.ts","../src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.ts","../src/interactions/slashCommands/options/mentionable.ts","../src/interactions/slashCommands/options/number.ts","../src/interactions/slashCommands/options/role.ts","../src/interactions/slashCommands/options/string.ts","../src/interactions/slashCommands/options/user.ts","../src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts","../src/interactions/contextMenuCommands/Assertions.ts","../src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts","../src/util/equatable.ts","../src/util/componentUtil.ts"],"sourcesContent":["import { s } from '@sapphire/shapeshift';\nimport type { APIEmbedField } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation';\n\nexport const fieldNamePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(256)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const fieldValuePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(1024)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const fieldInlinePredicate = s.boolean.optional;\n\nexport const embedFieldPredicate = s\n\t.object({\n\t\tname: fieldNamePredicate,\n\t\tvalue: fieldValuePredicate,\n\t\tinline: fieldInlinePredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const embedFieldsArrayPredicate = embedFieldPredicate.array.setValidationEnabled(isValidationEnabled);\n\nexport const fieldLengthPredicate = s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\n\nexport function validateFieldLength(amountAdding: number, fields?: APIEmbedField[]): void {\n\tfieldLengthPredicate.parse((fields?.length ?? 0) + amountAdding);\n}\n\nexport const authorNamePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const imageURLPredicate = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:', 'attachment:'],\n\t})\n\t.nullish.setValidationEnabled(isValidationEnabled);\n\nexport const urlPredicate = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:'],\n\t})\n\t.nullish.setValidationEnabled(isValidationEnabled);\n\nexport const embedAuthorPredicate = s\n\t.object({\n\t\tname: authorNamePredicate,\n\t\ticonURL: imageURLPredicate,\n\t\turl: urlPredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const RGBPredicate = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(255)\n\t.setValidationEnabled(isValidationEnabled);\nexport const colorPredicate = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(0xffffff)\n\t.or(s.tuple([RGBPredicate, RGBPredicate, RGBPredicate]))\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const descriptionPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(4096)\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const footerTextPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(2048)\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const embedFooterPredicate = s\n\t.object({\n\t\ttext: footerTextPredicate,\n\t\ticonURL: imageURLPredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const timestampPredicate = s.union(s.number, s.date).nullable.setValidationEnabled(isValidationEnabled);\n\nexport const titlePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);\n","let validate = true;\n\nexport const enableValidators = () => (validate = true);\nexport const disableValidators = () => (validate = false);\nexport const isValidationEnabled = () => validate;\n","export function normalizeArray(arr: RestOrArray): T[] {\n\tif (Array.isArray(arr[0])) return arr[0];\n\treturn arr as T[];\n}\n\nexport type RestOrArray = T[] | [T[]];\n","import type { APIEmbed, APIEmbedAuthor, APIEmbedField, APIEmbedFooter, APIEmbedImage } from 'discord-api-types/v10';\nimport {\n\tcolorPredicate,\n\tdescriptionPredicate,\n\tembedAuthorPredicate,\n\tembedFieldsArrayPredicate,\n\tembedFooterPredicate,\n\timageURLPredicate,\n\ttimestampPredicate,\n\ttitlePredicate,\n\turlPredicate,\n\tvalidateFieldLength,\n} from './Assertions';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray';\n\nexport type RGBTuple = [red: number, green: number, blue: number];\n\nexport interface IconData {\n\t/**\n\t * The URL of the icon\n\t */\n\ticonURL?: string;\n\t/**\n\t * The proxy URL of the icon\n\t */\n\tproxyIconURL?: string;\n}\n\nexport type EmbedAuthorData = Omit & IconData;\n\nexport type EmbedAuthorOptions = Omit;\n\nexport type EmbedFooterData = Omit & IconData;\n\nexport type EmbedFooterOptions = Omit;\n\nexport interface EmbedImageData extends Omit {\n\t/**\n\t * The proxy URL for the image\n\t */\n\tproxyURL?: string;\n}\n/**\n * Represents a embed in a message (image/video preview, rich embed, etc.)\n */\nexport class EmbedBuilder {\n\tpublic readonly data: APIEmbed;\n\n\tpublic constructor(data: APIEmbed = {}) {\n\t\tthis.data = { ...data };\n\t\tif (data.timestamp) this.data.timestamp = new Date(data.timestamp).toISOString();\n\t}\n\n\t/**\n\t * Adds fields to the embed (max 25)\n\t *\n\t * @param fields The fields to add\n\t */\n\tpublic addFields(...fields: RestOrArray): this {\n\t\tfields = normalizeArray(fields);\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(fields.length, this.data.fields);\n\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\n\t\tif (this.data.fields) this.data.fields.push(...fields);\n\t\telse this.data.fields = fields;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts fields in the embed (max 25)\n\t *\n\t * @param index The index to start at\n\t * @param deleteCount The number of fields to remove\n\t * @param fields The replacing field objects\n\t */\n\tpublic spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this {\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(fields.length - deleteCount, this.data.fields);\n\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\t\tif (this.data.fields) this.data.fields.splice(index, deleteCount, ...fields);\n\t\telse this.data.fields = fields;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the embed's fields (max 25).\n\t * @param fields The fields to set\n\t */\n\tpublic setFields(...fields: RestOrArray) {\n\t\tthis.spliceFields(0, this.data.fields?.length ?? 0, ...normalizeArray(fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the author of this embed\n\t *\n\t * @param options The options for the author\n\t */\n\n\tpublic setAuthor(options: EmbedAuthorOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.data.author = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Data assertions\n\t\tembedAuthorPredicate.parse(options);\n\n\t\tthis.data.author = { name: options.name, url: options.url, icon_url: options.iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the color of this embed\n\t *\n\t * @param color The color of the embed\n\t */\n\tpublic setColor(color: number | RGBTuple | null): this {\n\t\t// Data assertions\n\t\tcolorPredicate.parse(color);\n\n\t\tif (Array.isArray(color)) {\n\t\t\tconst [red, green, blue] = color;\n\t\t\tthis.data.color = (red << 16) + (green << 8) + blue;\n\t\t\treturn this;\n\t\t}\n\t\tthis.data.color = color ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this embed\n\t *\n\t * @param description The description\n\t */\n\tpublic setDescription(description: string | null): this {\n\t\t// Data assertions\n\t\tdescriptionPredicate.parse(description);\n\n\t\tthis.data.description = description ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the footer of this embed\n\t *\n\t * @param options The options for the footer\n\t */\n\tpublic setFooter(options: EmbedFooterOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.data.footer = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Data assertions\n\t\tembedFooterPredicate.parse(options);\n\n\t\tthis.data.footer = { text: options.text, icon_url: options.iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the image of this embed\n\t *\n\t * @param url The URL of the image\n\t */\n\tpublic setImage(url: string | null): this {\n\t\t// Data assertions\n\t\timageURLPredicate.parse(url);\n\n\t\tthis.data.image = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the thumbnail of this embed\n\t *\n\t * @param url The URL of the thumbnail\n\t */\n\tpublic setThumbnail(url: string | null): this {\n\t\t// Data assertions\n\t\timageURLPredicate.parse(url);\n\n\t\tthis.data.thumbnail = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the timestamp of this embed\n\t *\n\t * @param timestamp The timestamp or date\n\t */\n\tpublic setTimestamp(timestamp: number | Date | null = Date.now()): this {\n\t\t// Data assertions\n\t\ttimestampPredicate.parse(timestamp);\n\n\t\tthis.data.timestamp = timestamp ? new Date(timestamp).toISOString() : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the title of this embed\n\t *\n\t * @param title The title\n\t */\n\tpublic setTitle(title: string | null): this {\n\t\t// Data assertions\n\t\ttitlePredicate.parse(title);\n\n\t\tthis.data.title = title ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL of this embed\n\t *\n\t * @param url The URL\n\t */\n\tpublic setURL(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.data.url = url ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Transforms the embed to a plain object\n\t */\n\tpublic toJSON(): APIEmbed {\n\t\treturn { ...this.data };\n\t}\n}\n","import type { URL } from 'url';\nimport type { Snowflake } from 'discord-api-types/globals';\n\n/**\n * Wraps the content inside a codeblock with no language\n *\n * @param content - The content to wrap\n */\nexport function codeBlock(content: C): `\\`\\`\\`\\n${C}\\`\\`\\``;\n\n/**\n * Wraps the content inside a codeblock with the specified language\n *\n * @param language - The language for the codeblock\n * @param content - The content to wrap\n */\nexport function codeBlock(language: L, content: C): `\\`\\`\\`${L}\\n${C}\\`\\`\\``;\nexport function codeBlock(language: string, content?: string): string {\n\treturn typeof content === 'undefined' ? `\\`\\`\\`\\n${language}\\`\\`\\`` : `\\`\\`\\`${language}\\n${content}\\`\\`\\``;\n}\n\n/**\n * Wraps the content inside \\`backticks\\`, which formats it as inline code\n *\n * @param content - The content to wrap\n */\nexport function inlineCode(content: C): `\\`${C}\\`` {\n\treturn `\\`${content}\\``;\n}\n\n/**\n * Formats the content into italic text\n *\n * @param content - The content to wrap\n */\nexport function italic(content: C): `_${C}_` {\n\treturn `_${content}_`;\n}\n\n/**\n * Formats the content into bold text\n *\n * @param content - The content to wrap\n */\nexport function bold(content: C): `**${C}**` {\n\treturn `**${content}**`;\n}\n\n/**\n * Formats the content into underscored text\n *\n * @param content - The content to wrap\n */\nexport function underscore(content: C): `__${C}__` {\n\treturn `__${content}__`;\n}\n\n/**\n * Formats the content into strike-through text\n *\n * @param content - The content to wrap\n */\nexport function strikethrough(content: C): `~~${C}~~` {\n\treturn `~~${content}~~`;\n}\n\n/**\n * Formats the content into a quote. This needs to be at the start of the line for Discord to format it\n *\n * @param content - The content to wrap\n */\nexport function quote(content: C): `> ${C}` {\n\treturn `> ${content}`;\n}\n\n/**\n * Formats the content into a block quote. This needs to be at the start of the line for Discord to format it\n *\n * @param content - The content to wrap\n */\nexport function blockQuote(content: C): `>>> ${C}` {\n\treturn `>>> ${content}`;\n}\n\n/**\n * Wraps the URL into `<>`, which stops it from embedding\n *\n * @param url - The URL to wrap\n */\nexport function hideLinkEmbed(url: C): `<${C}>`;\n\n/**\n * Wraps the URL into `<>`, which stops it from embedding\n *\n * @param url - The URL to wrap\n */\nexport function hideLinkEmbed(url: URL): `<${string}>`;\nexport function hideLinkEmbed(url: string | URL) {\n\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\treturn `<${url}>`;\n}\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content - The content to display\n * @param url - The URL the content links to\n */\nexport function hyperlink(content: C, url: URL): `[${C}](${string})`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content - The content to display\n * @param url - The URL the content links to\n */\nexport function hyperlink(content: C, url: U): `[${C}](${U})`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content - The content to display\n * @param url - The URL the content links to\n * @param title - The title shown when hovering on the masked link\n */\nexport function hyperlink(\n\tcontent: C,\n\turl: URL,\n\ttitle: T,\n): `[${C}](${string} \"${T}\")`;\n\n/**\n * Formats the content and the URL into a masked URL\n *\n * @param content - The content to display\n * @param url - The URL the content links to\n * @param title - The title shown when hovering on the masked link\n */\nexport function hyperlink(\n\tcontent: C,\n\turl: U,\n\ttitle: T,\n): `[${C}](${U} \"${T}\")`;\nexport function hyperlink(content: string, url: string | URL, title?: string) {\n\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\treturn title ? `[${content}](${url} \"${title}\")` : `[${content}](${url})`;\n}\n\n/**\n * Wraps the content inside spoiler (hidden text)\n *\n * @param content - The content to wrap\n */\nexport function spoiler(content: C): `||${C}||` {\n\treturn `||${content}||`;\n}\n\n/**\n * Formats a user ID into a user mention\n *\n * @param userId - The user ID to format\n */\nexport function userMention(userId: C): `<@${C}>` {\n\treturn `<@${userId}>`;\n}\n\n/**\n * Formats a channel ID into a channel mention\n *\n * @param channelId - The channel ID to format\n */\nexport function channelMention(channelId: C): `<#${C}>` {\n\treturn `<#${channelId}>`;\n}\n\n/**\n * Formats a role ID into a role mention\n *\n * @param roleId - The role ID to format\n */\nexport function roleMention(roleId: C): `<@&${C}>` {\n\treturn `<@&${roleId}>`;\n}\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId - The emoji ID to format\n */\nexport function formatEmoji(emojiId: C, animated?: false): `<:_:${C}>`;\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId - The emoji ID to format\n * @param animated - Whether the emoji is animated or not. Defaults to `false`\n */\nexport function formatEmoji(emojiId: C, animated?: true): ``;\n\n/**\n * Formats an emoji ID into a fully qualified emoji identifier\n *\n * @param emojiId - The emoji ID to format\n * @param animated - Whether the emoji is animated or not. Defaults to `false`\n */\nexport function formatEmoji(emojiId: C, animated = false): `` | `<:_:${C}>` {\n\treturn `<${animated ? 'a' : ''}:_:${emojiId}>`;\n}\n\n/**\n * Formats a date into a short date-time string\n *\n * @param date - The date to format, defaults to the current time\n */\nexport function time(date?: Date): ``;\n\n/**\n * Formats a date given a format style\n *\n * @param date - The date to format\n * @param style - The style to use\n */\nexport function time(date: Date, style: S): ``;\n\n/**\n * Formats the given timestamp into a short date-time string\n *\n * @param seconds - The time to format, represents an UNIX timestamp in seconds\n */\nexport function time(seconds: C): ``;\n\n/**\n * Formats the given timestamp into a short date-time string\n *\n * @param seconds - The time to format, represents an UNIX timestamp in seconds\n * @param style - The style to use\n */\nexport function time(seconds: C, style: S): ``;\nexport function time(timeOrSeconds?: number | Date, style?: TimestampStylesString): string {\n\tif (typeof timeOrSeconds !== 'number') {\n\t\ttimeOrSeconds = Math.floor((timeOrSeconds?.getTime() ?? Date.now()) / 1000);\n\t}\n\n\treturn typeof style === 'string' ? `` : ``;\n}\n\n/**\n * The [message formatting timestamp styles](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) supported by Discord\n */\nexport const TimestampStyles = {\n\t/**\n\t * Short time format, consisting of hours and minutes, e.g. 16:20\n\t */\n\tShortTime: 't',\n\n\t/**\n\t * Long time format, consisting of hours, minutes, and seconds, e.g. 16:20:30\n\t */\n\tLongTime: 'T',\n\n\t/**\n\t * Short date format, consisting of day, month, and year, e.g. 20/04/2021\n\t */\n\tShortDate: 'd',\n\n\t/**\n\t * Long date format, consisting of day, month, and year, e.g. 20 April 2021\n\t */\n\tLongDate: 'D',\n\n\t/**\n\t * Short date-time format, consisting of short date and short time formats, e.g. 20 April 2021 16:20\n\t */\n\tShortDateTime: 'f',\n\n\t/**\n\t * Long date-time format, consisting of long date and short time formats, e.g. Tuesday, 20 April 2021 16:20\n\t */\n\tLongDateTime: 'F',\n\n\t/**\n\t * Relative time format, consisting of a relative duration format, e.g. 2 months ago\n\t */\n\tRelativeTime: 'R',\n} as const;\n\n/**\n * The possible values, see {@link TimestampStyles} for more information\n */\nexport type TimestampStylesString = typeof TimestampStyles[keyof typeof TimestampStyles];\n\n/**\n * An enum with all the available faces from Discord's native slash commands\n */\nexport enum Faces {\n\t/**\n\t * ¯\\\\_(ツ)\\\\_/¯\n\t */\n\tShrug = '¯\\\\_(ツ)\\\\_/¯',\n\n\t/**\n\t * (╯°□°)╯︵ ┻━┻\n\t */\n\tTableflip = '(╯°□°)╯︵ ┻━┻',\n\n\t/**\n\t * ┬─┬ ノ( ゜-゜ノ)\n\t */\n\tUnflip = '┬─┬ ノ( ゜-゜ノ)',\n}\n","import { s } from '@sapphire/shapeshift';\nimport { APIMessageComponentEmoji, ButtonStyle } from 'discord-api-types/v10';\nimport { SelectMenuOptionBuilder } from './selectMenu/SelectMenuOption';\nimport { isValidationEnabled } from '../util/validation';\n\nexport const customIdValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const emojiValidator = s\n\t.object({\n\t\tid: s.string,\n\t\tname: s.string,\n\t\tanimated: s.boolean,\n\t})\n\t.partial.strict.setValidationEnabled(isValidationEnabled);\n\nexport const disabledValidator = s.boolean;\n\nexport const buttonLabelValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(80)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const buttonStyleValidator = s.nativeEnum(ButtonStyle);\n\nexport const placeholderValidator = s.string.lengthLessThanOrEqual(150).setValidationEnabled(isValidationEnabled);\nexport const minMaxValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(25)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const labelValueDescriptionValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\nexport const optionValidator = s\n\t.union(\n\t\ts.object({\n\t\t\tlabel: labelValueDescriptionValidator,\n\t\t\tvalue: labelValueDescriptionValidator,\n\t\t\tdescription: labelValueDescriptionValidator.optional,\n\t\t\temoji: emojiValidator.optional,\n\t\t\tdefault: s.boolean.optional,\n\t\t}),\n\t\ts.instance(SelectMenuOptionBuilder),\n\t)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const optionsValidator = optionValidator.array\n\t.lengthGreaterThanOrEqual(0)\n\t.setValidationEnabled(isValidationEnabled);\nexport const optionsLengthValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(25)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredSelectMenuParameters(options: SelectMenuOptionBuilder[], customId?: string) {\n\tcustomIdValidator.parse(customId);\n\toptionsValidator.parse(options);\n}\n\nexport const defaultValidator = s.boolean;\n\nexport function validateRequiredSelectMenuOptionParameters(label?: string, value?: string) {\n\tlabelValueDescriptionValidator.parse(label);\n\tlabelValueDescriptionValidator.parse(value);\n}\n\nexport const urlValidator = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:', 'discord:'],\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredButtonParameters(\n\tstyle?: ButtonStyle,\n\tlabel?: string,\n\temoji?: APIMessageComponentEmoji,\n\tcustomId?: string,\n\turl?: string,\n) {\n\tif (url && customId) {\n\t\tthrow new RangeError('URL and custom id are mutually exclusive');\n\t}\n\n\tif (!label && !emoji) {\n\t\tthrow new RangeError('Buttons must have a label and/or an emoji');\n\t}\n\n\tif (style === ButtonStyle.Link) {\n\t\tif (!url) {\n\t\t\tthrow new RangeError('Link buttons must have a url');\n\t\t}\n\t} else if (url) {\n\t\tthrow new RangeError('Non-link buttons cannot have a url');\n\t}\n}\n","import type { APIMessageComponentEmoji, APISelectMenuOption } from 'discord-api-types/v10';\n\nimport {\n\tdefaultValidator,\n\temojiValidator,\n\tlabelValueDescriptionValidator,\n\tvalidateRequiredSelectMenuOptionParameters,\n} from '../Assertions';\n\n/**\n * Represents a option within a select menu component\n */\nexport class SelectMenuOptionBuilder {\n\tpublic constructor(public data: Partial = {}) {}\n\n\t/**\n\t * Sets the label of this option\n\t *\n\t * @param label - The label to show on this option\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = labelValueDescriptionValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the value of this option\n\t *\n\t * @param value - The value of this option\n\t */\n\tpublic setValue(value: string) {\n\t\tthis.data.value = labelValueDescriptionValidator.parse(value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this option\n\t *\n\t * @param description - The description of this option\n\t */\n\tpublic setDescription(description: string) {\n\t\tthis.data.description = labelValueDescriptionValidator.parse(description);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this option is selected by default\n\t *\n\t * @param isDefault - Whether this option is selected by default\n\t */\n\tpublic setDefault(isDefault = true) {\n\t\tthis.data.default = defaultValidator.parse(isDefault);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the emoji to display on this option\n\t *\n\t * @param emoji - The emoji to display on this option\n\t */\n\tpublic setEmoji(emoji: APIMessageComponentEmoji) {\n\t\tthis.data.emoji = emojiValidator.parse(emoji);\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APISelectMenuOption {\n\t\tvalidateRequiredSelectMenuOptionParameters(this.data.label, this.data.value);\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APISelectMenuOption;\n\t}\n}\n","import {\n\ttype APIActionRowComponent,\n\tComponentType,\n\tAPIMessageActionRowComponent,\n\tAPIModalActionRowComponent,\n\tAPIActionRowComponentTypes,\n} from 'discord-api-types/v10';\nimport { ComponentBuilder } from './Component';\nimport { createComponentBuilder } from './Components';\nimport type { ButtonBuilder } from './button/Button';\nimport type { SelectMenuBuilder } from './selectMenu/SelectMenu';\nimport type { TextInputBuilder } from './textInput/TextInput';\nimport { normalizeArray, type RestOrArray } from '../util/normalizeArray';\n\nexport type MessageComponentBuilder =\n\t| MessageActionRowComponentBuilder\n\t| ActionRowBuilder;\nexport type ModalComponentBuilder = ModalActionRowComponentBuilder | ActionRowBuilder;\nexport type MessageActionRowComponentBuilder = ButtonBuilder | SelectMenuBuilder;\nexport type ModalActionRowComponentBuilder = TextInputBuilder;\nexport type AnyComponentBuilder = MessageActionRowComponentBuilder | ModalActionRowComponentBuilder;\n\n/**\n * Represents an action row component\n */\nexport class ActionRowBuilder extends ComponentBuilder<\n\tAPIActionRowComponent\n> {\n\t/**\n\t * The components within this action row\n\t */\n\tpublic readonly components: T[];\n\n\tpublic constructor({ components, ...data }: Partial> = {}) {\n\t\tsuper({ type: ComponentType.ActionRow, ...data });\n\t\tthis.components = (components?.map((c) => createComponentBuilder(c)) ?? []) as T[];\n\t}\n\n\t/**\n\t * Adds components to this action row.\n\t *\n\t * @param components - The components to add to this action row.\n\t */\n\tpublic addComponents(...components: RestOrArray) {\n\t\tthis.components.push(...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the components in this action row\n\t *\n\t * @param components - The components to set this row to\n\t */\n\tpublic setComponents(...components: RestOrArray) {\n\t\tthis.components.splice(0, this.components.length, ...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIActionRowComponent> {\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t} as APIActionRowComponent>;\n\t}\n}\n","import type {\n\tAPIActionRowComponent,\n\tAPIActionRowComponentTypes,\n\tAPIBaseComponent,\n\tComponentType,\n} from 'discord-api-types/v10';\nimport type { JSONEncodable } from '../util/jsonEncodable';\n\nexport type AnyAPIActionRowComponent = APIActionRowComponentTypes | APIActionRowComponent;\n\n/**\n * Represents a discord component\n */\nexport abstract class ComponentBuilder<\n\tDataType extends Partial> = APIBaseComponent,\n> implements JSONEncodable\n{\n\t/**\n\t * The API data associated with this component\n\t */\n\tpublic readonly data: Partial;\n\n\tpublic abstract toJSON(): AnyAPIActionRowComponent;\n\n\tpublic constructor(data: Partial) {\n\t\tthis.data = data;\n\t}\n}\n","import { APIMessageComponent, APIModalComponent, ComponentType } from 'discord-api-types/v10';\nimport {\n\tActionRowBuilder,\n\ttype AnyComponentBuilder,\n\ttype MessageComponentBuilder,\n\ttype ModalComponentBuilder,\n} from './ActionRow';\nimport { ComponentBuilder } from './Component';\nimport { ButtonBuilder } from './button/Button';\nimport { SelectMenuBuilder } from './selectMenu/SelectMenu';\nimport { TextInputBuilder } from './textInput/TextInput';\n\nexport interface MappedComponentTypes {\n\t[ComponentType.ActionRow]: ActionRowBuilder;\n\t[ComponentType.Button]: ButtonBuilder;\n\t[ComponentType.SelectMenu]: SelectMenuBuilder;\n\t[ComponentType.TextInput]: TextInputBuilder;\n}\n\n/**\n * Factory for creating components from API data\n *\n * @param data - The api data to transform to a component class\n */\nexport function createComponentBuilder(\n\tdata: (APIMessageComponent | APIModalComponent) & { type: T },\n): MappedComponentTypes[T];\nexport function createComponentBuilder(data: C): C;\nexport function createComponentBuilder(\n\tdata: APIMessageComponent | APIModalComponent | MessageComponentBuilder,\n): ComponentBuilder {\n\tif (data instanceof ComponentBuilder) {\n\t\treturn data;\n\t}\n\n\tswitch (data.type) {\n\t\tcase ComponentType.ActionRow:\n\t\t\treturn new ActionRowBuilder(data);\n\t\tcase ComponentType.Button:\n\t\t\treturn new ButtonBuilder(data);\n\t\tcase ComponentType.SelectMenu:\n\t\t\treturn new SelectMenuBuilder(data);\n\t\tcase ComponentType.TextInput:\n\t\t\treturn new TextInputBuilder(data);\n\t\tdefault:\n\t\t\t// @ts-expect-error\n\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\tthrow new Error(`Cannot properly serialize component type: ${data.type}`);\n\t}\n}\n","import {\n\tComponentType,\n\tButtonStyle,\n\ttype APIMessageComponentEmoji,\n\ttype APIButtonComponent,\n\ttype APIButtonComponentWithURL,\n\ttype APIButtonComponentWithCustomId,\n} from 'discord-api-types/v10';\nimport {\n\tbuttonLabelValidator,\n\tbuttonStyleValidator,\n\tcustomIdValidator,\n\tdisabledValidator,\n\temojiValidator,\n\turlValidator,\n\tvalidateRequiredButtonParameters,\n} from '../Assertions';\nimport { ComponentBuilder } from '../Component';\n\n/**\n * Represents a button component\n */\nexport class ButtonBuilder extends ComponentBuilder {\n\tpublic constructor(data?: Partial) {\n\t\tsuper({ type: ComponentType.Button, ...data });\n\t}\n\n\t/**\n\t * Sets the style of this button\n\t *\n\t * @param style - The style of the button\n\t */\n\tpublic setStyle(style: ButtonStyle) {\n\t\tthis.data.style = buttonStyleValidator.parse(style);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL for this button\n\t *\n\t * @param url - The URL to open when this button is clicked\n\t */\n\tpublic setURL(url: string) {\n\t\t(this.data as APIButtonComponentWithURL).url = urlValidator.parse(url);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id for this button\n\t *\n\t * @param customId - The custom id to use for this button\n\t */\n\tpublic setCustomId(customId: string) {\n\t\t(this.data as APIButtonComponentWithCustomId).custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the emoji to display on this button\n\t *\n\t * @param emoji - The emoji to display on this button\n\t */\n\tpublic setEmoji(emoji: APIMessageComponentEmoji) {\n\t\tthis.data.emoji = emojiValidator.parse(emoji);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this button is disabled\n\t *\n\t * @param disabled - Whether to disable this button\n\t */\n\tpublic setDisabled(disabled = true) {\n\t\tthis.data.disabled = disabledValidator.parse(disabled);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the label for this button\n\t *\n\t * @param label - The label to display on this button\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = buttonLabelValidator.parse(label);\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIButtonComponent {\n\t\tvalidateRequiredButtonParameters(\n\t\t\tthis.data.style,\n\t\t\tthis.data.label,\n\t\t\tthis.data.emoji,\n\t\t\t(this.data as APIButtonComponentWithCustomId).custom_id,\n\t\t\t(this.data as APIButtonComponentWithURL).url,\n\t\t);\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APIButtonComponent;\n\t}\n}\n","import { APISelectMenuOption, ComponentType, type APISelectMenuComponent } from 'discord-api-types/v10';\nimport { SelectMenuOptionBuilder } from './SelectMenuOption';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray';\nimport {\n\tcustomIdValidator,\n\tdisabledValidator,\n\tminMaxValidator,\n\toptionsLengthValidator,\n\toptionValidator,\n\tplaceholderValidator,\n\tvalidateRequiredSelectMenuParameters,\n} from '../Assertions';\nimport { ComponentBuilder } from '../Component';\n\n/**\n * Represents a select menu component\n */\nexport class SelectMenuBuilder extends ComponentBuilder {\n\t/**\n\t * The options within this select menu\n\t */\n\tpublic readonly options: SelectMenuOptionBuilder[];\n\n\tpublic constructor(data?: Partial) {\n\t\tconst { options, ...initData } = data ?? {};\n\t\tsuper({ type: ComponentType.SelectMenu, ...initData });\n\t\tthis.options = options?.map((o) => new SelectMenuOptionBuilder(o)) ?? [];\n\t}\n\n\t/**\n\t * Sets the placeholder for this select menu\n\t *\n\t * @param placeholder - The placeholder to use for this select menu\n\t */\n\tpublic setPlaceholder(placeholder: string) {\n\t\tthis.data.placeholder = placeholderValidator.parse(placeholder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum values that must be selected in the select menu\n\t *\n\t * @param minValues - The minimum values that must be selected\n\t */\n\tpublic setMinValues(minValues: number) {\n\t\tthis.data.min_values = minMaxValidator.parse(minValues);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the maximum values that must be selected in the select menu\n\t *\n\t * @param maxValues - The maximum values that must be selected\n\t */\n\tpublic setMaxValues(maxValues: number) {\n\t\tthis.data.max_values = minMaxValidator.parse(maxValues);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id for this select menu\n\t *\n\t * @param customId - The custom id to use for this select menu\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this select menu is disabled\n\t *\n\t * @param disabled - Whether this select menu is disabled\n\t */\n\tpublic setDisabled(disabled = true) {\n\t\tthis.data.disabled = disabledValidator.parse(disabled);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds options to this select menu\n\t *\n\t * @param options - The options to add to this select menu\n\t * @returns\n\t */\n\tpublic addOptions(...options: RestOrArray) {\n\t\toptions = normalizeArray(options);\n\t\toptionsLengthValidator.parse(this.options.length + options.length);\n\t\tthis.options.push(\n\t\t\t...options.map((option) =>\n\t\t\t\toption instanceof SelectMenuOptionBuilder\n\t\t\t\t\t? option\n\t\t\t\t\t: new SelectMenuOptionBuilder(optionValidator.parse(option)),\n\t\t\t),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the options on this select menu\n\t *\n\t * @param options - The options to set on this select menu\n\t */\n\tpublic setOptions(...options: RestOrArray) {\n\t\toptions = normalizeArray(options);\n\t\toptionsLengthValidator.parse(options.length);\n\t\tthis.options.splice(\n\t\t\t0,\n\t\t\tthis.options.length,\n\t\t\t...options.map((option) =>\n\t\t\t\toption instanceof SelectMenuOptionBuilder\n\t\t\t\t\t? option\n\t\t\t\t\t: new SelectMenuOptionBuilder(optionValidator.parse(option)),\n\t\t\t),\n\t\t);\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APISelectMenuComponent {\n\t\tvalidateRequiredSelectMenuParameters(this.options, this.data.custom_id);\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t\toptions: this.options.map((o) => o.toJSON()),\n\t\t} as APISelectMenuComponent;\n\t}\n}\n","import { ComponentType, type TextInputStyle, type APITextInputComponent } from 'discord-api-types/v10';\nimport isEqual from 'fast-deep-equal';\nimport {\n\tmaxLengthValidator,\n\tminLengthValidator,\n\tplaceholderValidator,\n\trequiredValidator,\n\tvalueValidator,\n\tvalidateRequiredParameters,\n\tlabelValidator,\n\ttextInputStyleValidator,\n} from './Assertions';\nimport { isJSONEncodable, type JSONEncodable } from '../../util/jsonEncodable';\nimport { customIdValidator } from '../Assertions';\nimport { ComponentBuilder } from '../Component';\n\nexport class TextInputBuilder extends ComponentBuilder {\n\tpublic constructor(data?: APITextInputComponent & { type?: ComponentType.TextInput }) {\n\t\tsuper({ type: ComponentType.TextInput, ...data });\n\t}\n\n\t/**\n\t * Sets the custom id for this text input\n\t *\n\t * @param customId - The custom id of this text input\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the label for this text input\n\t *\n\t * @param label - The label for this text input\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = labelValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the style for this text input\n\t *\n\t * @param style - The style for this text input\n\t */\n\tpublic setStyle(style: TextInputStyle) {\n\t\tthis.data.style = textInputStyleValidator.parse(style);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum length of text for this text input\n\t *\n\t * @param minLength - The minimum length of text for this text input\n\t */\n\tpublic setMinLength(minLength: number) {\n\t\tthis.data.min_length = minLengthValidator.parse(minLength);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the maximum length of text for this text input\n\t *\n\t * @param maxLength - The maximum length of text for this text input\n\t */\n\tpublic setMaxLength(maxLength: number) {\n\t\tthis.data.max_length = maxLengthValidator.parse(maxLength);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the placeholder of this text input\n\t *\n\t * @param placeholder - The placeholder of this text input\n\t */\n\tpublic setPlaceholder(placeholder: string) {\n\t\tthis.data.placeholder = placeholderValidator.parse(placeholder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the value of this text input\n\t *\n\t * @param value - The value for this text input\n\t */\n\tpublic setValue(value: string) {\n\t\tthis.data.value = valueValidator.parse(value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this text input is required\n\t *\n\t * @param required - Whether this text input is required\n\t */\n\tpublic setRequired(required = true) {\n\t\tthis.data.required = requiredValidator.parse(required);\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APITextInputComponent {\n\t\tvalidateRequiredParameters(this.data.custom_id, this.data.style, this.data.label);\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APITextInputComponent;\n\t}\n\n\tpublic equals(other: JSONEncodable | APITextInputComponent): boolean {\n\t\tif (isJSONEncodable(other)) {\n\t\t\treturn isEqual(other.toJSON(), this.data);\n\t\t}\n\n\t\treturn isEqual(other, this.data);\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { TextInputStyle } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation';\nimport { customIdValidator } from '../Assertions';\n\nexport const textInputStyleValidator = s.nativeEnum(TextInputStyle);\nexport const minLengthValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(4000)\n\t.setValidationEnabled(isValidationEnabled);\nexport const maxLengthValidator = s.number.int\n\t.greaterThanOrEqual(1)\n\t.lessThanOrEqual(4000)\n\t.setValidationEnabled(isValidationEnabled);\nexport const requiredValidator = s.boolean;\nexport const valueValidator = s.string.lengthLessThanOrEqual(4000).setValidationEnabled(isValidationEnabled);\nexport const placeholderValidator = s.string.lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);\nexport const labelValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(45)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredParameters(customId?: string, style?: TextInputStyle, label?: string) {\n\tcustomIdValidator.parse(customId);\n\ttextInputStyleValidator.parse(style);\n\tlabelValidator.parse(label);\n}\n","export interface JSONEncodable {\n\t/**\n\t * Transforms this object to its JSON format\n\t */\n\ttoJSON: () => T;\n}\n\n/**\n * Indicates if an object is encodable or not.\n * @param maybeEncodable - The object to check against\n */\nexport function isJSONEncodable(maybeEncodable: unknown): maybeEncodable is JSONEncodable {\n\treturn maybeEncodable !== null && typeof maybeEncodable === 'object' && 'toJSON' in maybeEncodable;\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ActionRowBuilder, type ModalActionRowComponentBuilder } from '../../components/ActionRow';\nimport { customIdValidator } from '../../components/Assertions';\nimport { isValidationEnabled } from '../../util/validation';\n\nexport const titleValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(45)\n\t.setValidationEnabled(isValidationEnabled);\nexport const componentsValidator = s\n\t.instance(ActionRowBuilder)\n\t.array.lengthGreaterThanOrEqual(1)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredParameters(\n\tcustomId?: string,\n\ttitle?: string,\n\tcomponents?: ActionRowBuilder[],\n) {\n\tcustomIdValidator.parse(customId);\n\ttitleValidator.parse(title);\n\tcomponentsValidator.parse(components);\n}\n","import type {\n\tAPIActionRowComponent,\n\tAPIModalActionRowComponent,\n\tAPIModalInteractionResponseCallbackData,\n} from 'discord-api-types/v10';\nimport { titleValidator, validateRequiredParameters } from './Assertions';\nimport { ActionRowBuilder, type ModalActionRowComponentBuilder } from '../../components/ActionRow';\nimport { customIdValidator } from '../../components/Assertions';\nimport { createComponentBuilder } from '../../components/Components';\nimport type { JSONEncodable } from '../../util/jsonEncodable';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray';\n\nexport class ModalBuilder implements JSONEncodable {\n\tpublic readonly data: Partial;\n\tpublic readonly components: ActionRowBuilder[] = [];\n\n\tpublic constructor({ components, ...data }: Partial = {}) {\n\t\tthis.data = { ...data };\n\t\tthis.components = (components?.map((c) => createComponentBuilder(c)) ??\n\t\t\t[]) as ActionRowBuilder[];\n\t}\n\n\t/**\n\t * Sets the title of the modal\n\t *\n\t * @param title - The title of the modal\n\t */\n\tpublic setTitle(title: string) {\n\t\tthis.data.title = titleValidator.parse(title);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id of the modal\n\t *\n\t * @param customId - The custom id of this modal\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds components to this modal\n\t *\n\t * @param components - The components to add to this modal\n\t */\n\tpublic addComponents(\n\t\t...components: RestOrArray<\n\t\t\tActionRowBuilder | APIActionRowComponent\n\t\t>\n\t) {\n\t\tthis.components.push(\n\t\t\t...normalizeArray(components).map((component) =>\n\t\t\t\tcomponent instanceof ActionRowBuilder\n\t\t\t\t\t? component\n\t\t\t\t\t: new ActionRowBuilder(component),\n\t\t\t),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the components in this modal\n\t *\n\t * @param components - The components to set this modal to\n\t */\n\tpublic setComponents(...components: RestOrArray>) {\n\t\tthis.components.splice(0, this.components.length, ...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIModalInteractionResponseCallbackData {\n\t\tvalidateRequiredParameters(this.data.custom_id, this.data.title, this.components);\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t} as APIModalInteractionResponseCallbackData;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { type APIApplicationCommandOptionChoice, Locale, LocalizationMap } from 'discord-api-types/v10';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder';\nimport type { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase';\nimport { isValidationEnabled } from '../../util/validation';\n\nconst namePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(32)\n\t.regex(/^[\\p{Ll}\\p{Lm}\\p{Lo}\\p{N}\\p{sc=Devanagari}\\p{sc=Thai}_-]+$/u)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nconst descriptionPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\nconst localePredicate = s.nativeEnum(Locale);\n\nexport function validateDescription(description: unknown): asserts description is string {\n\tdescriptionPredicate.parse(description);\n}\n\nconst maxArrayLengthPredicate = s.unknown.array.lengthLessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\nexport function validateLocale(locale: unknown) {\n\treturn localePredicate.parse(locale);\n}\n\nexport function validateMaxOptionsLength(options: unknown): asserts options is ToAPIApplicationCommandOptions[] {\n\tmaxArrayLengthPredicate.parse(options);\n}\n\nexport function validateRequiredParameters(\n\tname: string,\n\tdescription: string,\n\toptions: ToAPIApplicationCommandOptions[],\n) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert description conditions\n\tvalidateDescription(description);\n\n\t// Assert options conditions\n\tvalidateMaxOptionsLength(options);\n}\n\nconst booleanPredicate = s.boolean;\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport function validateRequired(required: unknown): asserts required is boolean {\n\tbooleanPredicate.parse(required);\n}\n\nconst choicesLengthPredicate = s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\n\nexport function validateChoicesLength(amountAdding: number, choices?: APIApplicationCommandOptionChoice[]): void {\n\tchoicesLengthPredicate.parse((choices?.length ?? 0) + amountAdding);\n}\n\nexport function assertReturnOfBuilder<\n\tT extends ApplicationCommandOptionBase | SlashCommandSubcommandBuilder | SlashCommandSubcommandGroupBuilder,\n>(input: unknown, ExpectedInstanceOf: new () => T): asserts input is T {\n\ts.instance(ExpectedInstanceOf).parse(input);\n}\n\nexport const localizationMapPredicate = s\n\t.object(Object.fromEntries(Object.values(Locale).map((locale) => [locale, s.string.nullish])))\n\t.strict.nullish.setValidationEnabled(isValidationEnabled);\n\nexport function validateLocalizationMap(value: unknown): asserts value is LocalizationMap {\n\tlocalizationMapPredicate.parse(value);\n}\n\nconst dmPermissionPredicate = s.boolean.nullish;\n\nexport function validateDMPermission(value: unknown): asserts value is boolean | null | undefined {\n\tdmPermissionPredicate.parse(value);\n}\n\nconst memberPermissionPredicate = s.union(\n\ts.bigint.transform((value) => value.toString()),\n\ts.number.safeInt.transform((value) => value.toString()),\n\ts.string.regex(/^\\d+$/),\n).nullish;\n\nexport function validateDefaultMemberPermissions(permissions: unknown) {\n\treturn memberPermissionPredicate.parse(permissions);\n}\n","import type {\n\tAPIApplicationCommandOption,\n\tLocalizationMap,\n\tPermissions,\n\tRESTPostAPIApplicationCommandsJSONBody,\n} from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport {\n\tassertReturnOfBuilder,\n\tvalidateDefaultMemberPermissions,\n\tvalidateDefaultPermission,\n\tvalidateLocalizationMap,\n\tvalidateDMPermission,\n\tvalidateMaxOptionsLength,\n\tvalidateRequiredParameters,\n} from './Assertions';\nimport { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions';\n\n@mix(SharedSlashCommandOptions, SharedNameAndDescription)\nexport class SlashCommandBuilder {\n\t/**\n\t * The name of this slash command\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The localized names for this command\n\t */\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\t/**\n\t * The description of this slash command\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The localized descriptions for this command\n\t */\n\tpublic readonly description_localizations?: LocalizationMap;\n\n\t/**\n\t * The options of this slash command\n\t */\n\tpublic readonly options: ToAPIApplicationCommandOptions[] = [];\n\n\t/**\n\t * Whether the command is enabled by default when the app is added to a guild\n\t *\n\t * @deprecated This property is deprecated and will be removed in the future.\n\t * You should use `setDefaultMemberPermissions` or `setDMPermission` instead.\n\t */\n\tpublic readonly default_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Set of permissions represented as a bit set for the command\n\t */\n\tpublic readonly default_member_permissions: Permissions | null | undefined = undefined;\n\n\t/**\n\t * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t */\n\tpublic readonly dm_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Returns the final data that should be sent to Discord.\n\t *\n\t * **Note:** Calling this function will validate required properties based on their conditions.\n\t */\n\tpublic toJSON(): RESTPostAPIApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\tvalidateLocalizationMap(this.name_localizations);\n\t\tvalidateLocalizationMap(this.description_localizations);\n\n\t\treturn {\n\t\t\t...this,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * **Note**: If set to `false`, you will have to later `PUT` the permissions for this command.\n\t *\n\t * @param value - Whether or not to enable this command by default\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t * @deprecated Use `setDefaultMemberPermissions` or `setDMPermission` instead.\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'default_permission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the default permissions a member should have in order to run the command.\n\t *\n\t * **Note:** You can set this to `'0'` to disable the command by default.\n\t *\n\t * @param permissions - The permissions bit field to set\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined) {\n\t\t// Assert the value and parse it\n\t\tconst permissionValue = validateDefaultMemberPermissions(permissions);\n\n\t\tReflect.set(this, 'default_member_permissions', permissionValue);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets if the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t *\n\t * @param enabled - If the command should be enabled in DMs\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDMPermission(enabled: boolean | null | undefined) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDMPermission(enabled);\n\n\t\tReflect.set(this, 'dm_permission', enabled);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds a new subcommand group to this command\n\t *\n\t * @param input - A function that returns a subcommand group builder, or an already built builder\n\t */\n\tpublic addSubcommandGroup(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandGroupBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandGroupBuilder) => SlashCommandSubcommandGroupBuilder),\n\t): SlashCommandSubcommandsOnlyBuilder {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandGroupBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandGroupBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds a new subcommand to this command\n\t *\n\t * @param input - A function that returns a subcommand builder, or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t): SlashCommandSubcommandsOnlyBuilder {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n}\n\nexport interface SlashCommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {}\n\nexport interface SlashCommandSubcommandsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tPick {}\n\nexport interface SlashCommandOptionsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tSharedSlashCommandOptions,\n\t\tPick {}\n\nexport interface ToAPIApplicationCommandOptions {\n\ttoJSON: () => APIApplicationCommandOption;\n}\n","import {\n\tAPIApplicationCommandSubcommandGroupOption,\n\tAPIApplicationCommandSubcommandOption,\n\tApplicationCommandOptionType,\n} from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { assertReturnOfBuilder, validateMaxOptionsLength, validateRequiredParameters } from './Assertions';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions';\n\n/**\n * Represents a folder for subcommands\n *\n * For more information, go to https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups\n */\n@mix(SharedNameAndDescription)\nexport class SlashCommandSubcommandGroupBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand group\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand group\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The subcommands part of this subcommand group\n\t */\n\tpublic readonly options: SlashCommandSubcommandBuilder[] = [];\n\n\t/**\n\t * Adds a new subcommand to this group\n\t *\n\t * @param input - A function that returns a subcommand builder, or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t) {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandSubcommandGroupOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.SubcommandGroup,\n\t\t\tname: this.name,\n\t\t\tname_localizations: this.name_localizations,\n\t\t\tdescription: this.description,\n\t\t\tdescription_localizations: this.description_localizations,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandGroupBuilder extends SharedNameAndDescription {}\n\n/**\n * Represents a subcommand\n *\n * For more information, go to https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups\n */\n@mix(SharedNameAndDescription, SharedSlashCommandOptions)\nexport class SlashCommandSubcommandBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The options of this subcommand\n\t */\n\tpublic readonly options: ApplicationCommandOptionBase[] = [];\n\n\tpublic toJSON(): APIApplicationCommandSubcommandOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.Subcommand,\n\t\t\tname: this.name,\n\t\t\tname_localizations: this.name_localizations,\n\t\t\tdescription: this.description,\n\t\t\tdescription_localizations: this.description_localizations,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {}\n","import type { LocaleString, LocalizationMap } from 'discord-api-types/v10';\nimport { validateDescription, validateLocale, validateName } from '../Assertions';\n\nexport class SharedNameAndDescription {\n\tpublic readonly name!: string;\n\tpublic readonly name_localizations?: LocalizationMap;\n\tpublic readonly description!: string;\n\tpublic readonly description_localizations?: LocalizationMap;\n\n\t/**\n\t * Sets the name\n\t *\n\t * @param name - The name\n\t */\n\tpublic setName(name: string): this {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description\n\t *\n\t * @param description - The description\n\t */\n\tpublic setDescription(description: string) {\n\t\t// Assert the description matches the conditions\n\t\tvalidateDescription(description);\n\n\t\tReflect.set(this, 'description', description);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a name localization\n\t *\n\t * @param locale - The locale to set a description for\n\t * @param localizedName - The localized description for the given locale\n\t */\n\tpublic setNameLocalization(locale: LocaleString, localizedName: string | null) {\n\t\tif (!this.name_localizations) {\n\t\t\tReflect.set(this, 'name_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedName === null) {\n\t\t\tthis.name_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateName(localizedName);\n\n\t\tthis.name_localizations![parsedLocale] = localizedName;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the name localizations\n\t *\n\t * @param localizedNames - The dictionary of localized descriptions to set\n\t */\n\tpublic setNameLocalizations(localizedNames: LocalizationMap | null) {\n\t\tif (localizedNames === null) {\n\t\t\tReflect.set(this, 'name_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'name_localizations', {});\n\n\t\tObject.entries(localizedNames).forEach((args) =>\n\t\t\tthis.setNameLocalization(...(args as [LocaleString, string | null])),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a description localization\n\t *\n\t * @param locale - The locale to set a description for\n\t * @param localizedDescription - The localized description for the given locale\n\t */\n\tpublic setDescriptionLocalization(locale: LocaleString, localizedDescription: string | null) {\n\t\tif (!this.description_localizations) {\n\t\t\tReflect.set(this, 'description_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedDescription === null) {\n\t\t\tthis.description_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateDescription(localizedDescription);\n\n\t\tthis.description_localizations![parsedLocale] = localizedDescription;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description localizations\n\t *\n\t * @param localizedDescriptions - The dictionary of localized descriptions to set\n\t */\n\tpublic setDescriptionLocalizations(localizedDescriptions: LocalizationMap | null) {\n\t\tif (localizedDescriptions === null) {\n\t\t\tReflect.set(this, 'description_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'description_localizations', {});\n\t\tObject.entries(localizedDescriptions).forEach((args) =>\n\t\t\tthis.setDescriptionLocalization(...(args as [LocaleString, string | null])),\n\t\t);\n\t\treturn this;\n\t}\n}\n","import { APIApplicationCommandAttachmentOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandAttachmentOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Attachment as const;\n\n\tpublic toJSON(): APIApplicationCommandAttachmentOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import type { APIApplicationCommandBasicOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { SharedNameAndDescription } from './NameAndDescription';\nimport { validateRequiredParameters, validateRequired, validateLocalizationMap } from '../Assertions';\n\nexport abstract class ApplicationCommandOptionBase extends SharedNameAndDescription {\n\tpublic abstract readonly type: ApplicationCommandOptionType;\n\n\tpublic readonly required: boolean = false;\n\n\t/**\n\t * Marks the option as required\n\t *\n\t * @param required - If this option should be required\n\t */\n\tpublic setRequired(required: boolean) {\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(required);\n\n\t\tReflect.set(this, 'required', required);\n\n\t\treturn this;\n\t}\n\n\tpublic abstract toJSON(): APIApplicationCommandBasicOption;\n\n\tprotected runRequiredValidations() {\n\t\tvalidateRequiredParameters(this.name, this.description, []);\n\n\t\t// Validate localizations\n\t\tvalidateLocalizationMap(this.name_localizations);\n\t\tvalidateLocalizationMap(this.description_localizations);\n\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(this.required);\n\t}\n}\n","import { APIApplicationCommandBooleanOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandBooleanOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.Boolean as const;\n\n\tpublic toJSON(): APIApplicationCommandBooleanOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { APIApplicationCommandChannelOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionChannelTypesMixin } from '../mixins/ApplicationCommandOptionChannelTypesMixin';\n\n@mix(ApplicationCommandOptionChannelTypesMixin)\nexport class SlashCommandChannelOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Channel as const;\n\n\tpublic toJSON(): APIApplicationCommandChannelOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandChannelOption extends ApplicationCommandOptionChannelTypesMixin {}\n","import { s } from '@sapphire/shapeshift';\nimport { ChannelType } from 'discord-api-types/v10';\n\n// Only allow valid channel types to be used. (This can't be dynamic because const enums are erased at runtime)\nconst allowedChannelTypes = [\n\tChannelType.GuildText,\n\tChannelType.GuildVoice,\n\tChannelType.GuildCategory,\n\tChannelType.GuildNews,\n\tChannelType.GuildNewsThread,\n\tChannelType.GuildPublicThread,\n\tChannelType.GuildPrivateThread,\n\tChannelType.GuildStageVoice,\n] as const;\n\nexport type ApplicationCommandOptionAllowedChannelTypes = typeof allowedChannelTypes[number];\n\nconst channelTypesPredicate = s.array(s.union(...allowedChannelTypes.map((type) => s.literal(type))));\n\nexport class ApplicationCommandOptionChannelTypesMixin {\n\tpublic readonly channel_types?: ApplicationCommandOptionAllowedChannelTypes[];\n\n\t/**\n\t * Adds channel types to this option\n\t *\n\t * @param channelTypes - The channel types to add\n\t */\n\tpublic addChannelTypes(...channelTypes: ApplicationCommandOptionAllowedChannelTypes[]) {\n\t\tif (this.channel_types === undefined) {\n\t\t\tReflect.set(this, 'channel_types', []);\n\t\t}\n\n\t\tthis.channel_types!.push(...channelTypesPredicate.parse(channelTypes));\n\n\t\treturn this;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { APIApplicationCommandIntegerOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\nconst numberValidator = s.number.int;\n\n@mix(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandIntegerOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\tpublic readonly type = ApplicationCommandOptionType.Integer as const;\n\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'max_value', max);\n\n\t\treturn this;\n\t}\n\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'min_value', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandIntegerOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandIntegerOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","export abstract class ApplicationCommandNumericOptionMinMaxValueMixin {\n\tpublic readonly max_value?: number;\n\tpublic readonly min_value?: number;\n\n\t/**\n\t * Sets the maximum number value of this option\n\t *\n\t * @param max - The maximum value this option can be\n\t */\n\tpublic abstract setMaxValue(max: number): this;\n\n\t/**\n\t * Sets the minimum number value of this option\n\t *\n\t * @param min - The minimum value this option can be\n\t */\n\tpublic abstract setMinValue(min: number): this;\n}\n","import { s } from '@sapphire/shapeshift';\nimport { APIApplicationCommandOptionChoice, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { localizationMapPredicate, validateChoicesLength } from '../Assertions';\n\nconst stringPredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100);\nconst numberPredicate = s.number.greaterThan(-Infinity).lessThan(Infinity);\nconst choicesPredicate = s.object({\n\tname: stringPredicate,\n\tname_localizations: localizationMapPredicate,\n\tvalue: s.union(stringPredicate, numberPredicate),\n}).array;\nconst booleanPredicate = s.boolean;\n\nexport class ApplicationCommandOptionWithChoicesAndAutocompleteMixin {\n\tpublic readonly choices?: APIApplicationCommandOptionChoice[];\n\tpublic readonly autocomplete?: boolean;\n\n\t// Since this is present and this is a mixin, this is needed\n\tpublic readonly type!: ApplicationCommandOptionType;\n\n\t/**\n\t * Adds multiple choices for this option\n\t *\n\t * @param choices - The choices to add\n\t */\n\tpublic addChoices(...choices: APIApplicationCommandOptionChoice[]): this {\n\t\tif (choices.length > 0 && this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(choices);\n\n\t\tif (this.choices === undefined) {\n\t\t\tReflect.set(this, 'choices', []);\n\t\t}\n\n\t\tvalidateChoicesLength(choices.length, this.choices);\n\n\t\tfor (const { name, name_localizations, value } of choices) {\n\t\t\t// Validate the value\n\t\t\tif (this.type === ApplicationCommandOptionType.String) {\n\t\t\t\tstringPredicate.parse(value);\n\t\t\t} else {\n\t\t\t\tnumberPredicate.parse(value);\n\t\t\t}\n\n\t\t\tthis.choices!.push({ name, name_localizations, value });\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tpublic setChoices[]>(...choices: Input): this {\n\t\tif (choices.length > 0 && this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(choices);\n\n\t\tReflect.set(this, 'choices', []);\n\t\tthis.addChoices(...choices);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Marks the option as autocompletable\n\t * @param autocomplete - If this option should be autocompletable\n\t */\n\tpublic setAutocomplete(autocomplete: boolean): this {\n\t\t// Assert that you actually passed a boolean\n\t\tbooleanPredicate.parse(autocomplete);\n\n\t\tif (autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tReflect.set(this, 'autocomplete', autocomplete);\n\n\t\treturn this;\n\t}\n}\n","import { APIApplicationCommandMentionableOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandMentionableOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.Mentionable as const;\n\n\tpublic toJSON(): APIApplicationCommandMentionableOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { APIApplicationCommandNumberOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\nconst numberValidator = s.number;\n\n@mix(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandNumberOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\tpublic readonly type = ApplicationCommandOptionType.Number as const;\n\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'max_value', max);\n\n\t\treturn this;\n\t}\n\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'min_value', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandNumberOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandNumberOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","import { APIApplicationCommandRoleOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandRoleOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Role as const;\n\n\tpublic toJSON(): APIApplicationCommandRoleOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { APIApplicationCommandStringOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin';\n\nconst minLengthValidator = s.number.greaterThanOrEqual(0).lessThanOrEqual(6000);\nconst maxLengthValidator = s.number.greaterThanOrEqual(1).lessThanOrEqual(6000);\n\n@mix(ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandStringOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.String as const;\n\tpublic readonly max_length?: number;\n\tpublic readonly min_length?: number;\n\n\t/**\n\t * Sets the maximum length of this string option.\n\t *\n\t * @param max - The maximum length this option can be\n\t */\n\tpublic setMaxLength(max: number): this {\n\t\tmaxLengthValidator.parse(max);\n\n\t\tReflect.set(this, 'max_length', max);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum length of this string option.\n\t *\n\t * @param min - The minimum length this option can be\n\t */\n\tpublic setMinLength(min: number): this {\n\t\tminLengthValidator.parse(min);\n\n\t\tReflect.set(this, 'min_length', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandStringOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandStringOption extends ApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","import { APIApplicationCommandUserOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase';\n\nexport class SlashCommandUserOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.User as const;\n\n\tpublic toJSON(): APIApplicationCommandUserOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import type { ApplicationCommandOptionBase } from './ApplicationCommandOptionBase';\nimport { assertReturnOfBuilder, validateMaxOptionsLength } from '../Assertions';\nimport type { ToAPIApplicationCommandOptions } from '../SlashCommandBuilder';\nimport { SlashCommandAttachmentOption } from '../options/attachment';\nimport { SlashCommandBooleanOption } from '../options/boolean';\nimport { SlashCommandChannelOption } from '../options/channel';\nimport { SlashCommandIntegerOption } from '../options/integer';\nimport { SlashCommandMentionableOption } from '../options/mentionable';\nimport { SlashCommandNumberOption } from '../options/number';\nimport { SlashCommandRoleOption } from '../options/role';\nimport { SlashCommandStringOption } from '../options/string';\nimport { SlashCommandUserOption } from '../options/user';\n\nexport class SharedSlashCommandOptions {\n\tpublic readonly options!: ToAPIApplicationCommandOptions[];\n\n\t/**\n\t * Adds a boolean option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addBooleanOption(\n\t\tinput: SlashCommandBooleanOption | ((builder: SlashCommandBooleanOption) => SlashCommandBooleanOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandBooleanOption);\n\t}\n\n\t/**\n\t * Adds a user option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addUserOption(input: SlashCommandUserOption | ((builder: SlashCommandUserOption) => SlashCommandUserOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandUserOption);\n\t}\n\n\t/**\n\t * Adds a channel option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addChannelOption(\n\t\tinput: SlashCommandChannelOption | ((builder: SlashCommandChannelOption) => SlashCommandChannelOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandChannelOption);\n\t}\n\n\t/**\n\t * Adds a role option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addRoleOption(input: SlashCommandRoleOption | ((builder: SlashCommandRoleOption) => SlashCommandRoleOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandRoleOption);\n\t}\n\n\t/**\n\t * Adds an attachment option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addAttachmentOption(\n\t\tinput: SlashCommandAttachmentOption | ((builder: SlashCommandAttachmentOption) => SlashCommandAttachmentOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandAttachmentOption);\n\t}\n\n\t/**\n\t * Adds a mentionable option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addMentionableOption(\n\t\tinput: SlashCommandMentionableOption | ((builder: SlashCommandMentionableOption) => SlashCommandMentionableOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandMentionableOption);\n\t}\n\n\t/**\n\t * Adds a string option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addStringOption(\n\t\tinput:\n\t\t\t| SlashCommandStringOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandStringOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandStringOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandStringOption);\n\t}\n\n\t/**\n\t * Adds an integer option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addIntegerOption(\n\t\tinput:\n\t\t\t| SlashCommandIntegerOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandIntegerOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandIntegerOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandIntegerOption);\n\t}\n\n\t/**\n\t * Adds a number option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addNumberOption(\n\t\tinput:\n\t\t\t| SlashCommandNumberOption\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandNumberOption,\n\t\t\t ) =>\n\t\t\t\t\t| SlashCommandNumberOption\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandNumberOption);\n\t}\n\n\tprivate _sharedAddOptionMethod(\n\t\tinput:\n\t\t\t| T\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| ((builder: T) => T | Omit | Omit),\n\t\tInstance: new () => T,\n\t): ShouldOmitSubcommandFunctions extends true ? Omit : this {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new Instance()) : input;\n\n\t\tassertReturnOfBuilder(result, Instance);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandType } from 'discord-api-types/v10';\nimport type { ContextMenuCommandType } from './ContextMenuCommandBuilder';\nimport { isValidationEnabled } from '../../util/validation';\n\nconst namePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(32)\n\t.regex(/^( *[\\p{L}\\p{N}\\p{sc=Devanagari}\\p{sc=Thai}_-]+ *)+$/u)\n\t.setValidationEnabled(isValidationEnabled);\nconst typePredicate = s\n\t.union(s.literal(ApplicationCommandType.User), s.literal(ApplicationCommandType.Message))\n\t.setValidationEnabled(isValidationEnabled);\nconst booleanPredicate = s.boolean;\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nexport function validateType(type: unknown): asserts type is ContextMenuCommandType {\n\ttypePredicate.parse(type);\n}\n\nexport function validateRequiredParameters(name: string, type: number) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert type is valid\n\tvalidateType(type);\n}\n\nconst dmPermissionPredicate = s.boolean.nullish;\n\nexport function validateDMPermission(value: unknown): asserts value is boolean | null | undefined {\n\tdmPermissionPredicate.parse(value);\n}\n\nconst memberPermissionPredicate = s.union(\n\ts.bigint.transform((value) => value.toString()),\n\ts.number.safeInt.transform((value) => value.toString()),\n\ts.string.regex(/^\\d+$/),\n).nullish;\n\nexport function validateDefaultMemberPermissions(permissions: unknown) {\n\treturn memberPermissionPredicate.parse(permissions);\n}\n","import type {\n\tApplicationCommandType,\n\tLocaleString,\n\tLocalizationMap,\n\tPermissions,\n\tRESTPostAPIApplicationCommandsJSONBody,\n} from 'discord-api-types/v10';\nimport {\n\tvalidateRequiredParameters,\n\tvalidateName,\n\tvalidateType,\n\tvalidateDefaultPermission,\n\tvalidateDefaultMemberPermissions,\n\tvalidateDMPermission,\n} from './Assertions';\nimport { validateLocale, validateLocalizationMap } from '../slashCommands/Assertions';\n\nexport class ContextMenuCommandBuilder {\n\t/**\n\t * The name of this context menu command\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The localized names for this command\n\t */\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\t/**\n\t * The type of this context menu command\n\t */\n\tpublic readonly type: ContextMenuCommandType = undefined!;\n\n\t/**\n\t * Whether the command is enabled by default when the app is added to a guild\n\t *\n\t * @deprecated This property is deprecated and will be removed in the future.\n\t * You should use `setDefaultMemberPermissions` or `setDMPermission` instead.\n\t */\n\tpublic readonly default_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Set of permissions represented as a bit set for the command\n\t */\n\tpublic readonly default_member_permissions: Permissions | null | undefined = undefined;\n\n\t/**\n\t * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t */\n\tpublic readonly dm_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Sets the name\n\t *\n\t * @param name - The name\n\t */\n\tpublic setName(name: string) {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the type\n\t *\n\t * @param type - The type\n\t */\n\tpublic setType(type: ContextMenuCommandType) {\n\t\t// Assert the type is valid\n\t\tvalidateType(type);\n\n\t\tReflect.set(this, 'type', type);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * **Note**: If set to `false`, you will have to later `PUT` the permissions for this command.\n\t *\n\t * @param value - Whether or not to enable this command by default\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t * @deprecated Use `setDefaultMemberPermissions` or `setDMPermission` instead.\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'default_permission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the default permissions a member should have in order to run the command.\n\t *\n\t * **Note:** You can set this to `'0'` to disable the command by default.\n\t *\n\t * @param permissions - The permissions bit field to set\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined) {\n\t\t// Assert the value and parse it\n\t\tconst permissionValue = validateDefaultMemberPermissions(permissions);\n\n\t\tReflect.set(this, 'default_member_permissions', permissionValue);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets if the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t *\n\t * @param enabled - If the command should be enabled in DMs\n\t *\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDMPermission(enabled: boolean | null | undefined) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDMPermission(enabled);\n\n\t\tReflect.set(this, 'dm_permission', enabled);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a name localization\n\t *\n\t * @param locale - The locale to set a description for\n\t * @param localizedName - The localized description for the given locale\n\t */\n\tpublic setNameLocalization(locale: LocaleString, localizedName: string | null) {\n\t\tif (!this.name_localizations) {\n\t\t\tReflect.set(this, 'name_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedName === null) {\n\t\t\tthis.name_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateName(localizedName);\n\n\t\tthis.name_localizations![parsedLocale] = localizedName;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the name localizations\n\t *\n\t * @param localizedNames - The dictionary of localized descriptions to set\n\t */\n\tpublic setNameLocalizations(localizedNames: LocalizationMap | null) {\n\t\tif (localizedNames === null) {\n\t\t\tReflect.set(this, 'name_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'name_localizations', {});\n\n\t\tObject.entries(localizedNames).forEach((args) =>\n\t\t\tthis.setNameLocalization(...(args as [LocaleString, string | null])),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns the final data that should be sent to Discord.\n\t *\n\t * **Note:** Calling this function will validate required properties based on their conditions.\n\t */\n\tpublic toJSON(): RESTPostAPIApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.type);\n\n\t\tvalidateLocalizationMap(this.name_localizations);\n\n\t\treturn { ...this };\n\t}\n}\n\nexport type ContextMenuCommandType = ApplicationCommandType.User | ApplicationCommandType.Message;\n","export interface Equatable {\n\t/**\n\t * Whether or not this is equal to another structure\n\t */\n\tequals: (other: T) => boolean;\n}\n\n/**\n * Indicates if an object is equatable or not.\n * @param maybeEquatable - The object to check against\n */\nexport function isEquatable(maybeEquatable: unknown): maybeEquatable is Equatable {\n\treturn maybeEquatable !== null && typeof maybeEquatable === 'object' && 'equals' in maybeEquatable;\n}\n","import type { APIEmbed } from 'discord-api-types/v10';\n\nexport function embedLength(data: APIEmbed) {\n\treturn (\n\t\t(data.title?.length ?? 0) +\n\t\t(data.description?.length ?? 0) +\n\t\t(data.fields?.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) ?? 0) +\n\t\t(data.footer?.text.length ?? 0) +\n\t\t(data.author?.name.length ?? 0)\n\t);\n}\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/node_modules/zod/LICENSE b/node_modules/@discordjs/builders/node_modules/discord-api-types/LICENSE similarity index 96% rename from node_modules/zod/LICENSE rename to node_modules/@discordjs/builders/node_modules/discord-api-types/LICENSE index 2c93bb5..a8b1694 100644 --- a/node_modules/zod/LICENSE +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020 Colin McDonnell +Copyright (c) 2020 vladfrangu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/README.md b/node_modules/@discordjs/builders/node_modules/discord-api-types/README.md new file mode 100644 index 0000000..f33c5df --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/README.md @@ -0,0 +1,105 @@ +# Discord API Types + +[![discord-api-types](https://raw.githubusercontent.com/discordjs/discord-api-types/main/website/static/svgs/logo_long_blurple.svg)](https://github.com/discordjs/discord-api-types) + +[![GitHub](https://img.shields.io/github/license/discordjs/discord-api-types)](https://github.com/discordjs/discord-api-types/blob/main/LICENSE.md) +[![npm](https://img.shields.io/npm/v/discord-api-types?color=crimson&logo=npm)](https://www.npmjs.com/package/discord-api-types) +[![deno](https://img.shields.io/npm/v/discord-api-types?color=blue&label=deno&logo=deno)](https://deno.land/x/discord_api_types) +[![Patreon Donate](https://img.shields.io/badge/patreon-donate-brightgreen.svg?label=Donate%20with%20Patreon&logo=patreon&colorB=F96854&link=https://www.patreon.com/vladfrangu)](https://www.patreon.com/vladfrangu) +[![Ko-fi Donate](https://img.shields.io/badge/kofi-donate-brightgreen.svg?label=Donate%20with%20Ko-fi&logo=ko-fi&colorB=F16061&link=https://ko-fi.com/wolfgalvlad&logoColor=FFFFFF)](https://ko-fi.com/wolfgalvlad) +[![GitHub Sponsors](https://img.shields.io/badge/patreon-donate-brightgreen.svg?label=Sponsor%20through%20GitHub&logo=github&colorB=F96854&link=https://github.com/sponsors/vladfrangu)](https://github.com/sponsors/vladfrangu) +[![Powered by Vercel](https://raw.githubusercontent.com/discordjs/discord-api-types/main/website/static/powered-by-vercel.svg)](https://vercel.com?utm_source=discordjs&utm_campaign=oss) + +Simple type definitions for the [Discord API](https://discord.com/developers/docs/intro). + +## Installation + +Install with [npm](https://www.npmjs.com/) / [yarn](https://yarnpkg.com) / [pnpm](https://pnpm.js.org/): + +```sh +npm install discord-api-types +yarn add discord-api-types +pnpm add discord-api-types +``` + +### Usage + +You can only import this module by specifying the API version you want to target. Append `/v*` to the import path, where the `*` represents the API version. Below are some examples + +```js +const { APIUser } = require('discord-api-types/v10'); +``` + +```ts +// TypeScript/ES Module support +import { APIUser } from 'discord-api-types/v10'; +``` + +You may also import just certain parts of the module that you need. The possible values are: `globals`, `gateway`, `gateway/v*`, `payloads`, `payloads/v*`, `rest`, `rest/v*`, `rpc`, `rpc/v*`, `utils`, `utils/v*`, `voice`, and `voice/v*`. Below are some examples + +```js +const { GatewayVersion } = require('discord-api-types/gateway/v10'); +``` + +```ts +// TypeScript/ES Module support +import { GatewayVersion } from 'discord-api-types/gateway/v10'; +``` + +> _**Note:** The `v*` exports (`discord-api-types/v*`) include the appropriate version of `gateway`, `payloads`, `rest`, `rpc`, and `utils` you specified, alongside the `globals` exports_ + +### Deno + +We also provide typings compatible with the [deno](https://deno.land/) runtime. You have 3 ways you can import them: + +1. Directly from GitHub + +```ts +// Importing a specific API version +import { APIUser } from 'https://raw.githubusercontent.com/discordjs/discord-api-types/main/deno/v10.ts'; +``` + +2. From [deno.land/x](https://deno.land/x) + +```ts +// Importing a specific API version +import { APIUser } from 'https://deno.land/x/discord_api_types/v10.ts'; +``` + +3. From [skypack.dev](https://www.skypack.dev/) + +```ts +// Importing a specific API version +import { APIUser } from 'https://cdn.skypack.dev/discord-api-types/v10?dts'; +``` + +## Project Structure + +The exports of each API version is split into three main parts: + +- Everything exported with the `API` prefix represents a payload you may get from the REST API _or_ the Gateway. + +- Everything exported with the `Gateway` prefix represents data that ONLY comes from or is directly related to the Gateway. + +- Everything exported with the `REST` prefix represents data that ONLY comes from or is directly related to the REST API. + + - For endpoint options, they will follow the following structure: `REST` where the type represents what it will return. + + - For example, `RESTPostAPIChannelMessageJSONBody` or `RESTGetAPIGatewayBotInfoResult`. + + - Some exported types (specifically OAuth2 related ones) may not respect this entire structure due to the nature of the fields. They will start with either `RESTOAuth2` or with something similar to `RESTOAuth2` + + - If a type ends with `Result`, then it represents the expected result by calling its accompanying route. + + - Types that are exported as `never` usually mean the result will be a `204 No Content`, so you can safely ignore it. This does **not** account for errors. + +- Anything else that is miscellaneous will be exported based on what it represents (for example the `REST` route object). + +- There may be types exported that are identical for all versions. These will be exported as is and can be found in the `globals` file. They will still be prefixed accordingly as described above. + +**A note about how types are documented**: This package will add types only for known and documented properties that are present in Discord's [API Documentation repository](https://github.com/discord/discord-api-docs), +that are mentioned in an open pull request, or known through other means _and have received the green light to be used_. +Anything else will not be documented (for example client only types). + +With that aside, we may allow certain types that are not documented in the [API Documentation repository](https://github.com/discord/discord-api-docs) on a case by case basis. +They will be documented with an `@unstable` tag and are not subject with the same versioning rules. diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.d.ts b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.d.ts new file mode 100644 index 0000000..d8bcf32 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.d.ts @@ -0,0 +1,9 @@ +/** + * https://discord.com/developers/docs/topics/gateway#connecting-gateway-url-params + */ +export interface GatewayURLQuery { + v: string; + encoding: 'json' | 'etf'; + compress?: 'zlib-stream'; +} +//# sourceMappingURL=common.d.ts.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.d.ts.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.d.ts.map new file mode 100644 index 0000000..59c2f60 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["common.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;CACzB"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.js b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.js new file mode 100644 index 0000000..023264f --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=common.js.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.js.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.js.map new file mode 100644 index 0000000..d0f541d --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/common.js.map @@ -0,0 +1 @@ +{"version":3,"file":"common.js","sourceRoot":"","sources":["common.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.d.ts b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.d.ts new file mode 100644 index 0000000..73b8353 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.d.ts @@ -0,0 +1,2 @@ +export * from './v10'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.d.ts.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.d.ts.map new file mode 100644 index 0000000..ff50635 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAGA,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/zod/lib/index.js b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.js similarity index 51% rename from node_modules/zod/lib/index.js rename to node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.js index 0ec99b0..cdf95e3 100644 --- a/node_modules/zod/lib/index.js +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.js @@ -1,4 +1,6 @@ "use strict"; +// This file exports all the types available in the recommended gateway version +// Thereby, things MAY break in the future. Try sticking to imports from a specific version var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); @@ -10,24 +12,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi if (k2 === undefined) k2 = k; o[k2] = m[k]; })); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.z = void 0; -const mod = __importStar(require("./external")); -exports.z = mod; -__exportStar(require("./external"), exports); -exports.default = mod; +__exportStar(require("./v10"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.js.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.js.map new file mode 100644 index 0000000..d432448 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,2FAA2F;;;;;;;;;;;;;;;;AAE3F,wCAAsB"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.mjs b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.mjs new file mode 100644 index 0000000..fd4ff25 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/index.mjs @@ -0,0 +1,8 @@ +import mod from "./index.js"; + +export default mod; +export const GatewayCloseCodes = mod.GatewayCloseCodes; +export const GatewayDispatchEvents = mod.GatewayDispatchEvents; +export const GatewayIntentBits = mod.GatewayIntentBits; +export const GatewayOpcodes = mod.GatewayOpcodes; +export const GatewayVersion = mod.GatewayVersion; diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.d.ts b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.d.ts new file mode 100644 index 0000000..310b184 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.d.ts @@ -0,0 +1,1471 @@ +/** + * Types extracted from https://discord.com/developers/docs/topics/gateway + */ +import type { Snowflake } from '../globals'; +import type { GatewayPresenceUpdate } from '../payloads/v10/gateway'; +import type { APIApplication, APIChannel, APIEmoji, APIGuild, APIGuildIntegration, APIGuildMember, APIGuildScheduledEvent, APIInteraction, APIMessage, APIRole, APIStageInstance, APISticker, APIThreadChannel, APIThreadMember, APIUnavailableGuild, APIUser, GatewayActivity, GatewayPresenceUpdate as RawGatewayPresenceUpdate, GatewayThreadListSync as RawGatewayThreadListSync, GatewayThreadMembersUpdate as RawGatewayThreadMembersUpdate, GatewayVoiceState, InviteTargetType, PresenceUpdateStatus } from '../payloads/v10/index'; +import type { Nullable } from '../utils/internals'; +export * from './common'; +export declare const GatewayVersion = "10"; +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes + */ +export declare enum GatewayOpcodes { + /** + * An event was dispatched + */ + Dispatch = 0, + /** + * A bidirectional opcode to maintain an active gateway connection. + * Fired periodically by the client, or fired by the gateway to request an immediate heartbeat from the client. + */ + Heartbeat = 1, + /** + * Starts a new session during the initial handshake + */ + Identify = 2, + /** + * Update the client's presence + */ + PresenceUpdate = 3, + /** + * Used to join/leave or move between voice channels + */ + VoiceStateUpdate = 4, + /** + * Resume a previous session that was disconnected + */ + Resume = 6, + /** + * You should attempt to reconnect and resume immediately + */ + Reconnect = 7, + /** + * Request information about offline guild members in a large guild + */ + RequestGuildMembers = 8, + /** + * The session has been invalidated. You should reconnect and identify/resume accordingly + */ + InvalidSession = 9, + /** + * Sent immediately after connecting, contains the `heartbeat_interval` to use + */ + Hello = 10, + /** + * Sent in response to receiving a heartbeat to acknowledge that it has been received + */ + HeartbeatAck = 11 +} +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-close-event-codes + */ +export declare enum GatewayCloseCodes { + /** + * We're not sure what went wrong. Try reconnecting? + */ + UnknownError = 4000, + /** + * You sent an invalid Gateway opcode or an invalid payload for an opcode. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#payloads-and-opcodes + */ + UnknownOpcode = 4001, + /** + * You sent an invalid payload to us. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#sending-payloads + */ + DecodeError = 4002, + /** + * You sent us a payload prior to identifying + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + NotAuthenticated = 4003, + /** + * The account token sent with your identify payload is incorrect + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + AuthenticationFailed = 4004, + /** + * You sent more than one identify payload. Don't do that! + */ + AlreadyAuthenticated = 4005, + /** + * The sequence sent when resuming the session was invalid. Reconnect and start a new session + * + * See https://discord.com/developers/docs/topics/gateway#resume + */ + InvalidSeq = 4007, + /** + * Woah nelly! You're sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this + */ + RateLimited = 4008, + /** + * Your session timed out. Reconnect and start a new one + */ + SessionTimedOut = 4009, + /** + * You sent us an invalid shard when identifying + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + InvalidShard = 4010, + /** + * The session would have handled too many guilds - you are required to shard your connection in order to connect + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + ShardingRequired = 4011, + /** + * You sent an invalid version for the gateway + */ + InvalidAPIVersion = 4012, + /** + * You sent an invalid intent for a Gateway Intent. You may have incorrectly calculated the bitwise value + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + */ + InvalidIntents = 4013, + /** + * You sent a disallowed intent for a Gateway Intent. You may have tried to specify an intent that you have not + * enabled or are not whitelisted for + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + * + * See https://discord.com/developers/docs/topics/gateway#privileged-intents + */ + DisallowedIntents = 4014 +} +/** + * https://discord.com/developers/docs/topics/gateway#list-of-intents + */ +export declare enum GatewayIntentBits { + Guilds = 1, + GuildMembers = 2, + GuildBans = 4, + GuildEmojisAndStickers = 8, + GuildIntegrations = 16, + GuildWebhooks = 32, + GuildInvites = 64, + GuildVoiceStates = 128, + GuildPresences = 256, + GuildMessages = 512, + GuildMessageReactions = 1024, + GuildMessageTyping = 2048, + DirectMessages = 4096, + DirectMessageReactions = 8192, + DirectMessageTyping = 16384, + MessageContent = 32768, + GuildScheduledEvents = 65536 +} +/** + * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events + */ +export declare enum GatewayDispatchEvents { + ApplicationCommandPermissionsUpdate = "APPLICATION_COMMAND_PERMISSIONS_UPDATE", + ChannelCreate = "CHANNEL_CREATE", + ChannelDelete = "CHANNEL_DELETE", + ChannelPinsUpdate = "CHANNEL_PINS_UPDATE", + ChannelUpdate = "CHANNEL_UPDATE", + GuildBanAdd = "GUILD_BAN_ADD", + GuildBanRemove = "GUILD_BAN_REMOVE", + GuildCreate = "GUILD_CREATE", + GuildDelete = "GUILD_DELETE", + GuildEmojisUpdate = "GUILD_EMOJIS_UPDATE", + GuildIntegrationsUpdate = "GUILD_INTEGRATIONS_UPDATE", + GuildMemberAdd = "GUILD_MEMBER_ADD", + GuildMemberRemove = "GUILD_MEMBER_REMOVE", + GuildMembersChunk = "GUILD_MEMBERS_CHUNK", + GuildMemberUpdate = "GUILD_MEMBER_UPDATE", + GuildRoleCreate = "GUILD_ROLE_CREATE", + GuildRoleDelete = "GUILD_ROLE_DELETE", + GuildRoleUpdate = "GUILD_ROLE_UPDATE", + GuildStickersUpdate = "GUILD_STICKERS_UPDATE", + GuildUpdate = "GUILD_UPDATE", + IntegrationCreate = "INTEGRATION_CREATE", + IntegrationDelete = "INTEGRATION_DELETE", + IntegrationUpdate = "INTEGRATION_UPDATE", + InteractionCreate = "INTERACTION_CREATE", + InviteCreate = "INVITE_CREATE", + InviteDelete = "INVITE_DELETE", + MessageCreate = "MESSAGE_CREATE", + MessageDelete = "MESSAGE_DELETE", + MessageDeleteBulk = "MESSAGE_DELETE_BULK", + MessageReactionAdd = "MESSAGE_REACTION_ADD", + MessageReactionRemove = "MESSAGE_REACTION_REMOVE", + MessageReactionRemoveAll = "MESSAGE_REACTION_REMOVE_ALL", + MessageReactionRemoveEmoji = "MESSAGE_REACTION_REMOVE_EMOJI", + MessageUpdate = "MESSAGE_UPDATE", + PresenceUpdate = "PRESENCE_UPDATE", + StageInstanceCreate = "STAGE_INSTANCE_CREATE", + StageInstanceDelete = "STAGE_INSTANCE_DELETE", + StageInstanceUpdate = "STAGE_INSTANCE_UPDATE", + Ready = "READY", + Resumed = "RESUMED", + ThreadCreate = "THREAD_CREATE", + ThreadDelete = "THREAD_DELETE", + ThreadListSync = "THREAD_LIST_SYNC", + ThreadMembersUpdate = "THREAD_MEMBERS_UPDATE", + ThreadMemberUpdate = "THREAD_MEMBER_UPDATE", + ThreadUpdate = "THREAD_UPDATE", + TypingStart = "TYPING_START", + UserUpdate = "USER_UPDATE", + VoiceServerUpdate = "VOICE_SERVER_UPDATE", + VoiceStateUpdate = "VOICE_STATE_UPDATE", + WebhooksUpdate = "WEBHOOKS_UPDATE", + GuildScheduledEventCreate = "GUILD_SCHEDULED_EVENT_CREATE", + GuildScheduledEventUpdate = "GUILD_SCHEDULED_EVENT_UPDATE", + GuildScheduledEventDelete = "GUILD_SCHEDULED_EVENT_DELETE", + GuildScheduledEventUserAdd = "GUILD_SCHEDULED_EVENT_USER_ADD", + GuildScheduledEventUserRemove = "GUILD_SCHEDULED_EVENT_USER_REMOVE" +} +export declare type GatewaySendPayload = GatewayHeartbeat | GatewayIdentify | GatewayUpdatePresence | GatewayVoiceStateUpdate | GatewayResume | GatewayRequestGuildMembers; +export declare type GatewayReceivePayload = GatewayHello | GatewayHeartbeatRequest | GatewayHeartbeatAck | GatewayInvalidSession | GatewayReconnect | GatewayDispatchPayload; +export declare type GatewayDispatchPayload = GatewayChannelModifyDispatch | GatewayChannelPinsUpdateDispatch | GatewayGuildBanModifyDispatch | GatewayGuildCreateDispatch | GatewayGuildDeleteDispatch | GatewayGuildEmojisUpdateDispatch | GatewayGuildIntegrationsUpdateDispatch | GatewayGuildMemberAddDispatch | GatewayGuildMemberRemoveDispatch | GatewayGuildMembersChunkDispatch | GatewayGuildMemberUpdateDispatch | GatewayGuildModifyDispatch | GatewayGuildRoleDeleteDispatch | GatewayGuildRoleModifyDispatch | GatewayGuildScheduledEventCreateDispatch | GatewayGuildScheduledEventUpdateDispatch | GatewayGuildScheduledEventDeleteDispatch | GatewayGuildScheduledEventUserAddDispatch | GatewayGuildScheduledEventUserRemoveDispatch | GatewayGuildStickersUpdateDispatch | GatewayIntegrationCreateDispatch | GatewayIntegrationDeleteDispatch | GatewayIntegrationUpdateDispatch | GatewayInteractionCreateDispatch | GatewayInviteCreateDispatch | GatewayInviteDeleteDispatch | GatewayMessageCreateDispatch | GatewayMessageDeleteBulkDispatch | GatewayMessageDeleteDispatch | GatewayMessageReactionAddDispatch | GatewayMessageReactionRemoveAllDispatch | GatewayMessageReactionRemoveDispatch | GatewayMessageReactionRemoveEmojiDispatch | GatewayMessageUpdateDispatch | GatewayPresenceUpdateDispatch | GatewayStageInstanceCreateDispatch | GatewayStageInstanceDeleteDispatch | GatewayStageInstanceUpdateDispatch | GatewayReadyDispatch | GatewayResumedDispatch | GatewayThreadListSyncDispatch | GatewayThreadMembersUpdateDispatch | GatewayThreadMemberUpdateDispatch | GatewayThreadModifyDispatch | GatewayTypingStartDispatch | GatewayUserUpdateDispatch | GatewayVoiceServerUpdateDispatch | GatewayVoiceStateUpdateDispatch | GatewayWebhooksUpdateDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#hello + */ +export interface GatewayHello extends NonDispatchPayload { + op: GatewayOpcodes.Hello; + d: GatewayHelloData; +} +/** + * https://discord.com/developers/docs/topics/gateway#hello + */ +export interface GatewayHelloData { + /** + * The interval (in milliseconds) the client should heartbeat with + */ + heartbeat_interval: number; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + */ +export interface GatewayHeartbeatRequest extends NonDispatchPayload { + op: GatewayOpcodes.Heartbeat; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating-example-gateway-heartbeat-ack + */ +export interface GatewayHeartbeatAck extends NonDispatchPayload { + op: GatewayOpcodes.HeartbeatAck; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#invalid-session + */ +export interface GatewayInvalidSession extends NonDispatchPayload { + op: GatewayOpcodes.InvalidSession; + d: GatewayInvalidSessionData; +} +/** + * https://discord.com/developers/docs/topics/gateway#invalid-session + */ +export declare type GatewayInvalidSessionData = boolean; +/** + * https://discord.com/developers/docs/topics/gateway#reconnect + */ +export interface GatewayReconnect extends NonDispatchPayload { + op: GatewayOpcodes.Reconnect; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#ready + */ +export declare type GatewayReadyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#ready + */ +export interface GatewayReadyDispatchData { + /** + * Gateway version + * + * See https://discord.com/developers/docs/topics/gateway#gateways-gateway-versions + */ + v: number; + /** + * Information about the user including email + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + user: APIUser; + /** + * The guilds the user is in + * + * See https://discord.com/developers/docs/resources/guild#unavailable-guild-object + */ + guilds: APIUnavailableGuild[]; + /** + * Used for resuming connections + */ + session_id: string; + /** + * The shard information associated with this session, if sent when identifying + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + shard?: [shard_id: number, shard_count: number]; + /** + * Contains `id` and `flags` + * + * See https://discord.com/developers/docs/resources/application#application-object + */ + application: Pick; +} +/** + * https://discord.com/developers/docs/topics/gateway#resumed + */ +export declare type GatewayResumedDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + * https://discord.com/developers/docs/topics/gateway#channel-update + * https://discord.com/developers/docs/topics/gateway#channel-delete + */ +export declare type GatewayChannelModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + * https://discord.com/developers/docs/topics/gateway#channel-update + * https://discord.com/developers/docs/topics/gateway#channel-delete + */ +export declare type GatewayChannelModifyDispatchData = APIChannel; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + */ +export declare type GatewayChannelCreateDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + */ +export declare type GatewayChannelCreateDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#channel-update + */ +export declare type GatewayChannelUpdateDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#channel-update + */ +export declare type GatewayChannelUpdateDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#channel-delete + */ +export declare type GatewayChannelDeleteDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#channel-delete + */ +export declare type GatewayChannelDeleteDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#channel-pins-update + */ +export declare type GatewayChannelPinsUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#channel-pins-update + */ +export interface GatewayChannelPinsUpdateDispatchData { + /** + * The id of the guild + */ + guild_id?: Snowflake; + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The time at which the most recent pinned message was pinned + */ + last_pin_timestamp?: string | null; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-create + */ +export declare type GatewayGuildModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-update + */ +export declare type GatewayGuildModifyDispatchData = APIGuild; +/** + * https://discord.com/developers/docs/topics/gateway#guild-create + */ +export declare type GatewayGuildCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-create + * https://discord.com/developers/docs/topics/gateway#guild-create-guild-create-extra-fields + */ +export interface GatewayGuildCreateDispatchData extends APIGuild { + /** + * When this guild was joined at + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + */ + joined_at: string; + /** + * `true` if this is considered a large guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + */ + large: boolean; + /** + * `true` if this guild is unavailable due to an outage + */ + unavailable?: boolean; + /** + * Total number of members in this guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + */ + member_count: number; + /** + * States of members currently in voice channels; lacks the `guild_id` key + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/resources/voice#voice-state-object + */ + voice_states: Omit[]; + /** + * Users in the guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + members: APIGuildMember[]; + /** + * Channels in the guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/resources/channel#channel-object + */ + channels: APIChannel[]; + /** + * Threads in the guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/resources/channel#channel-object + */ + threads: APIChannel[]; + /** + * Presences of the members in the guild, will only include non-offline members if the size is greater than `large_threshold` + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/topics/gateway#presence-update + */ + presences: GatewayPresenceUpdate[]; + /** + * The stage instances in the guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/resources/stage-instance#stage-instance-object-stage-instance-structure + */ + stage_instances: APIStageInstance[]; + /** + * The scheduled events in the guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object + */ + guild_scheduled_events: APIGuildScheduledEvent[]; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-update + */ +export declare type GatewayGuildUpdateDispatch = GatewayGuildModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-update + */ +export declare type GatewayGuildUpdateDispatchData = GatewayGuildModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-delete + */ +export declare type GatewayGuildDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-delete + */ +export declare type GatewayGuildDeleteDispatchData = APIUnavailableGuild; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + */ +export declare type GatewayGuildBanModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + */ +export interface GatewayGuildBanModifyDispatchData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * The banned user + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + user: APIUser; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + */ +export declare type GatewayGuildBanAddDispatch = GatewayGuildBanModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + */ +export declare type GatewayGuildBanAddDispatchData = GatewayGuildBanModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + */ +export declare type GatewayGuildBanRemoveDispatch = GatewayGuildBanModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + */ +export declare type GatewayGuildBanRemoveDispatchData = GatewayGuildBanModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-emojis-update + */ +export declare type GatewayGuildEmojisUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-emojis-update + */ +export interface GatewayGuildEmojisUpdateDispatchData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * Array of emojis + * + * See https://discord.com/developers/docs/resources/emoji#emoji-object + */ + emojis: APIEmoji[]; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-stickers-update + */ +export declare type GatewayGuildStickersUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-stickers-update + */ +export interface GatewayGuildStickersUpdateDispatchData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * Array of stickers + * + * See https://discord.com/developers/docs/resources/sticker#sticker-object + */ + stickers: APISticker[]; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-integrations-update + */ +export declare type GatewayGuildIntegrationsUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-integrations-update + */ +export interface GatewayGuildIntegrationsUpdateDispatchData { + /** + * ID of the guild whose integrations were updated + */ + guild_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-add + */ +export declare type GatewayGuildMemberAddDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-add + */ +export interface GatewayGuildMemberAddDispatchData extends APIGuildMember { + /** + * The id of the guild + */ + guild_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-remove + */ +export declare type GatewayGuildMemberRemoveDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-remove + */ +export interface GatewayGuildMemberRemoveDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The user who was removed + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + user: APIUser; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-update + */ +export declare type GatewayGuildMemberUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-update + */ +export declare type GatewayGuildMemberUpdateDispatchData = Omit & Partial> & Required> & Nullable> & { + /** + * The id of the guild + */ + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#guild-members-chunk + */ +export declare type GatewayGuildMembersChunkDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-members-chunk + */ +export interface GatewayGuildMembersChunkDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * Set of guild members + * + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + members: APIGuildMember[]; + /** + * The chunk index in the expected chunks for this response (`0 <= chunk_index < chunk_count`) + */ + chunk_index?: number; + /** + * The total number of expected chunks for this response + */ + chunk_count?: number; + /** + * If passing an invalid id to `REQUEST_GUILD_MEMBERS`, it will be returned here + */ + not_found?: unknown[]; + /** + * If passing true to `REQUEST_GUILD_MEMBERS`, presences of the returned members will be here + * + * See https://discord.com/developers/docs/topics/gateway#presence + */ + presences?: RawGatewayPresenceUpdate[]; + /** + * The nonce used in the Guild Members Request + * + * See https://discord.com/developers/docs/topics/gateway#request-guild-members + */ + nonce?: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + * https://discord.com/developers/docs/topics/gateway#guild-role-update + */ +export declare type GatewayGuildRoleModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + * https://discord.com/developers/docs/topics/gateway#guild-role-update + */ +export interface GatewayGuildRoleModifyDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The role created or updated + * + * See https://discord.com/developers/docs/topics/permissions#role-object + */ + role: APIRole; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + */ +export declare type GatewayGuildRoleCreateDispatch = GatewayGuildRoleModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + */ +export declare type GatewayGuildRoleCreateDispatchData = GatewayGuildRoleModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-update + */ +export declare type GatewayGuildRoleUpdateDispatch = GatewayGuildRoleModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-update + */ +export declare type GatewayGuildRoleUpdateDispatchData = GatewayGuildRoleModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-delete + */ +export declare type GatewayGuildRoleDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-delete + */ +export interface GatewayGuildRoleDeleteDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The id of the role + */ + role_id: Snowflake; +} +export declare type GatewayGuildScheduledEventCreateDispatch = DataPayload; +export declare type GatewayGuildScheduledEventCreateDispatchData = APIGuildScheduledEvent; +export declare type GatewayGuildScheduledEventUpdateDispatch = DataPayload; +export declare type GatewayGuildScheduledEventUpdateDispatchData = APIGuildScheduledEvent; +export declare type GatewayGuildScheduledEventDeleteDispatch = DataPayload; +export declare type GatewayGuildScheduledEventDeleteDispatchData = APIGuildScheduledEvent; +export declare type GatewayGuildScheduledEventUserAddDispatch = DataPayload; +export interface GatewayGuildScheduledEventUserAddDispatchData { + guild_scheduled_event_id: Snowflake; + user_id: Snowflake; + guild_id: Snowflake; +} +export declare type GatewayGuildScheduledEventUserRemoveDispatch = DataPayload; +export interface GatewayGuildScheduledEventUserRemoveDispatchData { + guild_scheduled_event_id: Snowflake; + user_id: Snowflake; + guild_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#integration-create + */ +export declare type GatewayIntegrationCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#integration-create + */ +export declare type GatewayIntegrationCreateDispatchData = APIGuildIntegration & { + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#integration-update + */ +export declare type GatewayIntegrationUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#integration-update + */ +export declare type GatewayIntegrationUpdateDispatchData = APIGuildIntegration & { + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#integration-update + */ +export declare type GatewayIntegrationDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#integration-delete + */ +export interface GatewayIntegrationDeleteDispatchData { + /** + * Integration id + */ + id: Snowflake; + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * ID of the bot/OAuth2 application for this Discord integration + */ + application_id?: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#interaction-create + */ +export declare type GatewayInteractionCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#interaction-create + */ +export declare type GatewayInteractionCreateDispatchData = APIInteraction; +/** + * https://discord.com/developers/docs/topics/gateway#invite-create + */ +export declare type GatewayInviteCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#invite-create + */ +export interface GatewayInviteCreateDispatchData { + /** + * The channel the invite is for + */ + channel_id: Snowflake; + /** + * The unique invite code + * + * See https://discord.com/developers/docs/resources/invite#invite-object + */ + code: string; + /** + * The time at which the invite was created + */ + created_at: number; + /** + * The guild of the invite + */ + guild_id?: Snowflake; + /** + * The user that created the invite + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + inviter?: APIUser; + /** + * How long the invite is valid for (in seconds) + */ + max_age: number; + /** + * The maximum number of times the invite can be used + */ + max_uses: number; + /** + * The type of target for this voice channel invite + * + * See https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types + */ + target_type?: InviteTargetType; + /** + * The user whose stream to display for this voice channel stream invite + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + target_user?: APIUser; + /** + * The embedded application to open for this voice channel embedded application invite + */ + target_application?: Partial; + /** + * Whether or not the invite is temporary (invited users will be kicked on disconnect unless they're assigned a role) + */ + temporary: boolean; + /** + * How many times the invite has been used (always will be `0`) + */ + uses: 0; +} +/** + * https://discord.com/developers/docs/topics/gateway#invite-delete + */ +export declare type GatewayInviteDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#invite-delete + */ +export interface GatewayInviteDeleteDispatchData { + /** + * The channel of the invite + */ + channel_id: Snowflake; + /** + * The guild of the invite + */ + guild_id?: Snowflake; + /** + * The unique invite code + * + * See https://discord.com/developers/docs/resources/invite#invite-object + */ + code: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-create + */ +export declare type GatewayMessageCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-create + */ +export declare type GatewayMessageCreateDispatchData = Omit & GatewayMessageEventExtraFields; +/** + * https://discord.com/developers/docs/topics/gateway#message-update + */ +export declare type GatewayMessageUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-update + */ +export declare type GatewayMessageUpdateDispatchData = Omit, 'mentions'> & GatewayMessageEventExtraFields & { + /** + * ID of the message + */ + id: Snowflake; + /** + * ID of the channel the message was sent in + */ + channel_id: Snowflake; +}; +export interface GatewayMessageEventExtraFields { + /** + * ID of the guild the message was sent in + */ + guild_id?: Snowflake; + /** + * Member properties for this message's author + * + * The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events + * from text-based guild channels + * + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + member?: APIGuildMember; + /** + * Users specifically mentioned in the message + * + * The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events + * from text-based guild channels + * + * See https://discord.com/developers/docs/resources/user#user-object + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + mentions: (APIUser & { + member?: Omit; + })[]; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-delete + */ +export declare type GatewayMessageDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-delete + */ +export interface GatewayMessageDeleteDispatchData { + /** + * The id of the message + */ + id: Snowflake; + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-delete-bulk + */ +export declare type GatewayMessageDeleteBulkDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-delete-bulk + */ +export interface GatewayMessageDeleteBulkDispatchData { + /** + * The ids of the messages + */ + ids: Snowflake[]; + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-add + */ +export declare type GatewayMessageReactionAddDispatch = ReactionData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-add + */ +export declare type GatewayMessageReactionAddDispatchData = GatewayMessageReactionAddDispatch['d']; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove + */ +export declare type GatewayMessageReactionRemoveDispatch = ReactionData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove + */ +export declare type GatewayMessageReactionRemoveDispatchData = GatewayMessageReactionRemoveDispatch['d']; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-all + */ +export declare type GatewayMessageReactionRemoveAllDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-all + */ +export declare type GatewayMessageReactionRemoveAllDispatchData = MessageReactionRemoveData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-emoji + */ +export declare type GatewayMessageReactionRemoveEmojiDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-emoji + */ +export interface GatewayMessageReactionRemoveEmojiDispatchData extends MessageReactionRemoveData { + /** + * The emoji that was removed + */ + emoji: APIEmoji; +} +/** + * https://discord.com/developers/docs/topics/gateway#presence-update + */ +export declare type GatewayPresenceUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#presence-update + */ +export declare type GatewayPresenceUpdateDispatchData = RawGatewayPresenceUpdate; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-create + */ +export declare type GatewayStageInstanceCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-create + */ +export declare type GatewayStageInstanceCreateDispatchData = APIStageInstance; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-delete + */ +export declare type GatewayStageInstanceDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-delete + */ +export declare type GatewayStageInstanceDeleteDispatchData = APIStageInstance; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-update + */ +export declare type GatewayStageInstanceUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-update + */ +export declare type GatewayStageInstanceUpdateDispatchData = APIStageInstance; +/** + * https://discord.com/developers/docs/topics/gateway#thread-list-sync + */ +export declare type GatewayThreadListSyncDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#thread-list-sync + */ +export declare type GatewayThreadListSyncDispatchData = RawGatewayThreadListSync; +/** + * https://discord.com/developers/docs/topics/gateway#thread-members-update + */ +export declare type GatewayThreadMembersUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#thread-members-update + */ +export declare type GatewayThreadMembersUpdateDispatchData = RawGatewayThreadMembersUpdate; +/** + * https://discord.com/developers/docs/topics/gateway#thread-member-update + */ +export declare type GatewayThreadMemberUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#thread-member-update + */ +export declare type GatewayThreadMemberUpdateDispatchData = APIThreadMember & { + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#thread-create + * https://discord.com/developers/docs/topics/gateway#thread-update + * https://discord.com/developers/docs/topics/gateway#thread-delete + */ +export declare type GatewayThreadModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#thread-create + */ +export declare type GatewayThreadCreateDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#thread-create + */ +export interface GatewayThreadCreateDispatchData extends APIThreadChannel { + /** + * Whether the thread is newly created or not. + */ + newly_created?: true; +} +/** + * https://discord.com/developers/docs/topics/gateway#thread-update + */ +export declare type GatewayThreadUpdateDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#thread-update + */ +export declare type GatewayThreadUpdateDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#thread-delete + */ +export declare type GatewayThreadDeleteDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#thread-delete + */ +export declare type GatewayThreadDeleteDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#typing-start + */ +export declare type GatewayTypingStartDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#typing-start + */ +export interface GatewayTypingStartDispatchData { + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; + /** + * The id of the user + */ + user_id: Snowflake; + /** + * Unix time (in seconds) of when the user started typing + */ + timestamp: number; + /** + * The member who started typing if this happened in a guild + * + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + member?: APIGuildMember; +} +/** + * https://discord.com/developers/docs/topics/gateway#user-update + */ +export declare type GatewayUserUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#user-update + */ +export declare type GatewayUserUpdateDispatchData = APIUser; +/** + * https://discord.com/developers/docs/topics/gateway#voice-state-update + */ +export declare type GatewayVoiceStateUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#voice-state-update + */ +export declare type GatewayVoiceStateUpdateDispatchData = GatewayVoiceState; +/** + * https://discord.com/developers/docs/topics/gateway#voice-server-update + */ +export declare type GatewayVoiceServerUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#voice-server-update + */ +export interface GatewayVoiceServerUpdateDispatchData { + /** + * Voice connection token + */ + token: string; + /** + * The guild this voice server update is for + */ + guild_id: Snowflake; + /** + * The voice server host + * + * A `null` endpoint means that the voice server allocated has gone away and is trying to be reallocated. + * You should attempt to disconnect from the currently connected voice server, and not attempt to reconnect + * until a new voice server is allocated + */ + endpoint: string | null; +} +/** + * https://discord.com/developers/docs/topics/gateway#webhooks-update + */ +export declare type GatewayWebhooksUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#webhooks-update + */ +export interface GatewayWebhooksUpdateDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The id of the channel + */ + channel_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + */ +export interface GatewayHeartbeat { + op: GatewayOpcodes.Heartbeat; + d: GatewayHeartbeatData; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + */ +export declare type GatewayHeartbeatData = number | null; +/** + * https://discord.com/developers/docs/topics/gateway#identify + */ +export interface GatewayIdentify { + op: GatewayOpcodes.Identify; + d: GatewayIdentifyData; +} +/** + * https://discord.com/developers/docs/topics/gateway#identify + */ +export interface GatewayIdentifyData { + /** + * Authentication token + */ + token: string; + /** + * Connection properties + * + * See https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties + */ + properties: GatewayIdentifyProperties; + /** + * Whether this connection supports compression of packets + * + * @default false + */ + compress?: boolean; + /** + * Value between 50 and 250, total number of members where the gateway will stop sending + * offline members in the guild member list + * + * @default 50 + */ + large_threshold?: number; + /** + * Used for Guild Sharding + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + shard?: [shard_id: number, shard_count: number]; + /** + * Presence structure for initial presence information + * + * See https://discord.com/developers/docs/topics/gateway#update-presence + */ + presence?: GatewayPresenceUpdateData; + /** + * The Gateway Intents you wish to receive + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + */ + intents: number; +} +/** + * https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties + */ +export interface GatewayIdentifyProperties { + /** + * Your operating system + */ + os: string; + /** + * Your library name + */ + browser: string; + /** + * Your library name + */ + device: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#resume + */ +export interface GatewayResume { + op: GatewayOpcodes.Resume; + d: GatewayResumeData; +} +/** + * https://discord.com/developers/docs/topics/gateway#resume + */ +export interface GatewayResumeData { + /** + * Session token + */ + token: string; + /** + * Session id + */ + session_id: string; + /** + * Last sequence number received + */ + seq: number; +} +/** + * https://discord.com/developers/docs/topics/gateway#request-guild-members + */ +export interface GatewayRequestGuildMembers { + op: GatewayOpcodes.RequestGuildMembers; + d: GatewayRequestGuildMembersData; +} +/** + * https://discord.com/developers/docs/topics/gateway#request-guild-members + */ +export interface GatewayRequestGuildMembersData { + /** + * ID of the guild to get members for + */ + guild_id: Snowflake; + /** + * String that username starts with, or an empty string to return all members + */ + query?: string; + /** + * Maximum number of members to send matching the `query`; + * a limit of `0` can be used with an empty string `query` to return all members + */ + limit: number; + /** + * Used to specify if we want the presences of the matched members + */ + presences?: boolean; + /** + * Used to specify which users you wish to fetch + */ + user_ids?: Snowflake | Snowflake[]; + /** + * Nonce to identify the Guild Members Chunk response + * + * Nonce can only be up to 32 bytes. If you send an invalid nonce it will be ignored and the reply member_chunk(s) will not have a `nonce` set. + * + * See https://discord.com/developers/docs/topics/gateway#guild-members-chunk + */ + nonce?: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-voice-state + */ +export interface GatewayVoiceStateUpdate { + op: GatewayOpcodes.VoiceStateUpdate; + d: GatewayVoiceStateUpdateData; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-voice-state + */ +export interface GatewayVoiceStateUpdateData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * ID of the voice channel client wants to join (`null` if disconnecting) + */ + channel_id: Snowflake | null; + /** + * Is the client muted + */ + self_mute: boolean; + /** + * Is the client deafened + */ + self_deaf: boolean; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-status + */ +export interface GatewayUpdatePresence { + op: GatewayOpcodes.PresenceUpdate; + d: GatewayPresenceUpdateData; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-presence-gateway-presence-update-structure + */ +export interface GatewayPresenceUpdateData { + /** + * Unix time (in milliseconds) of when the client went idle, or `null` if the client is not idle + */ + since: number | null; + /** + * The user's activities + * + * See https://discord.com/developers/docs/topics/gateway#activity-object + */ + activities: GatewayActivityUpdateData[]; + /** + * The user's new status + * + * See https://discord.com/developers/docs/topics/gateway#update-presence-status-types + */ + status: PresenceUpdateStatus; + /** + * Whether or not the client is afk + */ + afk: boolean; +} +/** + * https://discord.com/developers/docs/topics/gateway#activity-object-activity-structure + */ +export declare type GatewayActivityUpdateData = Pick; +interface BasePayload { + /** + * Opcode for the payload + */ + op: GatewayOpcodes; + /** + * Event data + */ + d?: unknown; + /** + * Sequence number, used for resuming sessions and heartbeats + */ + s: number; + /** + * The event name for this payload + */ + t?: string; +} +declare type NonDispatchPayload = Omit & { + t: null; + s: null; +}; +interface DataPayload extends BasePayload { + op: GatewayOpcodes.Dispatch; + t: Event; + d: D; +} +declare type ReactionData = DataPayload>; +interface MessageReactionRemoveData { + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the message + */ + message_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; +} +//# sourceMappingURL=v10.d.ts.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.d.ts.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.d.ts.map new file mode 100644 index 0000000..a741060 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"v10.d.ts","sourceRoot":"","sources":["v10.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.js b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.js new file mode 100644 index 0000000..94aaefa --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.js @@ -0,0 +1,243 @@ +"use strict"; +/** + * Types extracted from https://discord.com/developers/docs/topics/gateway + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GatewayDispatchEvents = exports.GatewayIntentBits = exports.GatewayCloseCodes = exports.GatewayOpcodes = exports.GatewayVersion = void 0; +__exportStar(require("./common"), exports); +exports.GatewayVersion = '10'; +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes + */ +var GatewayOpcodes; +(function (GatewayOpcodes) { + /** + * An event was dispatched + */ + GatewayOpcodes[GatewayOpcodes["Dispatch"] = 0] = "Dispatch"; + /** + * A bidirectional opcode to maintain an active gateway connection. + * Fired periodically by the client, or fired by the gateway to request an immediate heartbeat from the client. + */ + GatewayOpcodes[GatewayOpcodes["Heartbeat"] = 1] = "Heartbeat"; + /** + * Starts a new session during the initial handshake + */ + GatewayOpcodes[GatewayOpcodes["Identify"] = 2] = "Identify"; + /** + * Update the client's presence + */ + GatewayOpcodes[GatewayOpcodes["PresenceUpdate"] = 3] = "PresenceUpdate"; + /** + * Used to join/leave or move between voice channels + */ + GatewayOpcodes[GatewayOpcodes["VoiceStateUpdate"] = 4] = "VoiceStateUpdate"; + /** + * Resume a previous session that was disconnected + */ + GatewayOpcodes[GatewayOpcodes["Resume"] = 6] = "Resume"; + /** + * You should attempt to reconnect and resume immediately + */ + GatewayOpcodes[GatewayOpcodes["Reconnect"] = 7] = "Reconnect"; + /** + * Request information about offline guild members in a large guild + */ + GatewayOpcodes[GatewayOpcodes["RequestGuildMembers"] = 8] = "RequestGuildMembers"; + /** + * The session has been invalidated. You should reconnect and identify/resume accordingly + */ + GatewayOpcodes[GatewayOpcodes["InvalidSession"] = 9] = "InvalidSession"; + /** + * Sent immediately after connecting, contains the `heartbeat_interval` to use + */ + GatewayOpcodes[GatewayOpcodes["Hello"] = 10] = "Hello"; + /** + * Sent in response to receiving a heartbeat to acknowledge that it has been received + */ + GatewayOpcodes[GatewayOpcodes["HeartbeatAck"] = 11] = "HeartbeatAck"; +})(GatewayOpcodes = exports.GatewayOpcodes || (exports.GatewayOpcodes = {})); +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-close-event-codes + */ +var GatewayCloseCodes; +(function (GatewayCloseCodes) { + /** + * We're not sure what went wrong. Try reconnecting? + */ + GatewayCloseCodes[GatewayCloseCodes["UnknownError"] = 4000] = "UnknownError"; + /** + * You sent an invalid Gateway opcode or an invalid payload for an opcode. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#payloads-and-opcodes + */ + GatewayCloseCodes[GatewayCloseCodes["UnknownOpcode"] = 4001] = "UnknownOpcode"; + /** + * You sent an invalid payload to us. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#sending-payloads + */ + GatewayCloseCodes[GatewayCloseCodes["DecodeError"] = 4002] = "DecodeError"; + /** + * You sent us a payload prior to identifying + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + GatewayCloseCodes[GatewayCloseCodes["NotAuthenticated"] = 4003] = "NotAuthenticated"; + /** + * The account token sent with your identify payload is incorrect + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + GatewayCloseCodes[GatewayCloseCodes["AuthenticationFailed"] = 4004] = "AuthenticationFailed"; + /** + * You sent more than one identify payload. Don't do that! + */ + GatewayCloseCodes[GatewayCloseCodes["AlreadyAuthenticated"] = 4005] = "AlreadyAuthenticated"; + /** + * The sequence sent when resuming the session was invalid. Reconnect and start a new session + * + * See https://discord.com/developers/docs/topics/gateway#resume + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidSeq"] = 4007] = "InvalidSeq"; + /** + * Woah nelly! You're sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this + */ + GatewayCloseCodes[GatewayCloseCodes["RateLimited"] = 4008] = "RateLimited"; + /** + * Your session timed out. Reconnect and start a new one + */ + GatewayCloseCodes[GatewayCloseCodes["SessionTimedOut"] = 4009] = "SessionTimedOut"; + /** + * You sent us an invalid shard when identifying + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidShard"] = 4010] = "InvalidShard"; + /** + * The session would have handled too many guilds - you are required to shard your connection in order to connect + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + GatewayCloseCodes[GatewayCloseCodes["ShardingRequired"] = 4011] = "ShardingRequired"; + /** + * You sent an invalid version for the gateway + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidAPIVersion"] = 4012] = "InvalidAPIVersion"; + /** + * You sent an invalid intent for a Gateway Intent. You may have incorrectly calculated the bitwise value + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidIntents"] = 4013] = "InvalidIntents"; + /** + * You sent a disallowed intent for a Gateway Intent. You may have tried to specify an intent that you have not + * enabled or are not whitelisted for + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + * + * See https://discord.com/developers/docs/topics/gateway#privileged-intents + */ + GatewayCloseCodes[GatewayCloseCodes["DisallowedIntents"] = 4014] = "DisallowedIntents"; +})(GatewayCloseCodes = exports.GatewayCloseCodes || (exports.GatewayCloseCodes = {})); +/** + * https://discord.com/developers/docs/topics/gateway#list-of-intents + */ +var GatewayIntentBits; +(function (GatewayIntentBits) { + GatewayIntentBits[GatewayIntentBits["Guilds"] = 1] = "Guilds"; + GatewayIntentBits[GatewayIntentBits["GuildMembers"] = 2] = "GuildMembers"; + GatewayIntentBits[GatewayIntentBits["GuildBans"] = 4] = "GuildBans"; + GatewayIntentBits[GatewayIntentBits["GuildEmojisAndStickers"] = 8] = "GuildEmojisAndStickers"; + GatewayIntentBits[GatewayIntentBits["GuildIntegrations"] = 16] = "GuildIntegrations"; + GatewayIntentBits[GatewayIntentBits["GuildWebhooks"] = 32] = "GuildWebhooks"; + GatewayIntentBits[GatewayIntentBits["GuildInvites"] = 64] = "GuildInvites"; + GatewayIntentBits[GatewayIntentBits["GuildVoiceStates"] = 128] = "GuildVoiceStates"; + GatewayIntentBits[GatewayIntentBits["GuildPresences"] = 256] = "GuildPresences"; + GatewayIntentBits[GatewayIntentBits["GuildMessages"] = 512] = "GuildMessages"; + GatewayIntentBits[GatewayIntentBits["GuildMessageReactions"] = 1024] = "GuildMessageReactions"; + GatewayIntentBits[GatewayIntentBits["GuildMessageTyping"] = 2048] = "GuildMessageTyping"; + GatewayIntentBits[GatewayIntentBits["DirectMessages"] = 4096] = "DirectMessages"; + GatewayIntentBits[GatewayIntentBits["DirectMessageReactions"] = 8192] = "DirectMessageReactions"; + GatewayIntentBits[GatewayIntentBits["DirectMessageTyping"] = 16384] = "DirectMessageTyping"; + GatewayIntentBits[GatewayIntentBits["MessageContent"] = 32768] = "MessageContent"; + GatewayIntentBits[GatewayIntentBits["GuildScheduledEvents"] = 65536] = "GuildScheduledEvents"; +})(GatewayIntentBits = exports.GatewayIntentBits || (exports.GatewayIntentBits = {})); +/** + * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events + */ +var GatewayDispatchEvents; +(function (GatewayDispatchEvents) { + GatewayDispatchEvents["ApplicationCommandPermissionsUpdate"] = "APPLICATION_COMMAND_PERMISSIONS_UPDATE"; + GatewayDispatchEvents["ChannelCreate"] = "CHANNEL_CREATE"; + GatewayDispatchEvents["ChannelDelete"] = "CHANNEL_DELETE"; + GatewayDispatchEvents["ChannelPinsUpdate"] = "CHANNEL_PINS_UPDATE"; + GatewayDispatchEvents["ChannelUpdate"] = "CHANNEL_UPDATE"; + GatewayDispatchEvents["GuildBanAdd"] = "GUILD_BAN_ADD"; + GatewayDispatchEvents["GuildBanRemove"] = "GUILD_BAN_REMOVE"; + GatewayDispatchEvents["GuildCreate"] = "GUILD_CREATE"; + GatewayDispatchEvents["GuildDelete"] = "GUILD_DELETE"; + GatewayDispatchEvents["GuildEmojisUpdate"] = "GUILD_EMOJIS_UPDATE"; + GatewayDispatchEvents["GuildIntegrationsUpdate"] = "GUILD_INTEGRATIONS_UPDATE"; + GatewayDispatchEvents["GuildMemberAdd"] = "GUILD_MEMBER_ADD"; + GatewayDispatchEvents["GuildMemberRemove"] = "GUILD_MEMBER_REMOVE"; + GatewayDispatchEvents["GuildMembersChunk"] = "GUILD_MEMBERS_CHUNK"; + GatewayDispatchEvents["GuildMemberUpdate"] = "GUILD_MEMBER_UPDATE"; + GatewayDispatchEvents["GuildRoleCreate"] = "GUILD_ROLE_CREATE"; + GatewayDispatchEvents["GuildRoleDelete"] = "GUILD_ROLE_DELETE"; + GatewayDispatchEvents["GuildRoleUpdate"] = "GUILD_ROLE_UPDATE"; + GatewayDispatchEvents["GuildStickersUpdate"] = "GUILD_STICKERS_UPDATE"; + GatewayDispatchEvents["GuildUpdate"] = "GUILD_UPDATE"; + GatewayDispatchEvents["IntegrationCreate"] = "INTEGRATION_CREATE"; + GatewayDispatchEvents["IntegrationDelete"] = "INTEGRATION_DELETE"; + GatewayDispatchEvents["IntegrationUpdate"] = "INTEGRATION_UPDATE"; + GatewayDispatchEvents["InteractionCreate"] = "INTERACTION_CREATE"; + GatewayDispatchEvents["InviteCreate"] = "INVITE_CREATE"; + GatewayDispatchEvents["InviteDelete"] = "INVITE_DELETE"; + GatewayDispatchEvents["MessageCreate"] = "MESSAGE_CREATE"; + GatewayDispatchEvents["MessageDelete"] = "MESSAGE_DELETE"; + GatewayDispatchEvents["MessageDeleteBulk"] = "MESSAGE_DELETE_BULK"; + GatewayDispatchEvents["MessageReactionAdd"] = "MESSAGE_REACTION_ADD"; + GatewayDispatchEvents["MessageReactionRemove"] = "MESSAGE_REACTION_REMOVE"; + GatewayDispatchEvents["MessageReactionRemoveAll"] = "MESSAGE_REACTION_REMOVE_ALL"; + GatewayDispatchEvents["MessageReactionRemoveEmoji"] = "MESSAGE_REACTION_REMOVE_EMOJI"; + GatewayDispatchEvents["MessageUpdate"] = "MESSAGE_UPDATE"; + GatewayDispatchEvents["PresenceUpdate"] = "PRESENCE_UPDATE"; + GatewayDispatchEvents["StageInstanceCreate"] = "STAGE_INSTANCE_CREATE"; + GatewayDispatchEvents["StageInstanceDelete"] = "STAGE_INSTANCE_DELETE"; + GatewayDispatchEvents["StageInstanceUpdate"] = "STAGE_INSTANCE_UPDATE"; + GatewayDispatchEvents["Ready"] = "READY"; + GatewayDispatchEvents["Resumed"] = "RESUMED"; + GatewayDispatchEvents["ThreadCreate"] = "THREAD_CREATE"; + GatewayDispatchEvents["ThreadDelete"] = "THREAD_DELETE"; + GatewayDispatchEvents["ThreadListSync"] = "THREAD_LIST_SYNC"; + GatewayDispatchEvents["ThreadMembersUpdate"] = "THREAD_MEMBERS_UPDATE"; + GatewayDispatchEvents["ThreadMemberUpdate"] = "THREAD_MEMBER_UPDATE"; + GatewayDispatchEvents["ThreadUpdate"] = "THREAD_UPDATE"; + GatewayDispatchEvents["TypingStart"] = "TYPING_START"; + GatewayDispatchEvents["UserUpdate"] = "USER_UPDATE"; + GatewayDispatchEvents["VoiceServerUpdate"] = "VOICE_SERVER_UPDATE"; + GatewayDispatchEvents["VoiceStateUpdate"] = "VOICE_STATE_UPDATE"; + GatewayDispatchEvents["WebhooksUpdate"] = "WEBHOOKS_UPDATE"; + GatewayDispatchEvents["GuildScheduledEventCreate"] = "GUILD_SCHEDULED_EVENT_CREATE"; + GatewayDispatchEvents["GuildScheduledEventUpdate"] = "GUILD_SCHEDULED_EVENT_UPDATE"; + GatewayDispatchEvents["GuildScheduledEventDelete"] = "GUILD_SCHEDULED_EVENT_DELETE"; + GatewayDispatchEvents["GuildScheduledEventUserAdd"] = "GUILD_SCHEDULED_EVENT_USER_ADD"; + GatewayDispatchEvents["GuildScheduledEventUserRemove"] = "GUILD_SCHEDULED_EVENT_USER_REMOVE"; +})(GatewayDispatchEvents = exports.GatewayDispatchEvents || (exports.GatewayDispatchEvents = {})); +// #endregion Shared +//# sourceMappingURL=v10.js.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.js.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.js.map new file mode 100644 index 0000000..29ffa09 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.js.map @@ -0,0 +1 @@ +{"version":3,"file":"v10.js","sourceRoot":"","sources":["v10.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AA+BH,2CAAyB;AAEZ,QAAA,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,IAAY,cA8CX;AA9CD,WAAY,cAAc;IACzB;;OAEG;IACH,2DAAQ,CAAA;IACR;;;OAGG;IACH,6DAAS,CAAA;IACT;;OAEG;IACH,2DAAQ,CAAA;IACR;;OAEG;IACH,uEAAc,CAAA;IACd;;OAEG;IACH,2EAAgB,CAAA;IAChB;;OAEG;IACH,uDAAU,CAAA;IACV;;OAEG;IACH,6DAAS,CAAA;IACT;;OAEG;IACH,iFAAmB,CAAA;IACnB;;OAEG;IACH,uEAAc,CAAA;IACd;;OAEG;IACH,sDAAK,CAAA;IACL;;OAEG;IACH,oEAAY,CAAA;AACb,CAAC,EA9CW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QA8CzB;AAED;;GAEG;AACH,IAAY,iBA8EX;AA9ED,WAAY,iBAAiB;IAC5B;;OAEG;IACH,4EAAmB,CAAA;IACnB;;;;OAIG;IACH,8EAAa,CAAA;IACb;;;;OAIG;IACH,0EAAW,CAAA;IACX;;;;OAIG;IACH,oFAAgB,CAAA;IAChB;;;;OAIG;IACH,4FAAoB,CAAA;IACpB;;OAEG;IACH,4FAAoB,CAAA;IACpB;;;;OAIG;IACH,wEAAiB,CAAA;IACjB;;OAEG;IACH,0EAAW,CAAA;IACX;;OAEG;IACH,kFAAe,CAAA;IACf;;;;OAIG;IACH,4EAAY,CAAA;IACZ;;;;OAIG;IACH,oFAAgB,CAAA;IAChB;;OAEG;IACH,sFAAiB,CAAA;IACjB;;;;OAIG;IACH,gFAAc,CAAA;IACd;;;;;;;OAOG;IACH,sFAAiB,CAAA;AAClB,CAAC,EA9EW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QA8E5B;AAED;;GAEG;AACH,IAAY,iBAkBX;AAlBD,WAAY,iBAAiB;IAC5B,6DAAe,CAAA;IACf,yEAAqB,CAAA;IACrB,mEAAkB,CAAA;IAClB,6FAA+B,CAAA;IAC/B,oFAA0B,CAAA;IAC1B,4EAAsB,CAAA;IACtB,0EAAqB,CAAA;IACrB,mFAAyB,CAAA;IACzB,+EAAuB,CAAA;IACvB,6EAAsB,CAAA;IACtB,8FAA+B,CAAA;IAC/B,wFAA4B,CAAA;IAC5B,gFAAwB,CAAA;IACxB,gGAAgC,CAAA;IAChC,2FAA6B,CAAA;IAC7B,iFAAwB,CAAA;IACxB,6FAA8B,CAAA;AAC/B,CAAC,EAlBW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAkB5B;AAED;;GAEG;AACH,IAAY,qBAyDX;AAzDD,WAAY,qBAAqB;IAChC,uGAA8E,CAAA;IAC9E,yDAAgC,CAAA;IAChC,yDAAgC,CAAA;IAChC,kEAAyC,CAAA;IACzC,yDAAgC,CAAA;IAChC,sDAA6B,CAAA;IAC7B,4DAAmC,CAAA;IACnC,qDAA4B,CAAA;IAC5B,qDAA4B,CAAA;IAC5B,kEAAyC,CAAA;IACzC,8EAAqD,CAAA;IACrD,4DAAmC,CAAA;IACnC,kEAAyC,CAAA;IACzC,kEAAyC,CAAA;IACzC,kEAAyC,CAAA;IACzC,8DAAqC,CAAA;IACrC,8DAAqC,CAAA;IACrC,8DAAqC,CAAA;IACrC,sEAA6C,CAAA;IAC7C,qDAA4B,CAAA;IAC5B,iEAAwC,CAAA;IACxC,iEAAwC,CAAA;IACxC,iEAAwC,CAAA;IACxC,iEAAwC,CAAA;IACxC,uDAA8B,CAAA;IAC9B,uDAA8B,CAAA;IAC9B,yDAAgC,CAAA;IAChC,yDAAgC,CAAA;IAChC,kEAAyC,CAAA;IACzC,oEAA2C,CAAA;IAC3C,0EAAiD,CAAA;IACjD,iFAAwD,CAAA;IACxD,qFAA4D,CAAA;IAC5D,yDAAgC,CAAA;IAChC,2DAAkC,CAAA;IAClC,sEAA6C,CAAA;IAC7C,sEAA6C,CAAA;IAC7C,sEAA6C,CAAA;IAC7C,wCAAe,CAAA;IACf,4CAAmB,CAAA;IACnB,uDAA8B,CAAA;IAC9B,uDAA8B,CAAA;IAC9B,4DAAmC,CAAA;IACnC,sEAA6C,CAAA;IAC7C,oEAA2C,CAAA;IAC3C,uDAA8B,CAAA;IAC9B,qDAA4B,CAAA;IAC5B,mDAA0B,CAAA;IAC1B,kEAAyC,CAAA;IACzC,gEAAuC,CAAA;IACvC,2DAAkC,CAAA;IAClC,mFAA0D,CAAA;IAC1D,mFAA0D,CAAA;IAC1D,mFAA0D,CAAA;IAC1D,sFAA6D,CAAA;IAC7D,4FAAmE,CAAA;AACpE,CAAC,EAzDW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAyDhC;AAmjDD,oBAAoB"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.mjs b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.mjs new file mode 100644 index 0000000..0ee554f --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v10.mjs @@ -0,0 +1,8 @@ +import mod from "./v10.js"; + +export default mod; +export const GatewayCloseCodes = mod.GatewayCloseCodes; +export const GatewayDispatchEvents = mod.GatewayDispatchEvents; +export const GatewayIntentBits = mod.GatewayIntentBits; +export const GatewayOpcodes = mod.GatewayOpcodes; +export const GatewayVersion = mod.GatewayVersion; diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.d.ts b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.d.ts new file mode 100644 index 0000000..13aa6ad --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.d.ts @@ -0,0 +1,608 @@ +/** + * Types extracted from https://discord.com/developers/docs/topics/gateway + */ +import type { APIChannel, APIEmoji, APIGuild, APIGuildMember, APIMessage, APIRole, APIUnavailableGuild, APIUser, GatewayActivity, GatewayPresenceUpdate as RawGatewayPresenceUpdate, GatewayVoiceState, InviteTargetUserType, PresenceUpdateStatus } from '../payloads/v6/index'; +export * from './common'; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare const GatewayVersion = "6"; +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare enum GatewayOPCodes { + Dispatch = 0, + Heartbeat = 1, + Identify = 2, + PresenceUpdate = 3, + VoiceStateUpdate = 4, + Resume = 6, + Reconnect = 7, + RequestGuildMembers = 8, + InvalidSession = 9, + Hello = 10, + HeartbeatAck = 11 +} +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-close-event-codes + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare enum GatewayCloseCodes { + UnknownError = 4000, + UnknownOpCode = 4001, + DecodeError = 4002, + NotAuthenticated = 4003, + AuthenticationFailed = 4004, + AlreadyAuthenticated = 4005, + InvalidSeq = 4007, + RateLimited = 4008, + SessionTimedOut = 4009, + InvalidShard = 4010, + ShardingRequired = 4011, + InvalidAPIVersion = 4012, + InvalidIntents = 4013, + DisallowedIntents = 4014 +} +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice-voice-opcodes + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare enum VoiceOPCodes { + Identify = 0, + SelectProtocol = 1, + Ready = 2, + Heartbeat = 3, + SessionDescription = 4, + Speaking = 5, + HeartbeatAck = 6, + Resume = 7, + Hello = 8, + Resumed = 9, + ClientDisconnect = 13 +} +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice-voice-close-event-codes + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare enum VoiceCloseCodes { + UnknownOpCode = 4001, + NotAuthenticated = 4003, + AuthenticationFailed = 4004, + AlreadyAuthenticated = 4005, + SessionNoLongerValid = 4006, + SessionTimeout = 4009, + ServerNotFound = 4011, + UnknownProtocol = 4012, + Disconnected = 4014, + VoiceServerCrashed = 4015, + UnknownEncryptionMode = 4016 +} +/** + * https://discord.com/developers/docs/topics/gateway#list-of-intents + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare enum GatewayIntentBits { + GUILDS = 1, + GUILD_MEMBERS = 2, + GUILD_BANS = 4, + GUILD_EMOJIS = 8, + GUILD_INTEGRATIONS = 16, + GUILD_WEBHOOKS = 32, + GUILD_INVITES = 64, + GUILD_VOICE_STATES = 128, + GUILD_PRESENCES = 256, + GUILD_MESSAGES = 512, + GUILD_MESSAGE_REACTIONS = 1024, + GUILD_MESSAGE_TYPING = 2048, + DIRECT_MESSAGES = 4096, + DIRECT_MESSAGE_REACTIONS = 8192, + DIRECT_MESSAGE_TYPING = 16384 +} +/** + * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare enum GatewayDispatchEvents { + Ready = "READY", + Resumed = "RESUMED", + ChannelCreate = "CHANNEL_CREATE", + ChannelUpdate = "CHANNEL_UPDATE", + ChannelDelete = "CHANNEL_DELETE", + ChannelPinsUpdate = "CHANNEL_PINS_UPDATE", + GuildCreate = "GUILD_CREATE", + GuildUpdate = "GUILD_UPDATE", + GuildDelete = "GUILD_DELETE", + GuildBanAdd = "GUILD_BAN_ADD", + GuildBanRemove = "GUILD_BAN_REMOVE", + GuildEmojisUpdate = "GUILD_EMOJIS_UPDATE", + GuildIntegrationsUpdate = "GUILD_INTEGRATIONS_UPDATE", + GuildMemberAdd = "GUILD_MEMBER_ADD", + GuildMemberRemove = "GUILD_MEMBER_REMOVE", + GuildMemberUpdate = "GUILD_MEMBER_UPDATE", + GuildMembersChunk = "GUILD_MEMBERS_CHUNK", + GuildRoleCreate = "GUILD_ROLE_CREATE", + GuildRoleUpdate = "GUILD_ROLE_UPDATE", + GuildRoleDelete = "GUILD_ROLE_DELETE", + InviteCreate = "INVITE_CREATE", + InviteDelete = "INVITE_DELETE", + MessageCreate = "MESSAGE_CREATE", + MessageUpdate = "MESSAGE_UPDATE", + MessageDelete = "MESSAGE_DELETE", + MessageDeleteBulk = "MESSAGE_DELETE_BULK", + MessageReactionAdd = "MESSAGE_REACTION_ADD", + MessageReactionRemove = "MESSAGE_REACTION_REMOVE", + MessageReactionRemoveAll = "MESSAGE_REACTION_REMOVE_ALL", + MessageReactionRemoveEmoji = "MESSAGE_REACTION_REMOVE_EMOJI", + PresenceUpdate = "PRESENCE_UPDATE", + TypingStart = "TYPING_START", + UserUpdate = "USER_UPDATE", + VoiceStateUpdate = "VOICE_STATE_UPDATE", + VoiceServerUpdate = "VOICE_SERVER_UPDATE", + WebhooksUpdate = "WEBHOOKS_UPDATE" +} +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewaySendPayload = GatewayHeartbeat | GatewayIdentify | GatewayUpdatePresence | GatewayVoiceStateUpdate | GatewayResume | GatewayRequestGuildMembers; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayReceivePayload = GatewayHello | GatewayHeartbeatRequest | GatewayHeartbeatAck | GatewayInvalidSession | GatewayReconnect | GatewayDispatchPayload; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayDispatchPayload = GatewayReadyDispatch | GatewayResumedDispatch | GatewayChannelModifyDispatch | GatewayChannelPinsUpdateDispatch | GatewayGuildModifyDispatch | GatewayGuildDeleteDispatch | GatewayGuildBanModifyDispatch | GatewayGuildEmojisUpdateDispatch | GatewayGuildIntegrationsUpdateDispatch | GatewayGuildMemberAddDispatch | GatewayGuildMemberRemoveDispatch | GatewayGuildMemberUpdateDispatch | GatewayGuildMembersChunkDispatch | GatewayGuildRoleModifyDispatch | GatewayGuildRoleDeleteDispatch | GatewayInviteCreateDispatch | GatewayInviteDeleteDispatch | GatewayMessageCreateDispatch | GatewayMessageUpdateDispatch | GatewayMessageDeleteDispatch | GatewayMessageDeleteBulkDispatch | GatewayMessageReactionAddDispatch | GatewayMessageReactionRemoveDispatch | GatewayMessageReactionRemoveAllDispatch | GatewayMessageReactionRemoveEmojiDispatch | GatewayPresenceUpdateDispatch | GatewayTypingStartDispatch | GatewayUserUpdateDispatch | GatewayVoiceStateUpdateDispatch | GatewayVoiceServerUpdateDispatch | GatewayWebhooksUpdateDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#hello + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayHello extends NonDispatchPayload { + op: GatewayOPCodes.Hello; + d: { + heartbeat_interval: number; + }; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayHeartbeatRequest extends NonDispatchPayload { + op: GatewayOPCodes.Heartbeat; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating-example-gateway-heartbeat-ack + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayHeartbeatAck extends NonDispatchPayload { + op: GatewayOPCodes.HeartbeatAck; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#invalid-session + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayInvalidSession extends NonDispatchPayload { + op: GatewayOPCodes.InvalidSession; + d: boolean; +} +/** + * https://discord.com/developers/docs/topics/gateway#reconnect + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayReconnect extends NonDispatchPayload { + op: GatewayOPCodes.Reconnect; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#ready + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayReadyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#resumed + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayResumedDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + * https://discord.com/developers/docs/topics/gateway#channel-update + * https://discord.com/developers/docs/topics/gateway#channel-delete + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayChannelModifyDispatch = DataPayload; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayChannelCreateDispatch = GatewayChannelModifyDispatch; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayChannelUpdateDispatch = GatewayChannelModifyDispatch; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayChannelDeleteDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#channel-pins-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayChannelPinsUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-create + * https://discord.com/developers/docs/topics/gateway#guild-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildModifyDispatch = DataPayload; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildCreateDispatch = GatewayGuildModifyDispatch; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildUpdateDispatch = GatewayGuildModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-delete + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildBanModifyDispatch = DataPayload; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildBanAddDispatch = GatewayGuildBanModifyDispatch; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildBanRemoveDispatch = GatewayGuildBanModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-emojis-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildEmojisUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-integrations-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildIntegrationsUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-add + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildMemberAddDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-remove + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildMemberRemoveDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildMemberUpdateDispatch = DataPayload & { + guild_id: string; +}>; +/** + * https://discord.com/developers/docs/topics/gateway#guild-members-chunk + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildMembersChunkDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + * https://discord.com/developers/docs/topics/gateway#guild-role-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildRoleModifyDispatch = DataPayload; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildRoleCreateDispatch = GatewayGuildRoleModifyDispatch; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildRoleUpdateDispatch = GatewayGuildRoleModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-delete + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayGuildRoleDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#invite-create + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayInviteCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#invite-delete + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayInviteDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-create + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayMessageCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayMessageUpdateDispatch = DataPayload>; +/** + * https://discord.com/developers/docs/topics/gateway#message-delete + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayMessageDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-delete-bulk + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayMessageDeleteBulkDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-add + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayMessageReactionAddDispatch = ReactionData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayMessageReactionRemoveDispatch = ReactionData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-all + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayMessageReactionRemoveAllDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-emoji + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayMessageReactionRemoveEmojiDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#presence-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayPresenceUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#typing-start + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayTypingStartDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#user-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayUserUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#voice-state-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayVoiceStateUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#voice-server-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayVoiceServerUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#webhooks-update + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export declare type GatewayWebhooksUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayHeartbeat { + op: GatewayOPCodes.Heartbeat; + d: number; +} +/** + * https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayIdentifyProperties { + $os: string; + $browser: string; + $device: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#identify + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayIdentify { + op: GatewayOPCodes.Identify; + d: { + token: string; + properties: GatewayIdentifyProperties; + compress?: boolean; + large_threshold?: number; + shard?: [shard_id: number, shard_count: number]; + presence?: RawGatewayPresenceUpdate; + guild_subscriptions?: boolean; + intents?: number; + }; +} +/** + * https://discord.com/developers/docs/topics/gateway#resume + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayResume { + op: GatewayOPCodes.Resume; + d: { + token: string; + session_id: string; + seq: number; + }; +} +/** + * https://discord.com/developers/docs/topics/gateway#request-guild-members + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayRequestGuildMembers { + op: GatewayOPCodes.RequestGuildMembers; + d: { + guild_id: string | string[]; + query?: string; + limit: number; + presences?: boolean; + user_ids?: string | string[]; + nonce?: string; + }; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-voice-state + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayVoiceStateUpdate { + op: GatewayOPCodes.VoiceStateUpdate; + d: { + guild_id: string; + channel_id: string | null; + self_mute: boolean; + self_deaf: boolean; + }; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-status + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayUpdatePresence { + op: GatewayOPCodes.PresenceUpdate; + d: GatewayPresenceUpdateData; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-status-gateway-status-update-structure + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +export interface GatewayPresenceUpdateData { + since: number | null; + game: GatewayActivity | null; + status: PresenceUpdateStatus; + afk: boolean; +} +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +interface BasePayload { + op: GatewayOPCodes; + s: number; + d?: unknown; + t?: string; +} +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +declare type NonDispatchPayload = Omit; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +interface DataPayload extends BasePayload { + op: GatewayOPCodes.Dispatch; + t: Event; + d: D; +} +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +declare type ReactionData = DataPayload>; +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +interface MessageReactionRemoveData { + channel_id: string; + message_id: string; + guild_id?: string; +} +//# sourceMappingURL=v6.d.ts.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.d.ts.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.d.ts.map new file mode 100644 index 0000000..a7b9755 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"v6.d.ts","sourceRoot":"","sources":["v6.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.js b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.js new file mode 100644 index 0000000..764c33a --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.js @@ -0,0 +1,167 @@ +"use strict"; +/** + * Types extracted from https://discord.com/developers/docs/topics/gateway + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GatewayDispatchEvents = exports.GatewayIntentBits = exports.VoiceCloseCodes = exports.VoiceOPCodes = exports.GatewayCloseCodes = exports.GatewayOPCodes = exports.GatewayVersion = void 0; +__exportStar(require("./common"), exports); +/** + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +exports.GatewayVersion = '6'; +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +var GatewayOPCodes; +(function (GatewayOPCodes) { + GatewayOPCodes[GatewayOPCodes["Dispatch"] = 0] = "Dispatch"; + GatewayOPCodes[GatewayOPCodes["Heartbeat"] = 1] = "Heartbeat"; + GatewayOPCodes[GatewayOPCodes["Identify"] = 2] = "Identify"; + GatewayOPCodes[GatewayOPCodes["PresenceUpdate"] = 3] = "PresenceUpdate"; + GatewayOPCodes[GatewayOPCodes["VoiceStateUpdate"] = 4] = "VoiceStateUpdate"; + GatewayOPCodes[GatewayOPCodes["Resume"] = 6] = "Resume"; + GatewayOPCodes[GatewayOPCodes["Reconnect"] = 7] = "Reconnect"; + GatewayOPCodes[GatewayOPCodes["RequestGuildMembers"] = 8] = "RequestGuildMembers"; + GatewayOPCodes[GatewayOPCodes["InvalidSession"] = 9] = "InvalidSession"; + GatewayOPCodes[GatewayOPCodes["Hello"] = 10] = "Hello"; + GatewayOPCodes[GatewayOPCodes["HeartbeatAck"] = 11] = "HeartbeatAck"; +})(GatewayOPCodes = exports.GatewayOPCodes || (exports.GatewayOPCodes = {})); +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-close-event-codes + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +var GatewayCloseCodes; +(function (GatewayCloseCodes) { + GatewayCloseCodes[GatewayCloseCodes["UnknownError"] = 4000] = "UnknownError"; + GatewayCloseCodes[GatewayCloseCodes["UnknownOpCode"] = 4001] = "UnknownOpCode"; + GatewayCloseCodes[GatewayCloseCodes["DecodeError"] = 4002] = "DecodeError"; + GatewayCloseCodes[GatewayCloseCodes["NotAuthenticated"] = 4003] = "NotAuthenticated"; + GatewayCloseCodes[GatewayCloseCodes["AuthenticationFailed"] = 4004] = "AuthenticationFailed"; + GatewayCloseCodes[GatewayCloseCodes["AlreadyAuthenticated"] = 4005] = "AlreadyAuthenticated"; + GatewayCloseCodes[GatewayCloseCodes["InvalidSeq"] = 4007] = "InvalidSeq"; + GatewayCloseCodes[GatewayCloseCodes["RateLimited"] = 4008] = "RateLimited"; + GatewayCloseCodes[GatewayCloseCodes["SessionTimedOut"] = 4009] = "SessionTimedOut"; + GatewayCloseCodes[GatewayCloseCodes["InvalidShard"] = 4010] = "InvalidShard"; + GatewayCloseCodes[GatewayCloseCodes["ShardingRequired"] = 4011] = "ShardingRequired"; + GatewayCloseCodes[GatewayCloseCodes["InvalidAPIVersion"] = 4012] = "InvalidAPIVersion"; + GatewayCloseCodes[GatewayCloseCodes["InvalidIntents"] = 4013] = "InvalidIntents"; + GatewayCloseCodes[GatewayCloseCodes["DisallowedIntents"] = 4014] = "DisallowedIntents"; +})(GatewayCloseCodes = exports.GatewayCloseCodes || (exports.GatewayCloseCodes = {})); +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice-voice-opcodes + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +var VoiceOPCodes; +(function (VoiceOPCodes) { + VoiceOPCodes[VoiceOPCodes["Identify"] = 0] = "Identify"; + VoiceOPCodes[VoiceOPCodes["SelectProtocol"] = 1] = "SelectProtocol"; + VoiceOPCodes[VoiceOPCodes["Ready"] = 2] = "Ready"; + VoiceOPCodes[VoiceOPCodes["Heartbeat"] = 3] = "Heartbeat"; + VoiceOPCodes[VoiceOPCodes["SessionDescription"] = 4] = "SessionDescription"; + VoiceOPCodes[VoiceOPCodes["Speaking"] = 5] = "Speaking"; + VoiceOPCodes[VoiceOPCodes["HeartbeatAck"] = 6] = "HeartbeatAck"; + VoiceOPCodes[VoiceOPCodes["Resume"] = 7] = "Resume"; + VoiceOPCodes[VoiceOPCodes["Hello"] = 8] = "Hello"; + VoiceOPCodes[VoiceOPCodes["Resumed"] = 9] = "Resumed"; + VoiceOPCodes[VoiceOPCodes["ClientDisconnect"] = 13] = "ClientDisconnect"; +})(VoiceOPCodes = exports.VoiceOPCodes || (exports.VoiceOPCodes = {})); +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice-voice-close-event-codes + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +var VoiceCloseCodes; +(function (VoiceCloseCodes) { + VoiceCloseCodes[VoiceCloseCodes["UnknownOpCode"] = 4001] = "UnknownOpCode"; + VoiceCloseCodes[VoiceCloseCodes["NotAuthenticated"] = 4003] = "NotAuthenticated"; + VoiceCloseCodes[VoiceCloseCodes["AuthenticationFailed"] = 4004] = "AuthenticationFailed"; + VoiceCloseCodes[VoiceCloseCodes["AlreadyAuthenticated"] = 4005] = "AlreadyAuthenticated"; + VoiceCloseCodes[VoiceCloseCodes["SessionNoLongerValid"] = 4006] = "SessionNoLongerValid"; + VoiceCloseCodes[VoiceCloseCodes["SessionTimeout"] = 4009] = "SessionTimeout"; + VoiceCloseCodes[VoiceCloseCodes["ServerNotFound"] = 4011] = "ServerNotFound"; + VoiceCloseCodes[VoiceCloseCodes["UnknownProtocol"] = 4012] = "UnknownProtocol"; + VoiceCloseCodes[VoiceCloseCodes["Disconnected"] = 4014] = "Disconnected"; + VoiceCloseCodes[VoiceCloseCodes["VoiceServerCrashed"] = 4015] = "VoiceServerCrashed"; + VoiceCloseCodes[VoiceCloseCodes["UnknownEncryptionMode"] = 4016] = "UnknownEncryptionMode"; +})(VoiceCloseCodes = exports.VoiceCloseCodes || (exports.VoiceCloseCodes = {})); +/** + * https://discord.com/developers/docs/topics/gateway#list-of-intents + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +var GatewayIntentBits; +(function (GatewayIntentBits) { + GatewayIntentBits[GatewayIntentBits["GUILDS"] = 1] = "GUILDS"; + GatewayIntentBits[GatewayIntentBits["GUILD_MEMBERS"] = 2] = "GUILD_MEMBERS"; + GatewayIntentBits[GatewayIntentBits["GUILD_BANS"] = 4] = "GUILD_BANS"; + GatewayIntentBits[GatewayIntentBits["GUILD_EMOJIS"] = 8] = "GUILD_EMOJIS"; + GatewayIntentBits[GatewayIntentBits["GUILD_INTEGRATIONS"] = 16] = "GUILD_INTEGRATIONS"; + GatewayIntentBits[GatewayIntentBits["GUILD_WEBHOOKS"] = 32] = "GUILD_WEBHOOKS"; + GatewayIntentBits[GatewayIntentBits["GUILD_INVITES"] = 64] = "GUILD_INVITES"; + GatewayIntentBits[GatewayIntentBits["GUILD_VOICE_STATES"] = 128] = "GUILD_VOICE_STATES"; + GatewayIntentBits[GatewayIntentBits["GUILD_PRESENCES"] = 256] = "GUILD_PRESENCES"; + GatewayIntentBits[GatewayIntentBits["GUILD_MESSAGES"] = 512] = "GUILD_MESSAGES"; + GatewayIntentBits[GatewayIntentBits["GUILD_MESSAGE_REACTIONS"] = 1024] = "GUILD_MESSAGE_REACTIONS"; + GatewayIntentBits[GatewayIntentBits["GUILD_MESSAGE_TYPING"] = 2048] = "GUILD_MESSAGE_TYPING"; + GatewayIntentBits[GatewayIntentBits["DIRECT_MESSAGES"] = 4096] = "DIRECT_MESSAGES"; + GatewayIntentBits[GatewayIntentBits["DIRECT_MESSAGE_REACTIONS"] = 8192] = "DIRECT_MESSAGE_REACTIONS"; + GatewayIntentBits[GatewayIntentBits["DIRECT_MESSAGE_TYPING"] = 16384] = "DIRECT_MESSAGE_TYPING"; +})(GatewayIntentBits = exports.GatewayIntentBits || (exports.GatewayIntentBits = {})); +/** + * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events + * @deprecated Gateway v6 is deprecated and the types will not receive further updates, please update to v8. + */ +var GatewayDispatchEvents; +(function (GatewayDispatchEvents) { + GatewayDispatchEvents["Ready"] = "READY"; + GatewayDispatchEvents["Resumed"] = "RESUMED"; + GatewayDispatchEvents["ChannelCreate"] = "CHANNEL_CREATE"; + GatewayDispatchEvents["ChannelUpdate"] = "CHANNEL_UPDATE"; + GatewayDispatchEvents["ChannelDelete"] = "CHANNEL_DELETE"; + GatewayDispatchEvents["ChannelPinsUpdate"] = "CHANNEL_PINS_UPDATE"; + GatewayDispatchEvents["GuildCreate"] = "GUILD_CREATE"; + GatewayDispatchEvents["GuildUpdate"] = "GUILD_UPDATE"; + GatewayDispatchEvents["GuildDelete"] = "GUILD_DELETE"; + GatewayDispatchEvents["GuildBanAdd"] = "GUILD_BAN_ADD"; + GatewayDispatchEvents["GuildBanRemove"] = "GUILD_BAN_REMOVE"; + GatewayDispatchEvents["GuildEmojisUpdate"] = "GUILD_EMOJIS_UPDATE"; + GatewayDispatchEvents["GuildIntegrationsUpdate"] = "GUILD_INTEGRATIONS_UPDATE"; + GatewayDispatchEvents["GuildMemberAdd"] = "GUILD_MEMBER_ADD"; + GatewayDispatchEvents["GuildMemberRemove"] = "GUILD_MEMBER_REMOVE"; + GatewayDispatchEvents["GuildMemberUpdate"] = "GUILD_MEMBER_UPDATE"; + GatewayDispatchEvents["GuildMembersChunk"] = "GUILD_MEMBERS_CHUNK"; + GatewayDispatchEvents["GuildRoleCreate"] = "GUILD_ROLE_CREATE"; + GatewayDispatchEvents["GuildRoleUpdate"] = "GUILD_ROLE_UPDATE"; + GatewayDispatchEvents["GuildRoleDelete"] = "GUILD_ROLE_DELETE"; + GatewayDispatchEvents["InviteCreate"] = "INVITE_CREATE"; + GatewayDispatchEvents["InviteDelete"] = "INVITE_DELETE"; + GatewayDispatchEvents["MessageCreate"] = "MESSAGE_CREATE"; + GatewayDispatchEvents["MessageUpdate"] = "MESSAGE_UPDATE"; + GatewayDispatchEvents["MessageDelete"] = "MESSAGE_DELETE"; + GatewayDispatchEvents["MessageDeleteBulk"] = "MESSAGE_DELETE_BULK"; + GatewayDispatchEvents["MessageReactionAdd"] = "MESSAGE_REACTION_ADD"; + GatewayDispatchEvents["MessageReactionRemove"] = "MESSAGE_REACTION_REMOVE"; + GatewayDispatchEvents["MessageReactionRemoveAll"] = "MESSAGE_REACTION_REMOVE_ALL"; + GatewayDispatchEvents["MessageReactionRemoveEmoji"] = "MESSAGE_REACTION_REMOVE_EMOJI"; + GatewayDispatchEvents["PresenceUpdate"] = "PRESENCE_UPDATE"; + GatewayDispatchEvents["TypingStart"] = "TYPING_START"; + GatewayDispatchEvents["UserUpdate"] = "USER_UPDATE"; + GatewayDispatchEvents["VoiceStateUpdate"] = "VOICE_STATE_UPDATE"; + GatewayDispatchEvents["VoiceServerUpdate"] = "VOICE_SERVER_UPDATE"; + GatewayDispatchEvents["WebhooksUpdate"] = "WEBHOOKS_UPDATE"; +})(GatewayDispatchEvents = exports.GatewayDispatchEvents || (exports.GatewayDispatchEvents = {})); +// #endregion Shared +//# sourceMappingURL=v6.js.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.js.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.js.map new file mode 100644 index 0000000..71f63a7 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.js.map @@ -0,0 +1 @@ +{"version":3,"file":"v6.js","sourceRoot":"","sources":["v6.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.mjs b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.mjs new file mode 100644 index 0000000..848edfc --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v6.mjs @@ -0,0 +1,10 @@ +import mod from "./v6.js"; + +export default mod; +export const GatewayCloseCodes = mod.GatewayCloseCodes; +export const GatewayDispatchEvents = mod.GatewayDispatchEvents; +export const GatewayIntentBits = mod.GatewayIntentBits; +export const GatewayOPCodes = mod.GatewayOPCodes; +export const GatewayVersion = mod.GatewayVersion; +export const VoiceCloseCodes = mod.VoiceCloseCodes; +export const VoiceOPCodes = mod.VoiceOPCodes; diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.d.ts b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.d.ts new file mode 100644 index 0000000..24608ea --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.d.ts @@ -0,0 +1,1455 @@ +/** + * Types extracted from https://discord.com/developers/docs/topics/gateway + */ +import type { Snowflake } from '../globals'; +import type { APIApplication, APIChannel, APIEmoji, APIGuild, APIGuildIntegration, APIGuildMember, APIGuildScheduledEvent, APIInteraction, APIMessage, APIRole, APIStageInstance, APISticker, APIUnavailableGuild, APIUser, GatewayActivity, GatewayPresenceUpdate as RawGatewayPresenceUpdate, GatewayVoiceState, InviteTargetType, PresenceUpdateStatus } from '../payloads/v8/index'; +import type { Nullable } from '../utils/internals'; +export * from './common'; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare const GatewayVersion = "8"; +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare enum GatewayOpcodes { + /** + * An event was dispatched + */ + Dispatch = 0, + /** + * A bidirectional opcode to maintain an active gateway connection. + * Fired periodically by the client, or fired by the gateway to request an immediate heartbeat from the client. + */ + Heartbeat = 1, + /** + * Starts a new session during the initial handshake + */ + Identify = 2, + /** + * Update the client's presence + */ + PresenceUpdate = 3, + /** + * Used to join/leave or move between voice channels + */ + VoiceStateUpdate = 4, + /** + * Resume a previous session that was disconnected + */ + Resume = 6, + /** + * You should attempt to reconnect and resume immediately + */ + Reconnect = 7, + /** + * Request information about offline guild members in a large guild + */ + RequestGuildMembers = 8, + /** + * The session has been invalidated. You should reconnect and identify/resume accordingly + */ + InvalidSession = 9, + /** + * Sent immediately after connecting, contains the `heartbeat_interval` to use + */ + Hello = 10, + /** + * Sent in response to receiving a heartbeat to acknowledge that it has been received + */ + HeartbeatAck = 11 +} +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-close-event-codes + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare enum GatewayCloseCodes { + /** + * We're not sure what went wrong. Try reconnecting? + */ + UnknownError = 4000, + /** + * You sent an invalid Gateway opcode or an invalid payload for an opcode. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#payloads-and-opcodes + */ + UnknownOpcode = 4001, + /** + * You sent an invalid payload to us. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#sending-payloads + */ + DecodeError = 4002, + /** + * You sent us a payload prior to identifying + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + NotAuthenticated = 4003, + /** + * The account token sent with your identify payload is incorrect + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + AuthenticationFailed = 4004, + /** + * You sent more than one identify payload. Don't do that! + */ + AlreadyAuthenticated = 4005, + /** + * The sequence sent when resuming the session was invalid. Reconnect and start a new session + * + * See https://discord.com/developers/docs/topics/gateway#resume + */ + InvalidSeq = 4007, + /** + * Woah nelly! You're sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this + */ + RateLimited = 4008, + /** + * Your session timed out. Reconnect and start a new one + */ + SessionTimedOut = 4009, + /** + * You sent us an invalid shard when identifying + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + InvalidShard = 4010, + /** + * The session would have handled too many guilds - you are required to shard your connection in order to connect + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + ShardingRequired = 4011, + /** + * You sent an invalid version for the gateway + */ + InvalidAPIVersion = 4012, + /** + * You sent an invalid intent for a Gateway Intent. You may have incorrectly calculated the bitwise value + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + */ + InvalidIntents = 4013, + /** + * You sent a disallowed intent for a Gateway Intent. You may have tried to specify an intent that you have not + * enabled or are not whitelisted for + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + * + * See https://discord.com/developers/docs/topics/gateway#privileged-intents + */ + DisallowedIntents = 4014 +} +/** + * https://discord.com/developers/docs/topics/gateway#list-of-intents + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare enum GatewayIntentBits { + Guilds = 1, + GuildMembers = 2, + GuildBans = 4, + GuildEmojisAndStickers = 8, + GuildIntegrations = 16, + GuildWebhooks = 32, + GuildInvites = 64, + GuildVoiceStates = 128, + GuildPresences = 256, + GuildMessages = 512, + GuildMessageReactions = 1024, + GuildMessageTyping = 2048, + DirectMessages = 4096, + DirectMessageReactions = 8192, + DirectMessageTyping = 16384, + GuildScheduledEvents = 65536 +} +/** + * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare enum GatewayDispatchEvents { + ChannelCreate = "CHANNEL_CREATE", + ChannelDelete = "CHANNEL_DELETE", + ChannelPinsUpdate = "CHANNEL_PINS_UPDATE", + ChannelUpdate = "CHANNEL_UPDATE", + GuildBanAdd = "GUILD_BAN_ADD", + GuildBanRemove = "GUILD_BAN_REMOVE", + GuildCreate = "GUILD_CREATE", + GuildDelete = "GUILD_DELETE", + GuildEmojisUpdate = "GUILD_EMOJIS_UPDATE", + GuildIntegrationsUpdate = "GUILD_INTEGRATIONS_UPDATE", + GuildMemberAdd = "GUILD_MEMBER_ADD", + GuildMemberRemove = "GUILD_MEMBER_REMOVE", + GuildMembersChunk = "GUILD_MEMBERS_CHUNK", + GuildMemberUpdate = "GUILD_MEMBER_UPDATE", + GuildRoleCreate = "GUILD_ROLE_CREATE", + GuildRoleDelete = "GUILD_ROLE_DELETE", + GuildRoleUpdate = "GUILD_ROLE_UPDATE", + GuildStickersUpdate = "GUILD_STICKERS_UPDATE", + GuildUpdate = "GUILD_UPDATE", + IntegrationCreate = "INTEGRATION_CREATE", + IntegrationDelete = "INTEGRATION_DELETE", + IntegrationUpdate = "INTEGRATION_UPDATE", + InteractionCreate = "INTERACTION_CREATE", + InviteCreate = "INVITE_CREATE", + InviteDelete = "INVITE_DELETE", + MessageCreate = "MESSAGE_CREATE", + MessageDelete = "MESSAGE_DELETE", + MessageDeleteBulk = "MESSAGE_DELETE_BULK", + MessageReactionAdd = "MESSAGE_REACTION_ADD", + MessageReactionRemove = "MESSAGE_REACTION_REMOVE", + MessageReactionRemoveAll = "MESSAGE_REACTION_REMOVE_ALL", + MessageReactionRemoveEmoji = "MESSAGE_REACTION_REMOVE_EMOJI", + MessageUpdate = "MESSAGE_UPDATE", + PresenceUpdate = "PRESENCE_UPDATE", + StageInstanceCreate = "STAGE_INSTANCE_CREATE", + StageInstanceDelete = "STAGE_INSTANCE_DELETE", + StageInstanceUpdate = "STAGE_INSTANCE_UPDATE", + Ready = "READY", + Resumed = "RESUMED", + TypingStart = "TYPING_START", + UserUpdate = "USER_UPDATE", + VoiceServerUpdate = "VOICE_SERVER_UPDATE", + VoiceStateUpdate = "VOICE_STATE_UPDATE", + WebhooksUpdate = "WEBHOOKS_UPDATE", + GuildScheduledEventCreate = "GUILD_SCHEDULED_EVENT_CREATE", + GuildScheduledEventUpdate = "GUILD_SCHEDULED_EVENT_UPDATE", + GuildScheduledEventDelete = "GUILD_SCHEDULED_EVENT_DELETE", + GuildScheduledEventUserAdd = "GUILD_SCHEDULED_EVENT_USER_ADD", + GuildScheduledEventUserRemove = "GUILD_SCHEDULED_EVENT_USER_REMOVE" +} +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewaySendPayload = GatewayHeartbeat | GatewayIdentify | GatewayUpdatePresence | GatewayVoiceStateUpdate | GatewayResume | GatewayRequestGuildMembers; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayReceivePayload = GatewayHello | GatewayHeartbeatRequest | GatewayHeartbeatAck | GatewayInvalidSession | GatewayReconnect | GatewayDispatchPayload; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayDispatchPayload = GatewayChannelModifyDispatch | GatewayChannelPinsUpdateDispatch | GatewayGuildBanModifyDispatch | GatewayGuildDeleteDispatch | GatewayGuildEmojisUpdateDispatch | GatewayGuildIntegrationsUpdateDispatch | GatewayGuildMemberAddDispatch | GatewayGuildMemberRemoveDispatch | GatewayGuildMembersChunkDispatch | GatewayGuildMemberUpdateDispatch | GatewayGuildModifyDispatch | GatewayGuildRoleDeleteDispatch | GatewayGuildRoleModifyDispatch | GatewayGuildScheduledEventCreateDispatch | GatewayGuildScheduledEventUpdateDispatch | GatewayGuildScheduledEventDeleteDispatch | GatewayGuildScheduledEventUserAddDispatch | GatewayGuildScheduledEventUserRemoveDispatch | GatewayGuildStickersUpdateDispatch | GatewayIntegrationCreateDispatch | GatewayIntegrationDeleteDispatch | GatewayIntegrationUpdateDispatch | GatewayInteractionCreateDispatch | GatewayInviteCreateDispatch | GatewayInviteDeleteDispatch | GatewayMessageCreateDispatch | GatewayMessageDeleteBulkDispatch | GatewayMessageDeleteDispatch | GatewayMessageReactionAddDispatch | GatewayMessageReactionRemoveAllDispatch | GatewayMessageReactionRemoveDispatch | GatewayMessageReactionRemoveEmojiDispatch | GatewayMessageUpdateDispatch | GatewayPresenceUpdateDispatch | GatewayStageInstanceCreateDispatch | GatewayStageInstanceDeleteDispatch | GatewayStageInstanceUpdateDispatch | GatewayReadyDispatch | GatewayResumedDispatch | GatewayTypingStartDispatch | GatewayUserUpdateDispatch | GatewayVoiceServerUpdateDispatch | GatewayVoiceStateUpdateDispatch | GatewayWebhooksUpdateDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#hello + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayHello extends NonDispatchPayload { + op: GatewayOpcodes.Hello; + d: GatewayHelloData; +} +/** + * https://discord.com/developers/docs/topics/gateway#hello + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayHelloData { + /** + * The interval (in milliseconds) the client should heartbeat with + */ + heartbeat_interval: number; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayHeartbeatRequest extends NonDispatchPayload { + op: GatewayOpcodes.Heartbeat; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating-example-gateway-heartbeat-ack + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayHeartbeatAck extends NonDispatchPayload { + op: GatewayOpcodes.HeartbeatAck; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#invalid-session + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayInvalidSession extends NonDispatchPayload { + op: GatewayOpcodes.InvalidSession; + d: GatewayInvalidSessionData; +} +/** + * https://discord.com/developers/docs/topics/gateway#invalid-session + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayInvalidSessionData = boolean; +/** + * https://discord.com/developers/docs/topics/gateway#reconnect + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayReconnect extends NonDispatchPayload { + op: GatewayOpcodes.Reconnect; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#ready + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayReadyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#ready + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayReadyDispatchData { + /** + * Gateway version + * + * See https://discord.com/developers/docs/topics/gateway#gateways-gateway-versions + */ + v: number; + /** + * Information about the user including email + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + user: APIUser; + /** + * The guilds the user is in + * + * See https://discord.com/developers/docs/resources/guild#unavailable-guild-object + */ + guilds: APIUnavailableGuild[]; + /** + * Used for resuming connections + */ + session_id: string; + /** + * The shard information associated with this session, if sent when identifying + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + shard?: [shard_id: number, shard_count: number]; + /** + * Contains `id` and `flags` + * + * See https://discord.com/developers/docs/resources/application#application-object + */ + application: Pick; +} +/** + * https://discord.com/developers/docs/topics/gateway#resumed + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayResumedDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + * https://discord.com/developers/docs/topics/gateway#channel-update + * https://discord.com/developers/docs/topics/gateway#channel-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayChannelModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + * https://discord.com/developers/docs/topics/gateway#channel-update + * https://discord.com/developers/docs/topics/gateway#channel-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayChannelModifyDispatchData = APIChannel; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayChannelCreateDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayChannelCreateDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#channel-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayChannelUpdateDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#channel-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayChannelUpdateDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#channel-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayChannelDeleteDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#channel-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayChannelDeleteDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#channel-pins-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayChannelPinsUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#channel-pins-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayChannelPinsUpdateDispatchData { + /** + * The id of the guild + */ + guild_id?: Snowflake; + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The time at which the most recent pinned message was pinned + */ + last_pin_timestamp?: string | null; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-create + * https://discord.com/developers/docs/topics/gateway#guild-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-create + * https://discord.com/developers/docs/topics/gateway#guild-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildModifyDispatchData = APIGuild; +/** + * https://discord.com/developers/docs/topics/gateway#guild-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildCreateDispatch = GatewayGuildModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildCreateDispatchData = GatewayGuildModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildUpdateDispatch = GatewayGuildModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildUpdateDispatchData = GatewayGuildModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildDeleteDispatchData = APIUnavailableGuild; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildBanModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildBanModifyDispatchData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * The banned user + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + user: APIUser; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildBanAddDispatch = GatewayGuildBanModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildBanAddDispatchData = GatewayGuildBanModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildBanRemoveDispatch = GatewayGuildBanModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildBanRemoveDispatchData = GatewayGuildBanModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-emojis-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildEmojisUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-emojis-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildEmojisUpdateDispatchData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * Array of emojis + * + * See https://discord.com/developers/docs/resources/emoji#emoji-object + */ + emojis: APIEmoji[]; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-stickers-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildStickersUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-stickers-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildStickersUpdateDispatchData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * Array of stickers + * + * See https://discord.com/developers/docs/resources/sticker#sticker-object + */ + stickers: APISticker[]; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-integrations-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildIntegrationsUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-integrations-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildIntegrationsUpdateDispatchData { + /** + * ID of the guild whose integrations were updated + */ + guild_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-add + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildMemberAddDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-add + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildMemberAddDispatchData extends APIGuildMember { + /** + * The id of the guild + */ + guild_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-remove + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildMemberRemoveDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-remove + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildMemberRemoveDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The user who was removed + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + user: APIUser; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildMemberUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildMemberUpdateDispatchData = Omit & Partial> & Required> & Nullable> & { + /** + * The id of the guild + */ + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#guild-members-chunk + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildMembersChunkDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-members-chunk + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildMembersChunkDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * Set of guild members + * + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + members: APIGuildMember[]; + /** + * The chunk index in the expected chunks for this response (`0 <= chunk_index < chunk_count`) + */ + chunk_index?: number; + /** + * The total number of expected chunks for this response + */ + chunk_count?: number; + /** + * If passing an invalid id to `REQUEST_GUILD_MEMBERS`, it will be returned here + */ + not_found?: unknown[]; + /** + * If passing true to `REQUEST_GUILD_MEMBERS`, presences of the returned members will be here + * + * See https://discord.com/developers/docs/topics/gateway#presence + */ + presences?: RawGatewayPresenceUpdate[]; + /** + * The nonce used in the Guild Members Request + * + * See https://discord.com/developers/docs/topics/gateway#request-guild-members + */ + nonce?: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + * https://discord.com/developers/docs/topics/gateway#guild-role-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildRoleModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + * https://discord.com/developers/docs/topics/gateway#guild-role-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildRoleModifyDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The role created or updated + * + * See https://discord.com/developers/docs/topics/permissions#role-object + */ + role: APIRole; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildRoleCreateDispatch = GatewayGuildRoleModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildRoleCreateDispatchData = GatewayGuildRoleModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildRoleUpdateDispatch = GatewayGuildRoleModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildRoleUpdateDispatchData = GatewayGuildRoleModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildRoleDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildRoleDeleteDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The id of the role + */ + role_id: Snowflake; +} +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildScheduledEventCreateDispatch = DataPayload; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildScheduledEventCreateDispatchData = APIGuildScheduledEvent; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildScheduledEventUpdateDispatch = DataPayload; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildScheduledEventUpdateDispatchData = APIGuildScheduledEvent; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildScheduledEventDeleteDispatch = DataPayload; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildScheduledEventDeleteDispatchData = APIGuildScheduledEvent; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildScheduledEventUserAddDispatch = DataPayload; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildScheduledEventUserAddDispatchData { + guild_scheduled_event_id: Snowflake; + user_id: Snowflake; + guild_id: Snowflake; +} +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayGuildScheduledEventUserRemoveDispatch = DataPayload; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayGuildScheduledEventUserRemoveDispatchData { + guild_scheduled_event_id: Snowflake; + user_id: Snowflake; + guild_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#integration-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayIntegrationCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#integration-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayIntegrationCreateDispatchData = APIGuildIntegration & { + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#integration-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayIntegrationUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#integration-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayIntegrationUpdateDispatchData = APIGuildIntegration & { + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#integration-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayIntegrationDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#integration-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayIntegrationDeleteDispatchData { + /** + * Integration id + */ + id: Snowflake; + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * ID of the bot/OAuth2 application for this Discord integration + */ + application_id?: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#interaction-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayInteractionCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#interaction-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayInteractionCreateDispatchData = APIInteraction; +/** + * https://discord.com/developers/docs/topics/gateway#invite-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayInviteCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#invite-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayInviteCreateDispatchData { + /** + * The channel the invite is for + */ + channel_id: Snowflake; + /** + * The unique invite code + * + * See https://discord.com/developers/docs/resources/invite#invite-object + */ + code: string; + /** + * The time at which the invite was created + */ + created_at: number; + /** + * The guild of the invite + */ + guild_id?: Snowflake; + /** + * The user that created the invite + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + inviter?: APIUser; + /** + * How long the invite is valid for (in seconds) + */ + max_age: number; + /** + * The maximum number of times the invite can be used + */ + max_uses: number; + /** + * The type of target for this voice channel invite + * + * See https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types + */ + target_type?: InviteTargetType; + /** + * The user whose stream to display for this voice channel stream invite + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + target_user?: APIUser; + /** + * The embedded application to open for this voice channel embedded application invite + */ + target_application?: Partial; + /** + * Whether or not the invite is temporary (invited users will be kicked on disconnect unless they're assigned a role) + */ + temporary: boolean; + /** + * How many times the invite has been used (always will be `0`) + */ + uses: 0; +} +/** + * https://discord.com/developers/docs/topics/gateway#invite-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayInviteDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#invite-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayInviteDeleteDispatchData { + /** + * The channel of the invite + */ + channel_id: Snowflake; + /** + * The guild of the invite + */ + guild_id?: Snowflake; + /** + * The unique invite code + * + * See https://discord.com/developers/docs/resources/invite#invite-object + */ + code: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageCreateDispatchData = APIMessage; +/** + * https://discord.com/developers/docs/topics/gateway#message-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageUpdateDispatchData = { + id: Snowflake; + channel_id: Snowflake; +} & Partial; +/** + * https://discord.com/developers/docs/topics/gateway#message-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayMessageDeleteDispatchData { + /** + * The id of the message + */ + id: Snowflake; + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-delete-bulk + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageDeleteBulkDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-delete-bulk + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayMessageDeleteBulkDispatchData { + /** + * The ids of the messages + */ + ids: Snowflake[]; + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-add + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageReactionAddDispatch = ReactionData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-add + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageReactionAddDispatchData = GatewayMessageReactionAddDispatch['d']; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageReactionRemoveDispatch = ReactionData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageReactionRemoveDispatchData = GatewayMessageReactionRemoveDispatch['d']; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-all + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageReactionRemoveAllDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-all + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageReactionRemoveAllDispatchData = MessageReactionRemoveData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-emoji + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayMessageReactionRemoveEmojiDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-emoji + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayMessageReactionRemoveEmojiDispatchData extends MessageReactionRemoveData { + /** + * The emoji that was removed + */ + emoji: APIEmoji; +} +/** + * https://discord.com/developers/docs/topics/gateway#presence-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayPresenceUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#presence-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayPresenceUpdateDispatchData = RawGatewayPresenceUpdate; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayStageInstanceCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-create + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayStageInstanceCreateDispatchData = APIStageInstance; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayStageInstanceDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-delete + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayStageInstanceDeleteDispatchData = APIStageInstance; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayStageInstanceUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayStageInstanceUpdateDispatchData = APIStageInstance; +/** + * https://discord.com/developers/docs/topics/gateway#typing-start + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayTypingStartDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#typing-start + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayTypingStartDispatchData { + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; + /** + * The id of the user + */ + user_id: Snowflake; + /** + * Unix time (in seconds) of when the user started typing + */ + timestamp: number; + /** + * The member who started typing if this happened in a guild + * + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + member?: APIGuildMember; +} +/** + * https://discord.com/developers/docs/topics/gateway#user-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayUserUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#user-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayUserUpdateDispatchData = APIUser; +/** + * https://discord.com/developers/docs/topics/gateway#voice-state-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayVoiceStateUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#voice-state-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayVoiceStateUpdateDispatchData = GatewayVoiceState; +/** + * https://discord.com/developers/docs/topics/gateway#voice-server-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayVoiceServerUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#voice-server-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayVoiceServerUpdateDispatchData { + /** + * Voice connection token + */ + token: string; + /** + * The guild this voice server update is for + */ + guild_id: Snowflake; + /** + * The voice server host + * + * A `null` endpoint means that the voice server allocated has gone away and is trying to be reallocated. + * You should attempt to disconnect from the currently connected voice server, and not attempt to reconnect + * until a new voice server is allocated + */ + endpoint: string | null; +} +/** + * https://discord.com/developers/docs/topics/gateway#webhooks-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayWebhooksUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#webhooks-update + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayWebhooksUpdateDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The id of the channel + */ + channel_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayHeartbeat { + op: GatewayOpcodes.Heartbeat; + d: GatewayHeartbeatData; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayHeartbeatData = number | null; +/** + * https://discord.com/developers/docs/topics/gateway#identify + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayIdentify { + op: GatewayOpcodes.Identify; + d: GatewayIdentifyData; +} +/** + * https://discord.com/developers/docs/topics/gateway#identify + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayIdentifyData { + /** + * Authentication token + */ + token: string; + /** + * Connection properties + * + * See https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties + */ + properties: GatewayIdentifyProperties; + /** + * Whether this connection supports compression of packets + * + * @default false + */ + compress?: boolean; + /** + * Value between 50 and 250, total number of members where the gateway will stop sending + * offline members in the guild member list + * + * @default 50 + */ + large_threshold?: number; + /** + * Used for Guild Sharding + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + shard?: [shard_id: number, shard_count: number]; + /** + * Presence structure for initial presence information + * + * See https://discord.com/developers/docs/topics/gateway#update-presence + */ + presence?: GatewayPresenceUpdateData; + /** + * The Gateway Intents you wish to receive + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + */ + intents: number; +} +/** + * https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayIdentifyProperties { + /** + * Your operating system + */ + $os: string; + /** + * Your library name + */ + $browser: string; + /** + * Your library name + */ + $device: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#resume + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayResume { + op: GatewayOpcodes.Resume; + d: GatewayResumeData; +} +/** + * https://discord.com/developers/docs/topics/gateway#resume + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayResumeData { + /** + * Session token + */ + token: string; + /** + * Session id + */ + session_id: string; + /** + * Last sequence number received + */ + seq: number; +} +/** + * https://discord.com/developers/docs/topics/gateway#request-guild-members + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayRequestGuildMembers { + op: GatewayOpcodes.RequestGuildMembers; + d: GatewayRequestGuildMembersData; +} +/** + * https://discord.com/developers/docs/topics/gateway#request-guild-members + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayRequestGuildMembersData { + /** + * ID of the guild to get members for + */ + guild_id: Snowflake; + /** + * String that username starts with, or an empty string to return all members + */ + query?: string; + /** + * Maximum number of members to send matching the `query`; + * a limit of `0` can be used with an empty string `query` to return all members + */ + limit: number; + /** + * Used to specify if we want the presences of the matched members + */ + presences?: boolean; + /** + * Used to specify which users you wish to fetch + */ + user_ids?: Snowflake | Snowflake[]; + /** + * Nonce to identify the Guild Members Chunk response + * + * Nonce can only be up to 32 bytes. If you send an invalid nonce it will be ignored and the reply member_chunk(s) will not have a `nonce` set. + * + * See https://discord.com/developers/docs/topics/gateway#guild-members-chunk + */ + nonce?: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-voice-state + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayVoiceStateUpdate { + op: GatewayOpcodes.VoiceStateUpdate; + d: GatewayVoiceStateUpdateData; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-voice-state + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayVoiceStateUpdateData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * ID of the voice channel client wants to join (`null` if disconnecting) + */ + channel_id: Snowflake | null; + /** + * Is the client muted + */ + self_mute: boolean; + /** + * Is the client deafened + */ + self_deaf: boolean; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-presence + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayUpdatePresence { + op: GatewayOpcodes.PresenceUpdate; + d: GatewayPresenceUpdateData; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-presence-gateway-presence-update-structure + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export interface GatewayPresenceUpdateData { + /** + * Unix time (in milliseconds) of when the client went idle, or `null` if the client is not idle + */ + since: number | null; + /** + * The user's activities + * + * See https://discord.com/developers/docs/topics/gateway#activity-object + */ + activities: GatewayActivityUpdateData[]; + /** + * The user's new status + * + * See https://discord.com/developers/docs/topics/gateway#update-presence-status-types + */ + status: PresenceUpdateStatus; + /** + * Whether or not the client is afk + */ + afk: boolean; +} +/** + * https://discord.com/developers/docs/topics/gateway#activity-object-activity-structure + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +export declare type GatewayActivityUpdateData = Pick; +interface BasePayload { + /** + * Opcode for the payload + */ + op: GatewayOpcodes; + /** + * Event data + */ + d?: unknown; + /** + * Sequence number, used for resuming sessions and heartbeats + */ + s: number; + /** + * The event name for this payload + */ + t?: string; +} +declare type NonDispatchPayload = Omit & { + t: null; + s: null; +}; +interface DataPayload extends BasePayload { + op: GatewayOpcodes.Dispatch; + t: Event; + d: D; +} +declare type ReactionData = DataPayload>; +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +interface MessageReactionRemoveData { + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the message + */ + message_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; +} +//# sourceMappingURL=v8.d.ts.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.d.ts.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.d.ts.map new file mode 100644 index 0000000..0ded498 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"v8.d.ts","sourceRoot":"","sources":["v8.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.js b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.js new file mode 100644 index 0000000..f07761b --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.js @@ -0,0 +1,242 @@ +"use strict"; +/** + * Types extracted from https://discord.com/developers/docs/topics/gateway + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GatewayDispatchEvents = exports.GatewayIntentBits = exports.GatewayCloseCodes = exports.GatewayOpcodes = exports.GatewayVersion = void 0; +__exportStar(require("./common"), exports); +/** + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +exports.GatewayVersion = '8'; +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +var GatewayOpcodes; +(function (GatewayOpcodes) { + /** + * An event was dispatched + */ + GatewayOpcodes[GatewayOpcodes["Dispatch"] = 0] = "Dispatch"; + /** + * A bidirectional opcode to maintain an active gateway connection. + * Fired periodically by the client, or fired by the gateway to request an immediate heartbeat from the client. + */ + GatewayOpcodes[GatewayOpcodes["Heartbeat"] = 1] = "Heartbeat"; + /** + * Starts a new session during the initial handshake + */ + GatewayOpcodes[GatewayOpcodes["Identify"] = 2] = "Identify"; + /** + * Update the client's presence + */ + GatewayOpcodes[GatewayOpcodes["PresenceUpdate"] = 3] = "PresenceUpdate"; + /** + * Used to join/leave or move between voice channels + */ + GatewayOpcodes[GatewayOpcodes["VoiceStateUpdate"] = 4] = "VoiceStateUpdate"; + /** + * Resume a previous session that was disconnected + */ + GatewayOpcodes[GatewayOpcodes["Resume"] = 6] = "Resume"; + /** + * You should attempt to reconnect and resume immediately + */ + GatewayOpcodes[GatewayOpcodes["Reconnect"] = 7] = "Reconnect"; + /** + * Request information about offline guild members in a large guild + */ + GatewayOpcodes[GatewayOpcodes["RequestGuildMembers"] = 8] = "RequestGuildMembers"; + /** + * The session has been invalidated. You should reconnect and identify/resume accordingly + */ + GatewayOpcodes[GatewayOpcodes["InvalidSession"] = 9] = "InvalidSession"; + /** + * Sent immediately after connecting, contains the `heartbeat_interval` to use + */ + GatewayOpcodes[GatewayOpcodes["Hello"] = 10] = "Hello"; + /** + * Sent in response to receiving a heartbeat to acknowledge that it has been received + */ + GatewayOpcodes[GatewayOpcodes["HeartbeatAck"] = 11] = "HeartbeatAck"; +})(GatewayOpcodes = exports.GatewayOpcodes || (exports.GatewayOpcodes = {})); +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-close-event-codes + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +var GatewayCloseCodes; +(function (GatewayCloseCodes) { + /** + * We're not sure what went wrong. Try reconnecting? + */ + GatewayCloseCodes[GatewayCloseCodes["UnknownError"] = 4000] = "UnknownError"; + /** + * You sent an invalid Gateway opcode or an invalid payload for an opcode. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#payloads-and-opcodes + */ + GatewayCloseCodes[GatewayCloseCodes["UnknownOpcode"] = 4001] = "UnknownOpcode"; + /** + * You sent an invalid payload to us. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#sending-payloads + */ + GatewayCloseCodes[GatewayCloseCodes["DecodeError"] = 4002] = "DecodeError"; + /** + * You sent us a payload prior to identifying + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + GatewayCloseCodes[GatewayCloseCodes["NotAuthenticated"] = 4003] = "NotAuthenticated"; + /** + * The account token sent with your identify payload is incorrect + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + GatewayCloseCodes[GatewayCloseCodes["AuthenticationFailed"] = 4004] = "AuthenticationFailed"; + /** + * You sent more than one identify payload. Don't do that! + */ + GatewayCloseCodes[GatewayCloseCodes["AlreadyAuthenticated"] = 4005] = "AlreadyAuthenticated"; + /** + * The sequence sent when resuming the session was invalid. Reconnect and start a new session + * + * See https://discord.com/developers/docs/topics/gateway#resume + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidSeq"] = 4007] = "InvalidSeq"; + /** + * Woah nelly! You're sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this + */ + GatewayCloseCodes[GatewayCloseCodes["RateLimited"] = 4008] = "RateLimited"; + /** + * Your session timed out. Reconnect and start a new one + */ + GatewayCloseCodes[GatewayCloseCodes["SessionTimedOut"] = 4009] = "SessionTimedOut"; + /** + * You sent us an invalid shard when identifying + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidShard"] = 4010] = "InvalidShard"; + /** + * The session would have handled too many guilds - you are required to shard your connection in order to connect + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + GatewayCloseCodes[GatewayCloseCodes["ShardingRequired"] = 4011] = "ShardingRequired"; + /** + * You sent an invalid version for the gateway + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidAPIVersion"] = 4012] = "InvalidAPIVersion"; + /** + * You sent an invalid intent for a Gateway Intent. You may have incorrectly calculated the bitwise value + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidIntents"] = 4013] = "InvalidIntents"; + /** + * You sent a disallowed intent for a Gateway Intent. You may have tried to specify an intent that you have not + * enabled or are not whitelisted for + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + * + * See https://discord.com/developers/docs/topics/gateway#privileged-intents + */ + GatewayCloseCodes[GatewayCloseCodes["DisallowedIntents"] = 4014] = "DisallowedIntents"; +})(GatewayCloseCodes = exports.GatewayCloseCodes || (exports.GatewayCloseCodes = {})); +/** + * https://discord.com/developers/docs/topics/gateway#list-of-intents + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +var GatewayIntentBits; +(function (GatewayIntentBits) { + GatewayIntentBits[GatewayIntentBits["Guilds"] = 1] = "Guilds"; + GatewayIntentBits[GatewayIntentBits["GuildMembers"] = 2] = "GuildMembers"; + GatewayIntentBits[GatewayIntentBits["GuildBans"] = 4] = "GuildBans"; + GatewayIntentBits[GatewayIntentBits["GuildEmojisAndStickers"] = 8] = "GuildEmojisAndStickers"; + GatewayIntentBits[GatewayIntentBits["GuildIntegrations"] = 16] = "GuildIntegrations"; + GatewayIntentBits[GatewayIntentBits["GuildWebhooks"] = 32] = "GuildWebhooks"; + GatewayIntentBits[GatewayIntentBits["GuildInvites"] = 64] = "GuildInvites"; + GatewayIntentBits[GatewayIntentBits["GuildVoiceStates"] = 128] = "GuildVoiceStates"; + GatewayIntentBits[GatewayIntentBits["GuildPresences"] = 256] = "GuildPresences"; + GatewayIntentBits[GatewayIntentBits["GuildMessages"] = 512] = "GuildMessages"; + GatewayIntentBits[GatewayIntentBits["GuildMessageReactions"] = 1024] = "GuildMessageReactions"; + GatewayIntentBits[GatewayIntentBits["GuildMessageTyping"] = 2048] = "GuildMessageTyping"; + GatewayIntentBits[GatewayIntentBits["DirectMessages"] = 4096] = "DirectMessages"; + GatewayIntentBits[GatewayIntentBits["DirectMessageReactions"] = 8192] = "DirectMessageReactions"; + GatewayIntentBits[GatewayIntentBits["DirectMessageTyping"] = 16384] = "DirectMessageTyping"; + GatewayIntentBits[GatewayIntentBits["GuildScheduledEvents"] = 65536] = "GuildScheduledEvents"; +})(GatewayIntentBits = exports.GatewayIntentBits || (exports.GatewayIntentBits = {})); +/** + * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events + * @deprecated API and gateway v8 are deprecated and the types will not receive further updates, please update to v10. + */ +var GatewayDispatchEvents; +(function (GatewayDispatchEvents) { + GatewayDispatchEvents["ChannelCreate"] = "CHANNEL_CREATE"; + GatewayDispatchEvents["ChannelDelete"] = "CHANNEL_DELETE"; + GatewayDispatchEvents["ChannelPinsUpdate"] = "CHANNEL_PINS_UPDATE"; + GatewayDispatchEvents["ChannelUpdate"] = "CHANNEL_UPDATE"; + GatewayDispatchEvents["GuildBanAdd"] = "GUILD_BAN_ADD"; + GatewayDispatchEvents["GuildBanRemove"] = "GUILD_BAN_REMOVE"; + GatewayDispatchEvents["GuildCreate"] = "GUILD_CREATE"; + GatewayDispatchEvents["GuildDelete"] = "GUILD_DELETE"; + GatewayDispatchEvents["GuildEmojisUpdate"] = "GUILD_EMOJIS_UPDATE"; + GatewayDispatchEvents["GuildIntegrationsUpdate"] = "GUILD_INTEGRATIONS_UPDATE"; + GatewayDispatchEvents["GuildMemberAdd"] = "GUILD_MEMBER_ADD"; + GatewayDispatchEvents["GuildMemberRemove"] = "GUILD_MEMBER_REMOVE"; + GatewayDispatchEvents["GuildMembersChunk"] = "GUILD_MEMBERS_CHUNK"; + GatewayDispatchEvents["GuildMemberUpdate"] = "GUILD_MEMBER_UPDATE"; + GatewayDispatchEvents["GuildRoleCreate"] = "GUILD_ROLE_CREATE"; + GatewayDispatchEvents["GuildRoleDelete"] = "GUILD_ROLE_DELETE"; + GatewayDispatchEvents["GuildRoleUpdate"] = "GUILD_ROLE_UPDATE"; + GatewayDispatchEvents["GuildStickersUpdate"] = "GUILD_STICKERS_UPDATE"; + GatewayDispatchEvents["GuildUpdate"] = "GUILD_UPDATE"; + GatewayDispatchEvents["IntegrationCreate"] = "INTEGRATION_CREATE"; + GatewayDispatchEvents["IntegrationDelete"] = "INTEGRATION_DELETE"; + GatewayDispatchEvents["IntegrationUpdate"] = "INTEGRATION_UPDATE"; + GatewayDispatchEvents["InteractionCreate"] = "INTERACTION_CREATE"; + GatewayDispatchEvents["InviteCreate"] = "INVITE_CREATE"; + GatewayDispatchEvents["InviteDelete"] = "INVITE_DELETE"; + GatewayDispatchEvents["MessageCreate"] = "MESSAGE_CREATE"; + GatewayDispatchEvents["MessageDelete"] = "MESSAGE_DELETE"; + GatewayDispatchEvents["MessageDeleteBulk"] = "MESSAGE_DELETE_BULK"; + GatewayDispatchEvents["MessageReactionAdd"] = "MESSAGE_REACTION_ADD"; + GatewayDispatchEvents["MessageReactionRemove"] = "MESSAGE_REACTION_REMOVE"; + GatewayDispatchEvents["MessageReactionRemoveAll"] = "MESSAGE_REACTION_REMOVE_ALL"; + GatewayDispatchEvents["MessageReactionRemoveEmoji"] = "MESSAGE_REACTION_REMOVE_EMOJI"; + GatewayDispatchEvents["MessageUpdate"] = "MESSAGE_UPDATE"; + GatewayDispatchEvents["PresenceUpdate"] = "PRESENCE_UPDATE"; + GatewayDispatchEvents["StageInstanceCreate"] = "STAGE_INSTANCE_CREATE"; + GatewayDispatchEvents["StageInstanceDelete"] = "STAGE_INSTANCE_DELETE"; + GatewayDispatchEvents["StageInstanceUpdate"] = "STAGE_INSTANCE_UPDATE"; + GatewayDispatchEvents["Ready"] = "READY"; + GatewayDispatchEvents["Resumed"] = "RESUMED"; + GatewayDispatchEvents["TypingStart"] = "TYPING_START"; + GatewayDispatchEvents["UserUpdate"] = "USER_UPDATE"; + GatewayDispatchEvents["VoiceServerUpdate"] = "VOICE_SERVER_UPDATE"; + GatewayDispatchEvents["VoiceStateUpdate"] = "VOICE_STATE_UPDATE"; + GatewayDispatchEvents["WebhooksUpdate"] = "WEBHOOKS_UPDATE"; + GatewayDispatchEvents["GuildScheduledEventCreate"] = "GUILD_SCHEDULED_EVENT_CREATE"; + GatewayDispatchEvents["GuildScheduledEventUpdate"] = "GUILD_SCHEDULED_EVENT_UPDATE"; + GatewayDispatchEvents["GuildScheduledEventDelete"] = "GUILD_SCHEDULED_EVENT_DELETE"; + GatewayDispatchEvents["GuildScheduledEventUserAdd"] = "GUILD_SCHEDULED_EVENT_USER_ADD"; + GatewayDispatchEvents["GuildScheduledEventUserRemove"] = "GUILD_SCHEDULED_EVENT_USER_REMOVE"; +})(GatewayDispatchEvents = exports.GatewayDispatchEvents || (exports.GatewayDispatchEvents = {})); +// #endregion Shared +//# sourceMappingURL=v8.js.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.js.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.js.map new file mode 100644 index 0000000..ada6a2d --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.js.map @@ -0,0 +1 @@ +{"version":3,"file":"v8.js","sourceRoot":"","sources":["v8.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.mjs b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.mjs new file mode 100644 index 0000000..c5cfed1 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v8.mjs @@ -0,0 +1,8 @@ +import mod from "./v8.js"; + +export default mod; +export const GatewayCloseCodes = mod.GatewayCloseCodes; +export const GatewayDispatchEvents = mod.GatewayDispatchEvents; +export const GatewayIntentBits = mod.GatewayIntentBits; +export const GatewayOpcodes = mod.GatewayOpcodes; +export const GatewayVersion = mod.GatewayVersion; diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.d.ts b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.d.ts new file mode 100644 index 0000000..385d7f1 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.d.ts @@ -0,0 +1,1470 @@ +/** + * Types extracted from https://discord.com/developers/docs/topics/gateway + */ +import type { Snowflake } from '../globals'; +import type { GatewayPresenceUpdate } from '../payloads/v9/gateway'; +import type { APIApplication, APIChannel, APIEmoji, APIGuild, APIGuildIntegration, APIGuildMember, APIGuildScheduledEvent, APIInteraction, APIMessage, APIRole, APIStageInstance, APISticker, APIThreadChannel, APIThreadMember, APIUnavailableGuild, APIUser, GatewayActivity, GatewayPresenceUpdate as RawGatewayPresenceUpdate, GatewayThreadListSync as RawGatewayThreadListSync, GatewayThreadMembersUpdate as RawGatewayThreadMembersUpdate, GatewayVoiceState, InviteTargetType, PresenceUpdateStatus } from '../payloads/v9/index'; +import type { Nullable } from '../utils/internals'; +export * from './common'; +export declare const GatewayVersion = "9"; +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes + */ +export declare enum GatewayOpcodes { + /** + * An event was dispatched + */ + Dispatch = 0, + /** + * A bidirectional opcode to maintain an active gateway connection. + * Fired periodically by the client, or fired by the gateway to request an immediate heartbeat from the client. + */ + Heartbeat = 1, + /** + * Starts a new session during the initial handshake + */ + Identify = 2, + /** + * Update the client's presence + */ + PresenceUpdate = 3, + /** + * Used to join/leave or move between voice channels + */ + VoiceStateUpdate = 4, + /** + * Resume a previous session that was disconnected + */ + Resume = 6, + /** + * You should attempt to reconnect and resume immediately + */ + Reconnect = 7, + /** + * Request information about offline guild members in a large guild + */ + RequestGuildMembers = 8, + /** + * The session has been invalidated. You should reconnect and identify/resume accordingly + */ + InvalidSession = 9, + /** + * Sent immediately after connecting, contains the `heartbeat_interval` to use + */ + Hello = 10, + /** + * Sent in response to receiving a heartbeat to acknowledge that it has been received + */ + HeartbeatAck = 11 +} +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-close-event-codes + */ +export declare enum GatewayCloseCodes { + /** + * We're not sure what went wrong. Try reconnecting? + */ + UnknownError = 4000, + /** + * You sent an invalid Gateway opcode or an invalid payload for an opcode. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#payloads-and-opcodes + */ + UnknownOpcode = 4001, + /** + * You sent an invalid payload to us. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#sending-payloads + */ + DecodeError = 4002, + /** + * You sent us a payload prior to identifying + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + NotAuthenticated = 4003, + /** + * The account token sent with your identify payload is incorrect + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + AuthenticationFailed = 4004, + /** + * You sent more than one identify payload. Don't do that! + */ + AlreadyAuthenticated = 4005, + /** + * The sequence sent when resuming the session was invalid. Reconnect and start a new session + * + * See https://discord.com/developers/docs/topics/gateway#resume + */ + InvalidSeq = 4007, + /** + * Woah nelly! You're sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this + */ + RateLimited = 4008, + /** + * Your session timed out. Reconnect and start a new one + */ + SessionTimedOut = 4009, + /** + * You sent us an invalid shard when identifying + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + InvalidShard = 4010, + /** + * The session would have handled too many guilds - you are required to shard your connection in order to connect + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + ShardingRequired = 4011, + /** + * You sent an invalid version for the gateway + */ + InvalidAPIVersion = 4012, + /** + * You sent an invalid intent for a Gateway Intent. You may have incorrectly calculated the bitwise value + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + */ + InvalidIntents = 4013, + /** + * You sent a disallowed intent for a Gateway Intent. You may have tried to specify an intent that you have not + * enabled or are not whitelisted for + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + * + * See https://discord.com/developers/docs/topics/gateway#privileged-intents + */ + DisallowedIntents = 4014 +} +/** + * https://discord.com/developers/docs/topics/gateway#list-of-intents + */ +export declare enum GatewayIntentBits { + Guilds = 1, + GuildMembers = 2, + GuildBans = 4, + GuildEmojisAndStickers = 8, + GuildIntegrations = 16, + GuildWebhooks = 32, + GuildInvites = 64, + GuildVoiceStates = 128, + GuildPresences = 256, + GuildMessages = 512, + GuildMessageReactions = 1024, + GuildMessageTyping = 2048, + DirectMessages = 4096, + DirectMessageReactions = 8192, + DirectMessageTyping = 16384, + GuildScheduledEvents = 65536 +} +/** + * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events + */ +export declare enum GatewayDispatchEvents { + ApplicationCommandPermissionsUpdate = "APPLICATION_COMMAND_PERMISSIONS_UPDATE", + ChannelCreate = "CHANNEL_CREATE", + ChannelDelete = "CHANNEL_DELETE", + ChannelPinsUpdate = "CHANNEL_PINS_UPDATE", + ChannelUpdate = "CHANNEL_UPDATE", + GuildBanAdd = "GUILD_BAN_ADD", + GuildBanRemove = "GUILD_BAN_REMOVE", + GuildCreate = "GUILD_CREATE", + GuildDelete = "GUILD_DELETE", + GuildEmojisUpdate = "GUILD_EMOJIS_UPDATE", + GuildIntegrationsUpdate = "GUILD_INTEGRATIONS_UPDATE", + GuildMemberAdd = "GUILD_MEMBER_ADD", + GuildMemberRemove = "GUILD_MEMBER_REMOVE", + GuildMembersChunk = "GUILD_MEMBERS_CHUNK", + GuildMemberUpdate = "GUILD_MEMBER_UPDATE", + GuildRoleCreate = "GUILD_ROLE_CREATE", + GuildRoleDelete = "GUILD_ROLE_DELETE", + GuildRoleUpdate = "GUILD_ROLE_UPDATE", + GuildStickersUpdate = "GUILD_STICKERS_UPDATE", + GuildUpdate = "GUILD_UPDATE", + IntegrationCreate = "INTEGRATION_CREATE", + IntegrationDelete = "INTEGRATION_DELETE", + IntegrationUpdate = "INTEGRATION_UPDATE", + InteractionCreate = "INTERACTION_CREATE", + InviteCreate = "INVITE_CREATE", + InviteDelete = "INVITE_DELETE", + MessageCreate = "MESSAGE_CREATE", + MessageDelete = "MESSAGE_DELETE", + MessageDeleteBulk = "MESSAGE_DELETE_BULK", + MessageReactionAdd = "MESSAGE_REACTION_ADD", + MessageReactionRemove = "MESSAGE_REACTION_REMOVE", + MessageReactionRemoveAll = "MESSAGE_REACTION_REMOVE_ALL", + MessageReactionRemoveEmoji = "MESSAGE_REACTION_REMOVE_EMOJI", + MessageUpdate = "MESSAGE_UPDATE", + PresenceUpdate = "PRESENCE_UPDATE", + StageInstanceCreate = "STAGE_INSTANCE_CREATE", + StageInstanceDelete = "STAGE_INSTANCE_DELETE", + StageInstanceUpdate = "STAGE_INSTANCE_UPDATE", + Ready = "READY", + Resumed = "RESUMED", + ThreadCreate = "THREAD_CREATE", + ThreadDelete = "THREAD_DELETE", + ThreadListSync = "THREAD_LIST_SYNC", + ThreadMembersUpdate = "THREAD_MEMBERS_UPDATE", + ThreadMemberUpdate = "THREAD_MEMBER_UPDATE", + ThreadUpdate = "THREAD_UPDATE", + TypingStart = "TYPING_START", + UserUpdate = "USER_UPDATE", + VoiceServerUpdate = "VOICE_SERVER_UPDATE", + VoiceStateUpdate = "VOICE_STATE_UPDATE", + WebhooksUpdate = "WEBHOOKS_UPDATE", + GuildScheduledEventCreate = "GUILD_SCHEDULED_EVENT_CREATE", + GuildScheduledEventUpdate = "GUILD_SCHEDULED_EVENT_UPDATE", + GuildScheduledEventDelete = "GUILD_SCHEDULED_EVENT_DELETE", + GuildScheduledEventUserAdd = "GUILD_SCHEDULED_EVENT_USER_ADD", + GuildScheduledEventUserRemove = "GUILD_SCHEDULED_EVENT_USER_REMOVE" +} +export declare type GatewaySendPayload = GatewayHeartbeat | GatewayIdentify | GatewayUpdatePresence | GatewayVoiceStateUpdate | GatewayResume | GatewayRequestGuildMembers; +export declare type GatewayReceivePayload = GatewayHello | GatewayHeartbeatRequest | GatewayHeartbeatAck | GatewayInvalidSession | GatewayReconnect | GatewayDispatchPayload; +export declare type GatewayDispatchPayload = GatewayChannelModifyDispatch | GatewayChannelPinsUpdateDispatch | GatewayGuildBanModifyDispatch | GatewayGuildCreateDispatch | GatewayGuildDeleteDispatch | GatewayGuildEmojisUpdateDispatch | GatewayGuildIntegrationsUpdateDispatch | GatewayGuildMemberAddDispatch | GatewayGuildMemberRemoveDispatch | GatewayGuildMembersChunkDispatch | GatewayGuildMemberUpdateDispatch | GatewayGuildModifyDispatch | GatewayGuildRoleDeleteDispatch | GatewayGuildRoleModifyDispatch | GatewayGuildScheduledEventCreateDispatch | GatewayGuildScheduledEventUpdateDispatch | GatewayGuildScheduledEventDeleteDispatch | GatewayGuildScheduledEventUserAddDispatch | GatewayGuildScheduledEventUserRemoveDispatch | GatewayGuildStickersUpdateDispatch | GatewayIntegrationCreateDispatch | GatewayIntegrationDeleteDispatch | GatewayIntegrationUpdateDispatch | GatewayInteractionCreateDispatch | GatewayInviteCreateDispatch | GatewayInviteDeleteDispatch | GatewayMessageCreateDispatch | GatewayMessageDeleteBulkDispatch | GatewayMessageDeleteDispatch | GatewayMessageReactionAddDispatch | GatewayMessageReactionRemoveAllDispatch | GatewayMessageReactionRemoveDispatch | GatewayMessageReactionRemoveEmojiDispatch | GatewayMessageUpdateDispatch | GatewayPresenceUpdateDispatch | GatewayStageInstanceCreateDispatch | GatewayStageInstanceDeleteDispatch | GatewayStageInstanceUpdateDispatch | GatewayReadyDispatch | GatewayResumedDispatch | GatewayThreadListSyncDispatch | GatewayThreadMembersUpdateDispatch | GatewayThreadMemberUpdateDispatch | GatewayThreadModifyDispatch | GatewayTypingStartDispatch | GatewayUserUpdateDispatch | GatewayVoiceServerUpdateDispatch | GatewayVoiceStateUpdateDispatch | GatewayWebhooksUpdateDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#hello + */ +export interface GatewayHello extends NonDispatchPayload { + op: GatewayOpcodes.Hello; + d: GatewayHelloData; +} +/** + * https://discord.com/developers/docs/topics/gateway#hello + */ +export interface GatewayHelloData { + /** + * The interval (in milliseconds) the client should heartbeat with + */ + heartbeat_interval: number; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + */ +export interface GatewayHeartbeatRequest extends NonDispatchPayload { + op: GatewayOpcodes.Heartbeat; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating-example-gateway-heartbeat-ack + */ +export interface GatewayHeartbeatAck extends NonDispatchPayload { + op: GatewayOpcodes.HeartbeatAck; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#invalid-session + */ +export interface GatewayInvalidSession extends NonDispatchPayload { + op: GatewayOpcodes.InvalidSession; + d: GatewayInvalidSessionData; +} +/** + * https://discord.com/developers/docs/topics/gateway#invalid-session + */ +export declare type GatewayInvalidSessionData = boolean; +/** + * https://discord.com/developers/docs/topics/gateway#reconnect + */ +export interface GatewayReconnect extends NonDispatchPayload { + op: GatewayOpcodes.Reconnect; + d: never; +} +/** + * https://discord.com/developers/docs/topics/gateway#ready + */ +export declare type GatewayReadyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#ready + */ +export interface GatewayReadyDispatchData { + /** + * Gateway version + * + * See https://discord.com/developers/docs/topics/gateway#gateways-gateway-versions + */ + v: number; + /** + * Information about the user including email + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + user: APIUser; + /** + * The guilds the user is in + * + * See https://discord.com/developers/docs/resources/guild#unavailable-guild-object + */ + guilds: APIUnavailableGuild[]; + /** + * Used for resuming connections + */ + session_id: string; + /** + * The shard information associated with this session, if sent when identifying + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + shard?: [shard_id: number, shard_count: number]; + /** + * Contains `id` and `flags` + * + * See https://discord.com/developers/docs/resources/application#application-object + */ + application: Pick; +} +/** + * https://discord.com/developers/docs/topics/gateway#resumed + */ +export declare type GatewayResumedDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + * https://discord.com/developers/docs/topics/gateway#channel-update + * https://discord.com/developers/docs/topics/gateway#channel-delete + */ +export declare type GatewayChannelModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + * https://discord.com/developers/docs/topics/gateway#channel-update + * https://discord.com/developers/docs/topics/gateway#channel-delete + */ +export declare type GatewayChannelModifyDispatchData = APIChannel; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + */ +export declare type GatewayChannelCreateDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#channel-create + */ +export declare type GatewayChannelCreateDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#channel-update + */ +export declare type GatewayChannelUpdateDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#channel-update + */ +export declare type GatewayChannelUpdateDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#channel-delete + */ +export declare type GatewayChannelDeleteDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#channel-delete + */ +export declare type GatewayChannelDeleteDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#channel-pins-update + */ +export declare type GatewayChannelPinsUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#channel-pins-update + */ +export interface GatewayChannelPinsUpdateDispatchData { + /** + * The id of the guild + */ + guild_id?: Snowflake; + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The time at which the most recent pinned message was pinned + */ + last_pin_timestamp?: string | null; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-update + */ +export declare type GatewayGuildModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-update + */ +export declare type GatewayGuildModifyDispatchData = APIGuild; +/** + * https://discord.com/developers/docs/topics/gateway#guild-create + */ +export declare type GatewayGuildCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-create + * https://discord.com/developers/docs/topics/gateway#guild-create-guild-create-extra-fields + */ +export interface GatewayGuildCreateDispatchData extends APIGuild { + /** + * When this guild was joined at + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + */ + joined_at: string; + /** + * `true` if this is considered a large guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + */ + large: boolean; + /** + * `true` if this guild is unavailable due to an outage + */ + unavailable?: boolean; + /** + * Total number of members in this guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + */ + member_count: number; + /** + * States of members currently in voice channels; lacks the `guild_id` key + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/resources/voice#voice-state-object + */ + voice_states: Omit[]; + /** + * Users in the guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + members: APIGuildMember[]; + /** + * Channels in the guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/resources/channel#channel-object + */ + channels: APIChannel[]; + /** + * Threads in the guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/resources/channel#channel-object + */ + threads: APIChannel[]; + /** + * Presences of the members in the guild, will only include non-offline members if the size is greater than `large_threshold` + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/topics/gateway#presence-update + */ + presences: GatewayPresenceUpdate[]; + /** + * The stage instances in the guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * See https://discord.com/developers/docs/resources/stage-instance#stage-instance-object-stage-instance-structure + */ + stage_instances: APIStageInstance[]; + /** + * The scheduled events in the guild + * + * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** + * + * https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object + */ + guild_scheduled_events: APIGuildScheduledEvent[]; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-update + */ +export declare type GatewayGuildUpdateDispatch = GatewayGuildModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-update + */ +export declare type GatewayGuildUpdateDispatchData = GatewayGuildModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-delete + */ +export declare type GatewayGuildDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-delete + */ +export declare type GatewayGuildDeleteDispatchData = APIUnavailableGuild; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + */ +export declare type GatewayGuildBanModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + */ +export interface GatewayGuildBanModifyDispatchData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * The banned user + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + user: APIUser; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + */ +export declare type GatewayGuildBanAddDispatch = GatewayGuildBanModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-add + */ +export declare type GatewayGuildBanAddDispatchData = GatewayGuildBanModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + */ +export declare type GatewayGuildBanRemoveDispatch = GatewayGuildBanModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-ban-remove + */ +export declare type GatewayGuildBanRemoveDispatchData = GatewayGuildBanModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-emojis-update + */ +export declare type GatewayGuildEmojisUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-emojis-update + */ +export interface GatewayGuildEmojisUpdateDispatchData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * Array of emojis + * + * See https://discord.com/developers/docs/resources/emoji#emoji-object + */ + emojis: APIEmoji[]; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-stickers-update + */ +export declare type GatewayGuildStickersUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-stickers-update + */ +export interface GatewayGuildStickersUpdateDispatchData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * Array of stickers + * + * See https://discord.com/developers/docs/resources/sticker#sticker-object + */ + stickers: APISticker[]; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-integrations-update + */ +export declare type GatewayGuildIntegrationsUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-integrations-update + */ +export interface GatewayGuildIntegrationsUpdateDispatchData { + /** + * ID of the guild whose integrations were updated + */ + guild_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-add + */ +export declare type GatewayGuildMemberAddDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-add + */ +export interface GatewayGuildMemberAddDispatchData extends APIGuildMember { + /** + * The id of the guild + */ + guild_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-remove + */ +export declare type GatewayGuildMemberRemoveDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-remove + */ +export interface GatewayGuildMemberRemoveDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The user who was removed + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + user: APIUser; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-update + */ +export declare type GatewayGuildMemberUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-member-update + */ +export declare type GatewayGuildMemberUpdateDispatchData = Omit & Partial> & Required> & Nullable> & { + /** + * The id of the guild + */ + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#guild-members-chunk + */ +export declare type GatewayGuildMembersChunkDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-members-chunk + */ +export interface GatewayGuildMembersChunkDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * Set of guild members + * + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + members: APIGuildMember[]; + /** + * The chunk index in the expected chunks for this response (`0 <= chunk_index < chunk_count`) + */ + chunk_index?: number; + /** + * The total number of expected chunks for this response + */ + chunk_count?: number; + /** + * If passing an invalid id to `REQUEST_GUILD_MEMBERS`, it will be returned here + */ + not_found?: unknown[]; + /** + * If passing true to `REQUEST_GUILD_MEMBERS`, presences of the returned members will be here + * + * See https://discord.com/developers/docs/topics/gateway#presence + */ + presences?: RawGatewayPresenceUpdate[]; + /** + * The nonce used in the Guild Members Request + * + * See https://discord.com/developers/docs/topics/gateway#request-guild-members + */ + nonce?: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + * https://discord.com/developers/docs/topics/gateway#guild-role-update + */ +export declare type GatewayGuildRoleModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + * https://discord.com/developers/docs/topics/gateway#guild-role-update + */ +export interface GatewayGuildRoleModifyDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The role created or updated + * + * See https://discord.com/developers/docs/topics/permissions#role-object + */ + role: APIRole; +} +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + */ +export declare type GatewayGuildRoleCreateDispatch = GatewayGuildRoleModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-create + */ +export declare type GatewayGuildRoleCreateDispatchData = GatewayGuildRoleModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-update + */ +export declare type GatewayGuildRoleUpdateDispatch = GatewayGuildRoleModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-update + */ +export declare type GatewayGuildRoleUpdateDispatchData = GatewayGuildRoleModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-delete + */ +export declare type GatewayGuildRoleDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#guild-role-delete + */ +export interface GatewayGuildRoleDeleteDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The id of the role + */ + role_id: Snowflake; +} +export declare type GatewayGuildScheduledEventCreateDispatch = DataPayload; +export declare type GatewayGuildScheduledEventCreateDispatchData = APIGuildScheduledEvent; +export declare type GatewayGuildScheduledEventUpdateDispatch = DataPayload; +export declare type GatewayGuildScheduledEventUpdateDispatchData = APIGuildScheduledEvent; +export declare type GatewayGuildScheduledEventDeleteDispatch = DataPayload; +export declare type GatewayGuildScheduledEventDeleteDispatchData = APIGuildScheduledEvent; +export declare type GatewayGuildScheduledEventUserAddDispatch = DataPayload; +export interface GatewayGuildScheduledEventUserAddDispatchData { + guild_scheduled_event_id: Snowflake; + user_id: Snowflake; + guild_id: Snowflake; +} +export declare type GatewayGuildScheduledEventUserRemoveDispatch = DataPayload; +export interface GatewayGuildScheduledEventUserRemoveDispatchData { + guild_scheduled_event_id: Snowflake; + user_id: Snowflake; + guild_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#integration-create + */ +export declare type GatewayIntegrationCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#integration-create + */ +export declare type GatewayIntegrationCreateDispatchData = APIGuildIntegration & { + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#integration-update + */ +export declare type GatewayIntegrationUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#integration-update + */ +export declare type GatewayIntegrationUpdateDispatchData = APIGuildIntegration & { + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#integration-update + */ +export declare type GatewayIntegrationDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#integration-delete + */ +export interface GatewayIntegrationDeleteDispatchData { + /** + * Integration id + */ + id: Snowflake; + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * ID of the bot/OAuth2 application for this Discord integration + */ + application_id?: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#interaction-create + */ +export declare type GatewayInteractionCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#interaction-create + */ +export declare type GatewayInteractionCreateDispatchData = APIInteraction; +/** + * https://discord.com/developers/docs/topics/gateway#invite-create + */ +export declare type GatewayInviteCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#invite-create + */ +export interface GatewayInviteCreateDispatchData { + /** + * The channel the invite is for + */ + channel_id: Snowflake; + /** + * The unique invite code + * + * See https://discord.com/developers/docs/resources/invite#invite-object + */ + code: string; + /** + * The time at which the invite was created + */ + created_at: number; + /** + * The guild of the invite + */ + guild_id?: Snowflake; + /** + * The user that created the invite + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + inviter?: APIUser; + /** + * How long the invite is valid for (in seconds) + */ + max_age: number; + /** + * The maximum number of times the invite can be used + */ + max_uses: number; + /** + * The type of target for this voice channel invite + * + * See https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types + */ + target_type?: InviteTargetType; + /** + * The user whose stream to display for this voice channel stream invite + * + * See https://discord.com/developers/docs/resources/user#user-object + */ + target_user?: APIUser; + /** + * The embedded application to open for this voice channel embedded application invite + */ + target_application?: Partial; + /** + * Whether or not the invite is temporary (invited users will be kicked on disconnect unless they're assigned a role) + */ + temporary: boolean; + /** + * How many times the invite has been used (always will be `0`) + */ + uses: 0; +} +/** + * https://discord.com/developers/docs/topics/gateway#invite-delete + */ +export declare type GatewayInviteDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#invite-delete + */ +export interface GatewayInviteDeleteDispatchData { + /** + * The channel of the invite + */ + channel_id: Snowflake; + /** + * The guild of the invite + */ + guild_id?: Snowflake; + /** + * The unique invite code + * + * See https://discord.com/developers/docs/resources/invite#invite-object + */ + code: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-create + */ +export declare type GatewayMessageCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-create + */ +export declare type GatewayMessageCreateDispatchData = Omit & GatewayMessageEventExtraFields; +/** + * https://discord.com/developers/docs/topics/gateway#message-update + */ +export declare type GatewayMessageUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-update + */ +export declare type GatewayMessageUpdateDispatchData = Omit, 'mentions'> & GatewayMessageEventExtraFields & { + /** + * ID of the message + */ + id: Snowflake; + /** + * ID of the channel the message was sent in + */ + channel_id: Snowflake; +}; +export interface GatewayMessageEventExtraFields { + /** + * ID of the guild the message was sent in + */ + guild_id?: Snowflake; + /** + * Member properties for this message's author + * + * The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events + * from text-based guild channels + * + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + member?: APIGuildMember; + /** + * Users specifically mentioned in the message + * + * The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events + * from text-based guild channels + * + * See https://discord.com/developers/docs/resources/user#user-object + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + mentions: (APIUser & { + member?: Omit; + })[]; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-delete + */ +export declare type GatewayMessageDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-delete + */ +export interface GatewayMessageDeleteDispatchData { + /** + * The id of the message + */ + id: Snowflake; + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-delete-bulk + */ +export declare type GatewayMessageDeleteBulkDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-delete-bulk + */ +export interface GatewayMessageDeleteBulkDispatchData { + /** + * The ids of the messages + */ + ids: Snowflake[]; + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-add + */ +export declare type GatewayMessageReactionAddDispatch = ReactionData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-add + */ +export declare type GatewayMessageReactionAddDispatchData = GatewayMessageReactionAddDispatch['d']; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove + */ +export declare type GatewayMessageReactionRemoveDispatch = ReactionData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove + */ +export declare type GatewayMessageReactionRemoveDispatchData = GatewayMessageReactionRemoveDispatch['d']; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-all + */ +export declare type GatewayMessageReactionRemoveAllDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-all + */ +export declare type GatewayMessageReactionRemoveAllDispatchData = MessageReactionRemoveData; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-emoji + */ +export declare type GatewayMessageReactionRemoveEmojiDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-emoji + */ +export interface GatewayMessageReactionRemoveEmojiDispatchData extends MessageReactionRemoveData { + /** + * The emoji that was removed + */ + emoji: APIEmoji; +} +/** + * https://discord.com/developers/docs/topics/gateway#presence-update + */ +export declare type GatewayPresenceUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#presence-update + */ +export declare type GatewayPresenceUpdateDispatchData = RawGatewayPresenceUpdate; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-create + */ +export declare type GatewayStageInstanceCreateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-create + */ +export declare type GatewayStageInstanceCreateDispatchData = APIStageInstance; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-delete + */ +export declare type GatewayStageInstanceDeleteDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-delete + */ +export declare type GatewayStageInstanceDeleteDispatchData = APIStageInstance; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-update + */ +export declare type GatewayStageInstanceUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#stage-instance-update + */ +export declare type GatewayStageInstanceUpdateDispatchData = APIStageInstance; +/** + * https://discord.com/developers/docs/topics/gateway#thread-list-sync + */ +export declare type GatewayThreadListSyncDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#thread-list-sync + */ +export declare type GatewayThreadListSyncDispatchData = RawGatewayThreadListSync; +/** + * https://discord.com/developers/docs/topics/gateway#thread-members-update + */ +export declare type GatewayThreadMembersUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#thread-members-update + */ +export declare type GatewayThreadMembersUpdateDispatchData = RawGatewayThreadMembersUpdate; +/** + * https://discord.com/developers/docs/topics/gateway#thread-member-update + */ +export declare type GatewayThreadMemberUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#thread-member-update + */ +export declare type GatewayThreadMemberUpdateDispatchData = APIThreadMember & { + guild_id: Snowflake; +}; +/** + * https://discord.com/developers/docs/topics/gateway#thread-create + * https://discord.com/developers/docs/topics/gateway#thread-update + * https://discord.com/developers/docs/topics/gateway#thread-delete + */ +export declare type GatewayThreadModifyDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#thread-create + */ +export declare type GatewayThreadCreateDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#thread-create + */ +export interface GatewayThreadCreateDispatchData extends APIThreadChannel { + /** + * Whether the thread is newly created or not. + */ + newly_created?: true; +} +/** + * https://discord.com/developers/docs/topics/gateway#thread-update + */ +export declare type GatewayThreadUpdateDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#thread-update + */ +export declare type GatewayThreadUpdateDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#thread-delete + */ +export declare type GatewayThreadDeleteDispatch = GatewayChannelModifyDispatch; +/** + * https://discord.com/developers/docs/topics/gateway#thread-delete + */ +export declare type GatewayThreadDeleteDispatchData = GatewayChannelModifyDispatchData; +/** + * https://discord.com/developers/docs/topics/gateway#typing-start + */ +export declare type GatewayTypingStartDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#typing-start + */ +export interface GatewayTypingStartDispatchData { + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; + /** + * The id of the user + */ + user_id: Snowflake; + /** + * Unix time (in seconds) of when the user started typing + */ + timestamp: number; + /** + * The member who started typing if this happened in a guild + * + * See https://discord.com/developers/docs/resources/guild#guild-member-object + */ + member?: APIGuildMember; +} +/** + * https://discord.com/developers/docs/topics/gateway#user-update + */ +export declare type GatewayUserUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#user-update + */ +export declare type GatewayUserUpdateDispatchData = APIUser; +/** + * https://discord.com/developers/docs/topics/gateway#voice-state-update + */ +export declare type GatewayVoiceStateUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#voice-state-update + */ +export declare type GatewayVoiceStateUpdateDispatchData = GatewayVoiceState; +/** + * https://discord.com/developers/docs/topics/gateway#voice-server-update + */ +export declare type GatewayVoiceServerUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#voice-server-update + */ +export interface GatewayVoiceServerUpdateDispatchData { + /** + * Voice connection token + */ + token: string; + /** + * The guild this voice server update is for + */ + guild_id: Snowflake; + /** + * The voice server host + * + * A `null` endpoint means that the voice server allocated has gone away and is trying to be reallocated. + * You should attempt to disconnect from the currently connected voice server, and not attempt to reconnect + * until a new voice server is allocated + */ + endpoint: string | null; +} +/** + * https://discord.com/developers/docs/topics/gateway#webhooks-update + */ +export declare type GatewayWebhooksUpdateDispatch = DataPayload; +/** + * https://discord.com/developers/docs/topics/gateway#webhooks-update + */ +export interface GatewayWebhooksUpdateDispatchData { + /** + * The id of the guild + */ + guild_id: Snowflake; + /** + * The id of the channel + */ + channel_id: Snowflake; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + */ +export interface GatewayHeartbeat { + op: GatewayOpcodes.Heartbeat; + d: GatewayHeartbeatData; +} +/** + * https://discord.com/developers/docs/topics/gateway#heartbeating + */ +export declare type GatewayHeartbeatData = number | null; +/** + * https://discord.com/developers/docs/topics/gateway#identify + */ +export interface GatewayIdentify { + op: GatewayOpcodes.Identify; + d: GatewayIdentifyData; +} +/** + * https://discord.com/developers/docs/topics/gateway#identify + */ +export interface GatewayIdentifyData { + /** + * Authentication token + */ + token: string; + /** + * Connection properties + * + * See https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties + */ + properties: GatewayIdentifyProperties; + /** + * Whether this connection supports compression of packets + * + * @default false + */ + compress?: boolean; + /** + * Value between 50 and 250, total number of members where the gateway will stop sending + * offline members in the guild member list + * + * @default 50 + */ + large_threshold?: number; + /** + * Used for Guild Sharding + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + shard?: [shard_id: number, shard_count: number]; + /** + * Presence structure for initial presence information + * + * See https://discord.com/developers/docs/topics/gateway#update-presence + */ + presence?: GatewayPresenceUpdateData; + /** + * The Gateway Intents you wish to receive + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + */ + intents: number; +} +/** + * https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties + */ +export interface GatewayIdentifyProperties { + /** + * Your operating system + */ + os: string; + /** + * Your library name + */ + browser: string; + /** + * Your library name + */ + device: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#resume + */ +export interface GatewayResume { + op: GatewayOpcodes.Resume; + d: GatewayResumeData; +} +/** + * https://discord.com/developers/docs/topics/gateway#resume + */ +export interface GatewayResumeData { + /** + * Session token + */ + token: string; + /** + * Session id + */ + session_id: string; + /** + * Last sequence number received + */ + seq: number; +} +/** + * https://discord.com/developers/docs/topics/gateway#request-guild-members + */ +export interface GatewayRequestGuildMembers { + op: GatewayOpcodes.RequestGuildMembers; + d: GatewayRequestGuildMembersData; +} +/** + * https://discord.com/developers/docs/topics/gateway#request-guild-members + */ +export interface GatewayRequestGuildMembersData { + /** + * ID of the guild to get members for + */ + guild_id: Snowflake; + /** + * String that username starts with, or an empty string to return all members + */ + query?: string; + /** + * Maximum number of members to send matching the `query`; + * a limit of `0` can be used with an empty string `query` to return all members + */ + limit: number; + /** + * Used to specify if we want the presences of the matched members + */ + presences?: boolean; + /** + * Used to specify which users you wish to fetch + */ + user_ids?: Snowflake | Snowflake[]; + /** + * Nonce to identify the Guild Members Chunk response + * + * Nonce can only be up to 32 bytes. If you send an invalid nonce it will be ignored and the reply member_chunk(s) will not have a `nonce` set. + * + * See https://discord.com/developers/docs/topics/gateway#guild-members-chunk + */ + nonce?: string; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-voice-state + */ +export interface GatewayVoiceStateUpdate { + op: GatewayOpcodes.VoiceStateUpdate; + d: GatewayVoiceStateUpdateData; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-voice-state + */ +export interface GatewayVoiceStateUpdateData { + /** + * ID of the guild + */ + guild_id: Snowflake; + /** + * ID of the voice channel client wants to join (`null` if disconnecting) + */ + channel_id: Snowflake | null; + /** + * Is the client muted + */ + self_mute: boolean; + /** + * Is the client deafened + */ + self_deaf: boolean; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-status + */ +export interface GatewayUpdatePresence { + op: GatewayOpcodes.PresenceUpdate; + d: GatewayPresenceUpdateData; +} +/** + * https://discord.com/developers/docs/topics/gateway#update-presence-gateway-presence-update-structure + */ +export interface GatewayPresenceUpdateData { + /** + * Unix time (in milliseconds) of when the client went idle, or `null` if the client is not idle + */ + since: number | null; + /** + * The user's activities + * + * See https://discord.com/developers/docs/topics/gateway#activity-object + */ + activities: GatewayActivityUpdateData[]; + /** + * The user's new status + * + * See https://discord.com/developers/docs/topics/gateway#update-presence-status-types + */ + status: PresenceUpdateStatus; + /** + * Whether or not the client is afk + */ + afk: boolean; +} +/** + * https://discord.com/developers/docs/topics/gateway#activity-object-activity-structure + */ +export declare type GatewayActivityUpdateData = Pick; +interface BasePayload { + /** + * Opcode for the payload + */ + op: GatewayOpcodes; + /** + * Event data + */ + d?: unknown; + /** + * Sequence number, used for resuming sessions and heartbeats + */ + s: number; + /** + * The event name for this payload + */ + t?: string; +} +declare type NonDispatchPayload = Omit & { + t: null; + s: null; +}; +interface DataPayload extends BasePayload { + op: GatewayOpcodes.Dispatch; + t: Event; + d: D; +} +declare type ReactionData = DataPayload>; +interface MessageReactionRemoveData { + /** + * The id of the channel + */ + channel_id: Snowflake; + /** + * The id of the message + */ + message_id: Snowflake; + /** + * The id of the guild + */ + guild_id?: Snowflake; +} +//# sourceMappingURL=v9.d.ts.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.d.ts.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.d.ts.map new file mode 100644 index 0000000..990831d --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"v9.d.ts","sourceRoot":"","sources":["v9.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.js b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.js new file mode 100644 index 0000000..d4b53f5 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.js @@ -0,0 +1,242 @@ +"use strict"; +/** + * Types extracted from https://discord.com/developers/docs/topics/gateway + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GatewayDispatchEvents = exports.GatewayIntentBits = exports.GatewayCloseCodes = exports.GatewayOpcodes = exports.GatewayVersion = void 0; +__exportStar(require("./common"), exports); +exports.GatewayVersion = '9'; +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes + */ +var GatewayOpcodes; +(function (GatewayOpcodes) { + /** + * An event was dispatched + */ + GatewayOpcodes[GatewayOpcodes["Dispatch"] = 0] = "Dispatch"; + /** + * A bidirectional opcode to maintain an active gateway connection. + * Fired periodically by the client, or fired by the gateway to request an immediate heartbeat from the client. + */ + GatewayOpcodes[GatewayOpcodes["Heartbeat"] = 1] = "Heartbeat"; + /** + * Starts a new session during the initial handshake + */ + GatewayOpcodes[GatewayOpcodes["Identify"] = 2] = "Identify"; + /** + * Update the client's presence + */ + GatewayOpcodes[GatewayOpcodes["PresenceUpdate"] = 3] = "PresenceUpdate"; + /** + * Used to join/leave or move between voice channels + */ + GatewayOpcodes[GatewayOpcodes["VoiceStateUpdate"] = 4] = "VoiceStateUpdate"; + /** + * Resume a previous session that was disconnected + */ + GatewayOpcodes[GatewayOpcodes["Resume"] = 6] = "Resume"; + /** + * You should attempt to reconnect and resume immediately + */ + GatewayOpcodes[GatewayOpcodes["Reconnect"] = 7] = "Reconnect"; + /** + * Request information about offline guild members in a large guild + */ + GatewayOpcodes[GatewayOpcodes["RequestGuildMembers"] = 8] = "RequestGuildMembers"; + /** + * The session has been invalidated. You should reconnect and identify/resume accordingly + */ + GatewayOpcodes[GatewayOpcodes["InvalidSession"] = 9] = "InvalidSession"; + /** + * Sent immediately after connecting, contains the `heartbeat_interval` to use + */ + GatewayOpcodes[GatewayOpcodes["Hello"] = 10] = "Hello"; + /** + * Sent in response to receiving a heartbeat to acknowledge that it has been received + */ + GatewayOpcodes[GatewayOpcodes["HeartbeatAck"] = 11] = "HeartbeatAck"; +})(GatewayOpcodes = exports.GatewayOpcodes || (exports.GatewayOpcodes = {})); +/** + * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-close-event-codes + */ +var GatewayCloseCodes; +(function (GatewayCloseCodes) { + /** + * We're not sure what went wrong. Try reconnecting? + */ + GatewayCloseCodes[GatewayCloseCodes["UnknownError"] = 4000] = "UnknownError"; + /** + * You sent an invalid Gateway opcode or an invalid payload for an opcode. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#payloads-and-opcodes + */ + GatewayCloseCodes[GatewayCloseCodes["UnknownOpcode"] = 4001] = "UnknownOpcode"; + /** + * You sent an invalid payload to us. Don't do that! + * + * See https://discord.com/developers/docs/topics/gateway#sending-payloads + */ + GatewayCloseCodes[GatewayCloseCodes["DecodeError"] = 4002] = "DecodeError"; + /** + * You sent us a payload prior to identifying + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + GatewayCloseCodes[GatewayCloseCodes["NotAuthenticated"] = 4003] = "NotAuthenticated"; + /** + * The account token sent with your identify payload is incorrect + * + * See https://discord.com/developers/docs/topics/gateway#identify + */ + GatewayCloseCodes[GatewayCloseCodes["AuthenticationFailed"] = 4004] = "AuthenticationFailed"; + /** + * You sent more than one identify payload. Don't do that! + */ + GatewayCloseCodes[GatewayCloseCodes["AlreadyAuthenticated"] = 4005] = "AlreadyAuthenticated"; + /** + * The sequence sent when resuming the session was invalid. Reconnect and start a new session + * + * See https://discord.com/developers/docs/topics/gateway#resume + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidSeq"] = 4007] = "InvalidSeq"; + /** + * Woah nelly! You're sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this + */ + GatewayCloseCodes[GatewayCloseCodes["RateLimited"] = 4008] = "RateLimited"; + /** + * Your session timed out. Reconnect and start a new one + */ + GatewayCloseCodes[GatewayCloseCodes["SessionTimedOut"] = 4009] = "SessionTimedOut"; + /** + * You sent us an invalid shard when identifying + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidShard"] = 4010] = "InvalidShard"; + /** + * The session would have handled too many guilds - you are required to shard your connection in order to connect + * + * See https://discord.com/developers/docs/topics/gateway#sharding + */ + GatewayCloseCodes[GatewayCloseCodes["ShardingRequired"] = 4011] = "ShardingRequired"; + /** + * You sent an invalid version for the gateway + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidAPIVersion"] = 4012] = "InvalidAPIVersion"; + /** + * You sent an invalid intent for a Gateway Intent. You may have incorrectly calculated the bitwise value + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + */ + GatewayCloseCodes[GatewayCloseCodes["InvalidIntents"] = 4013] = "InvalidIntents"; + /** + * You sent a disallowed intent for a Gateway Intent. You may have tried to specify an intent that you have not + * enabled or are not whitelisted for + * + * See https://discord.com/developers/docs/topics/gateway#gateway-intents + * + * See https://discord.com/developers/docs/topics/gateway#privileged-intents + */ + GatewayCloseCodes[GatewayCloseCodes["DisallowedIntents"] = 4014] = "DisallowedIntents"; +})(GatewayCloseCodes = exports.GatewayCloseCodes || (exports.GatewayCloseCodes = {})); +/** + * https://discord.com/developers/docs/topics/gateway#list-of-intents + */ +var GatewayIntentBits; +(function (GatewayIntentBits) { + GatewayIntentBits[GatewayIntentBits["Guilds"] = 1] = "Guilds"; + GatewayIntentBits[GatewayIntentBits["GuildMembers"] = 2] = "GuildMembers"; + GatewayIntentBits[GatewayIntentBits["GuildBans"] = 4] = "GuildBans"; + GatewayIntentBits[GatewayIntentBits["GuildEmojisAndStickers"] = 8] = "GuildEmojisAndStickers"; + GatewayIntentBits[GatewayIntentBits["GuildIntegrations"] = 16] = "GuildIntegrations"; + GatewayIntentBits[GatewayIntentBits["GuildWebhooks"] = 32] = "GuildWebhooks"; + GatewayIntentBits[GatewayIntentBits["GuildInvites"] = 64] = "GuildInvites"; + GatewayIntentBits[GatewayIntentBits["GuildVoiceStates"] = 128] = "GuildVoiceStates"; + GatewayIntentBits[GatewayIntentBits["GuildPresences"] = 256] = "GuildPresences"; + GatewayIntentBits[GatewayIntentBits["GuildMessages"] = 512] = "GuildMessages"; + GatewayIntentBits[GatewayIntentBits["GuildMessageReactions"] = 1024] = "GuildMessageReactions"; + GatewayIntentBits[GatewayIntentBits["GuildMessageTyping"] = 2048] = "GuildMessageTyping"; + GatewayIntentBits[GatewayIntentBits["DirectMessages"] = 4096] = "DirectMessages"; + GatewayIntentBits[GatewayIntentBits["DirectMessageReactions"] = 8192] = "DirectMessageReactions"; + GatewayIntentBits[GatewayIntentBits["DirectMessageTyping"] = 16384] = "DirectMessageTyping"; + GatewayIntentBits[GatewayIntentBits["GuildScheduledEvents"] = 65536] = "GuildScheduledEvents"; +})(GatewayIntentBits = exports.GatewayIntentBits || (exports.GatewayIntentBits = {})); +/** + * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events + */ +var GatewayDispatchEvents; +(function (GatewayDispatchEvents) { + GatewayDispatchEvents["ApplicationCommandPermissionsUpdate"] = "APPLICATION_COMMAND_PERMISSIONS_UPDATE"; + GatewayDispatchEvents["ChannelCreate"] = "CHANNEL_CREATE"; + GatewayDispatchEvents["ChannelDelete"] = "CHANNEL_DELETE"; + GatewayDispatchEvents["ChannelPinsUpdate"] = "CHANNEL_PINS_UPDATE"; + GatewayDispatchEvents["ChannelUpdate"] = "CHANNEL_UPDATE"; + GatewayDispatchEvents["GuildBanAdd"] = "GUILD_BAN_ADD"; + GatewayDispatchEvents["GuildBanRemove"] = "GUILD_BAN_REMOVE"; + GatewayDispatchEvents["GuildCreate"] = "GUILD_CREATE"; + GatewayDispatchEvents["GuildDelete"] = "GUILD_DELETE"; + GatewayDispatchEvents["GuildEmojisUpdate"] = "GUILD_EMOJIS_UPDATE"; + GatewayDispatchEvents["GuildIntegrationsUpdate"] = "GUILD_INTEGRATIONS_UPDATE"; + GatewayDispatchEvents["GuildMemberAdd"] = "GUILD_MEMBER_ADD"; + GatewayDispatchEvents["GuildMemberRemove"] = "GUILD_MEMBER_REMOVE"; + GatewayDispatchEvents["GuildMembersChunk"] = "GUILD_MEMBERS_CHUNK"; + GatewayDispatchEvents["GuildMemberUpdate"] = "GUILD_MEMBER_UPDATE"; + GatewayDispatchEvents["GuildRoleCreate"] = "GUILD_ROLE_CREATE"; + GatewayDispatchEvents["GuildRoleDelete"] = "GUILD_ROLE_DELETE"; + GatewayDispatchEvents["GuildRoleUpdate"] = "GUILD_ROLE_UPDATE"; + GatewayDispatchEvents["GuildStickersUpdate"] = "GUILD_STICKERS_UPDATE"; + GatewayDispatchEvents["GuildUpdate"] = "GUILD_UPDATE"; + GatewayDispatchEvents["IntegrationCreate"] = "INTEGRATION_CREATE"; + GatewayDispatchEvents["IntegrationDelete"] = "INTEGRATION_DELETE"; + GatewayDispatchEvents["IntegrationUpdate"] = "INTEGRATION_UPDATE"; + GatewayDispatchEvents["InteractionCreate"] = "INTERACTION_CREATE"; + GatewayDispatchEvents["InviteCreate"] = "INVITE_CREATE"; + GatewayDispatchEvents["InviteDelete"] = "INVITE_DELETE"; + GatewayDispatchEvents["MessageCreate"] = "MESSAGE_CREATE"; + GatewayDispatchEvents["MessageDelete"] = "MESSAGE_DELETE"; + GatewayDispatchEvents["MessageDeleteBulk"] = "MESSAGE_DELETE_BULK"; + GatewayDispatchEvents["MessageReactionAdd"] = "MESSAGE_REACTION_ADD"; + GatewayDispatchEvents["MessageReactionRemove"] = "MESSAGE_REACTION_REMOVE"; + GatewayDispatchEvents["MessageReactionRemoveAll"] = "MESSAGE_REACTION_REMOVE_ALL"; + GatewayDispatchEvents["MessageReactionRemoveEmoji"] = "MESSAGE_REACTION_REMOVE_EMOJI"; + GatewayDispatchEvents["MessageUpdate"] = "MESSAGE_UPDATE"; + GatewayDispatchEvents["PresenceUpdate"] = "PRESENCE_UPDATE"; + GatewayDispatchEvents["StageInstanceCreate"] = "STAGE_INSTANCE_CREATE"; + GatewayDispatchEvents["StageInstanceDelete"] = "STAGE_INSTANCE_DELETE"; + GatewayDispatchEvents["StageInstanceUpdate"] = "STAGE_INSTANCE_UPDATE"; + GatewayDispatchEvents["Ready"] = "READY"; + GatewayDispatchEvents["Resumed"] = "RESUMED"; + GatewayDispatchEvents["ThreadCreate"] = "THREAD_CREATE"; + GatewayDispatchEvents["ThreadDelete"] = "THREAD_DELETE"; + GatewayDispatchEvents["ThreadListSync"] = "THREAD_LIST_SYNC"; + GatewayDispatchEvents["ThreadMembersUpdate"] = "THREAD_MEMBERS_UPDATE"; + GatewayDispatchEvents["ThreadMemberUpdate"] = "THREAD_MEMBER_UPDATE"; + GatewayDispatchEvents["ThreadUpdate"] = "THREAD_UPDATE"; + GatewayDispatchEvents["TypingStart"] = "TYPING_START"; + GatewayDispatchEvents["UserUpdate"] = "USER_UPDATE"; + GatewayDispatchEvents["VoiceServerUpdate"] = "VOICE_SERVER_UPDATE"; + GatewayDispatchEvents["VoiceStateUpdate"] = "VOICE_STATE_UPDATE"; + GatewayDispatchEvents["WebhooksUpdate"] = "WEBHOOKS_UPDATE"; + GatewayDispatchEvents["GuildScheduledEventCreate"] = "GUILD_SCHEDULED_EVENT_CREATE"; + GatewayDispatchEvents["GuildScheduledEventUpdate"] = "GUILD_SCHEDULED_EVENT_UPDATE"; + GatewayDispatchEvents["GuildScheduledEventDelete"] = "GUILD_SCHEDULED_EVENT_DELETE"; + GatewayDispatchEvents["GuildScheduledEventUserAdd"] = "GUILD_SCHEDULED_EVENT_USER_ADD"; + GatewayDispatchEvents["GuildScheduledEventUserRemove"] = "GUILD_SCHEDULED_EVENT_USER_REMOVE"; +})(GatewayDispatchEvents = exports.GatewayDispatchEvents || (exports.GatewayDispatchEvents = {})); +// #endregion Shared +//# sourceMappingURL=v9.js.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.js.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.js.map new file mode 100644 index 0000000..411535b --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"v9.js","sourceRoot":"","sources":["v9.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.mjs b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.mjs new file mode 100644 index 0000000..27b1baf --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/gateway/v9.mjs @@ -0,0 +1,8 @@ +import mod from "./v9.js"; + +export default mod; +export const GatewayCloseCodes = mod.GatewayCloseCodes; +export const GatewayDispatchEvents = mod.GatewayDispatchEvents; +export const GatewayIntentBits = mod.GatewayIntentBits; +export const GatewayOpcodes = mod.GatewayOpcodes; +export const GatewayVersion = mod.GatewayVersion; diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/globals.d.ts b/node_modules/@discordjs/builders/node_modules/discord-api-types/globals.d.ts new file mode 100644 index 0000000..5658aae --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/globals.d.ts @@ -0,0 +1,83 @@ +/** + * https://discord.com/developers/docs/reference#snowflakes + */ +export declare type Snowflake = string; +/** + * https://discord.com/developers/docs/topics/permissions + * @internal + */ +export declare type Permissions = string; +/** + * https://discord.com/developers/docs/reference#message-formatting-formats + */ +export declare const FormattingPatterns: { + /** + * Regular expression for matching a user mention, strictly without a nickname + * + * The `id` group property is present on the `exec` result of this expression + */ + readonly User: RegExp; + /** + * Regular expression for matching a user mention, strictly with a nickname + * + * The `id` group property is present on the `exec` result of this expression + * @deprecated Passing `!` in user mentions is no longer necessary / supported, and future message contents won't have it + */ + readonly UserWithNickname: RegExp; + /** + * Regular expression for matching a user mention, with or without a nickname + * + * The `id` group property is present on the `exec` result of this expression + * @deprecated Passing `!` in user mentions is no longer necessary / supported, and future message contents won't have it + */ + readonly UserWithOptionalNickname: RegExp; + /** + * Regular expression for matching a channel mention + * + * The `id` group property is present on the `exec` result of this expression + */ + readonly Channel: RegExp; + /** + * Regular expression for matching a role mention + * + * The `id` group property is present on the `exec` result of this expression + */ + readonly Role: RegExp; + /** + * Regular expression for matching a custom emoji, either static or animated + * + * The `animated`, `name` and `id` group properties are present on the `exec` result of this expression + */ + readonly Emoji: RegExp; + /** + * Regular expression for matching strictly an animated custom emoji + * + * The `animated`, `name` and `id` group properties are present on the `exec` result of this expression + */ + readonly AnimatedEmoji: RegExp; + /** + * Regular expression for matching strictly a static custom emoji + * + * The `name` and `id` group properties are present on the `exec` result of this expression + */ + readonly StaticEmoji: RegExp; + /** + * Regular expression for matching a timestamp, either default or custom styled + * + * The `timestamp` and `style` group properties are present on the `exec` result of this expression + */ + readonly Timestamp: RegExp; + /** + * Regular expression for matching strictly default styled timestamps + * + * The `timestamp` group property is present on the `exec` result of this expression + */ + readonly DefaultStyledTimestamp: RegExp; + /** + * Regular expression for matching strictly custom styled timestamps + * + * The `timestamp` and `style` group properties are present on the `exec` result of this expression + */ + readonly StyledTimestamp: RegExp; +}; +//# sourceMappingURL=globals.d.ts.map \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/globals.d.ts.map b/node_modules/@discordjs/builders/node_modules/discord-api-types/globals.d.ts.map new file mode 100644 index 0000000..3ace4f5 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/globals.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["globals.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,SAAS,GAAG,MAAM,CAAC;AAE/B;;;GAGG;AACH,oBAAY,WAAW,GAAG,MAAM,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAC9B;;;;OAIG;;IAEH;;;;;OAKG;;IAEH;;;;;OAKG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;CAEM,CAAC"} \ No newline at end of file diff --git a/node_modules/@discordjs/builders/node_modules/discord-api-types/globals.js b/node_modules/@discordjs/builders/node_modules/discord-api-types/globals.js new file mode 100644 index 0000000..2b53b68 --- /dev/null +++ b/node_modules/@discordjs/builders/node_modules/discord-api-types/globals.js @@ -0,0 +1,82 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FormattingPatterns = void 0; +/** + * https://discord.com/developers/docs/reference#message-formatting-formats + */ +exports.FormattingPatterns = { + /** + * Regular expression for matching a user mention, strictly without a nickname + * + * The `id` group property is present on the `exec` result of this expression + */ + User: /<@(?\d{17,20})>/, + /** + * Regular expression for matching a user mention, strictly with a nickname + * + * The `id` group property is present on the `exec` result of this expression + * @deprecated Passing `!` in user mentions is no longer necessary / supported, and future message contents won't have it + */ + UserWithNickname: /<@!(?\d{17,20})>/, + /** + * Regular expression for matching a user mention, with or without a nickname + * + * The `id` group property is present on the `exec` result of this expression + * @deprecated Passing `!` in user mentions is no longer necessary / supported, and future message contents won't have it + */ + UserWithOptionalNickname: /<@!?(?\d{17,20})>/, + /** + * Regular expression for matching a channel mention + * + * The `id` group property is present on the `exec` result of this expression + */ + Channel: /<#(?\d{17,20})>/, + /** + * Regular expression for matching a role mention + * + * The `id` group property is present on the `exec` result of this expression + */ + Role: /<@&(?\d{17,20})>/, + /** + * Regular expression for matching a custom emoji, either static or animated + * + * The `animated`, `name` and `id` group properties are present on the `exec` result of this expression + */ + Emoji: /<(?a)?:(?\w{2,32}):(?\d{17,20})>/, + /** + * Regular expression for matching strictly an animated custom emoji + * + * The `animated`, `name` and `id` group properties are present on the `exec` result of this expression + */ + AnimatedEmoji: /<(?a):(?\w{2,32}):(?\d{17,20})>/, + /** + * Regular expression for matching strictly a static custom emoji + * + * The `name` and `id` group properties are present on the `exec` result of this expression + */ + StaticEmoji: /<:(?\w{2,32}):(?\d{17,20})>/, + /** + * Regular expression for matching a timestamp, either default or custom styled + * + * The `timestamp` and `style` group properties are present on the `exec` result of this expression + */ + Timestamp: /-?\d{1,13})(:(?