From 4e818fb96572a81cde6b3f088c073a9c4eec5158 Mon Sep 17 00:00:00 2001 From: Ahmad Khan Date: Thu, 21 Sep 2023 20:15:38 -0400 Subject: [PATCH] Removed Custom Builder. Cleaned-Up package.json. Make the bot partially work. Command register was added but, has to be fixed. --- .gitignore | 2 +- build/api.js | 136 -------------- build/compile.js | 12 -- build/start.js | 18 -- build/target.js | 7 - package.json | 9 +- source/commands/ping.ts | 15 ++ source/commands/server.ts | 13 ++ source/commands/user.ts | 13 ++ .../config.example.json | 0 source/discord-bot.ts | 63 ++++++- source/util/deployCommand.ts | 44 +++++ tsconfig.json | 10 +- yarn.lock | 170 +----------------- 14 files changed, 152 insertions(+), 360 deletions(-) delete mode 100644 build/api.js delete mode 100644 build/compile.js delete mode 100644 build/start.js delete mode 100644 build/target.js create mode 100644 source/commands/ping.ts create mode 100644 source/commands/server.ts create mode 100644 source/commands/user.ts rename config.example.json => source/config.example.json (100%) create mode 100644 source/util/deployCommand.ts diff --git a/.gitignore b/.gitignore index b7c9f13..5466eab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ target/ node_modules/ -config.json \ No newline at end of file +source/config.json \ No newline at end of file diff --git a/build/api.js b/build/api.js deleted file mode 100644 index afa6360..0000000 --- a/build/api.js +++ /dev/null @@ -1,136 +0,0 @@ -import * as esbuild from "esbuild"; -import * as file_system from "fs"; -import * as path from "path"; -import * as child_process from "child_process"; -import * as events from "events"; -import * as url from "url"; - -const RunTargetError = { - TargetNotCompiled: "TargetNotCompiled", - TargetProgramError: "TargetProgramError", - TargetDirectoryMissing: "TargetDirectoryMissing" -} - -const TargetInitializationError = { - TargetDirectoryAlreadyExists: "TargetDirectoryAlreadyExists" -} - -const TargetProgramError = { - TargetNotRunning: "TargetNotRunning", - InvalidTargetPath: "InvalidTargetPath" -} - -const ProjectPackageError = { - PackageMissing: "PackageMissing", - InvalidJsonContents: "InvalidJsonContents" -} - -const CompileToTargetError = { - MissingPackageMainField: "MissingPackageMainField" -} - -export const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); -export const target_directory_path = path.join(__dirname, "../target/"); -export const target_file_name = "_.cjs"; -export const target_path = path.join(target_directory_path, target_file_name); -export const package_path = path.join(__dirname, "../package.json"); - -class TargetProgram extends events.EventEmitter { - #child_process = null; - #terminated = false; - #error = 0; - - constructor(target_script_source) { - super(); - - if (!file_system.existsSync(target_script_source)) { - throw new Error(TargetProgramError.InvalidTargetPath); - } - - this.#child_process = child_process.spawn( - `node${process.platform == "win32" ? ".exe" : ""}`, - [ target_script_source ], - { stdio: "inherit" } - ); - - this.#child_process.on("exit", (code) => { - this.#terminated = true; - this.emit("terminate"); - - if (code != 0) { - this.#error = code; - this.emit("error", code); - } - }); - } - - halt() { - if (this.#terminated) { - throw new Error(TargetprogramError.TargetNotRunning); - } - - this.#child_process.kill('SIGINT'); - } - - get error() { - return this.#error; - } -} - -export function initialize_target_directory() { - if (!file_system.existsSync(target_directory_path)) { - throw new Error(TargetInitializationError.TargetDirectoryAlreadyExists); - } - - file_system.mkdirSync(target_directory_path, { recursive: true }); -} - -export function run_target() { - if (!file_system.existsSync(target_directory_path)) { - throw new Error(RunTargetError.TargetDirectoryMissing); - } - - if (!file_system.existsSync(target_path)) { - throw new Error(RunTargetError.TargetNotCompiled); - } - - return new TargetProgram(target_path); -} - -export function get_project_package() { - if (!file_system.existsSync(package_path)) { - throw new Error(ProjectPackageError.PackageMissing); - } - - const contents = file_system.readFileSync( - package_path, - - { - encoding: "utf8", - flag: "r" - } - ); - - try { - return JSON.parse(contents); - } catch (_) { - throw new Error(ProjectPackageError.InvalidJsonContents); - } -} - -export function compile_to_target() { - const package_json = get_project_package(); - - if (!package_json.main) { - throw new Error(CompileToTargetError.MissingPackageMainField); - } - - esbuild.buildSync({ - bundle: true, - entryPoints: [ package_json.main ], - outfile: target_path, - platform: "node", - format: "cjs", - external: [ "deasync" ] - }); -} \ No newline at end of file diff --git a/build/compile.js b/build/compile.js deleted file mode 100644 index 09ad29b..0000000 --- a/build/compile.js +++ /dev/null @@ -1,12 +0,0 @@ -import * as api from "./api.js"; - -console.log("Compilation started"); - -try { - api.compile_to_target(); -} catch (error) { - console.error(`Failed to compile, Error: ${error}`); - process.exit(1); -} - -console.log("Compiled successfully"); \ No newline at end of file diff --git a/build/start.js b/build/start.js deleted file mode 100644 index 91db465..0000000 --- a/build/start.js +++ /dev/null @@ -1,18 +0,0 @@ -import * as api from "./api.js"; - -console.log("Compilation started"); - -try { - api.compile_to_target(); -} catch (error) { - console.error(`Failed to compile, Error: ${error}`); - process.exit(1); -} - -console.log("Compiled successfully"); - -try { - const target = api.run_target(); -} catch (fault) { - console.error(`Failed to run target, Error: ${fault}`); -} \ No newline at end of file diff --git a/build/target.js b/build/target.js deleted file mode 100644 index 2efddc5..0000000 --- a/build/target.js +++ /dev/null @@ -1,7 +0,0 @@ -import * as api from "./api.js"; - -try { - const target = api.run_target(); -} catch (fault) { - console.error(`Failed to run target, Error: ${fault}`); -} \ No newline at end of file diff --git a/package.json b/package.json index b3a09b9..719df6d 100644 --- a/package.json +++ b/package.json @@ -6,17 +6,12 @@ "license": "ISC", "type": "module", "scripts": { - "compile": "node ./build/compile.js", - "target": "node ./build/target.js", + "compile": "npx tsc", + "target": "node ./target/discord-bot.js", "start": "yarn run compile && yarn run target" }, "dependencies": { - "@discordjs/builders": "^1.6.5", - "@discordjs/rest": "^2.0.1", - "@types/deasync": "^0.1.2", - "deasync": "^0.1.28", "discord.js": "^14.13.0", - "esbuild": "^0.19.3", "mongoose": "^7.5.2" }, "devDependencies": { diff --git a/source/commands/ping.ts b/source/commands/ping.ts new file mode 100644 index 0000000..380539e --- /dev/null +++ b/source/commands/ping.ts @@ -0,0 +1,15 @@ +import { SlashCommandBuilder } from 'discord.js'; + +interface Command { + data: SlashCommandBuilder; + execute: (interaction: any) => Promise; +} + +export const command: Command = { + data: new SlashCommandBuilder().setName('ping').setDescription('Replies with Pong!'), + execute: async (interaction) => { + await interaction.reply('Pong!'); + }, +}; + +export default command; \ No newline at end of file diff --git a/source/commands/server.ts b/source/commands/server.ts new file mode 100644 index 0000000..f650196 --- /dev/null +++ b/source/commands/server.ts @@ -0,0 +1,13 @@ +import { SlashCommandBuilder } from 'discord.js'; + +interface Command { + data: SlashCommandBuilder; + execute: (interaction: any) => Promise; +} + +export const command: Command = { + data: new SlashCommandBuilder().setName('server').setDescription('Provides information about the server.'), + execute: async (interaction) => { + await interaction.reply(`This server is ${interaction.guild.name} and has ${interaction.guild.memberCount} members.`); + }, +}; diff --git a/source/commands/user.ts b/source/commands/user.ts new file mode 100644 index 0000000..4fa40d0 --- /dev/null +++ b/source/commands/user.ts @@ -0,0 +1,13 @@ +import { SlashCommandBuilder } from 'discord.js'; + +interface Command { + data: SlashCommandBuilder; + execute: (interaction: any) => Promise; +} + +export const command: Command = { + data: new SlashCommandBuilder().setName('user').setDescription('Provides information about the user.'), + execute: async (interaction) => { + await interaction.reply(`This command was run by ${interaction.user.username}, who joined on ${interaction.member.joinedAt}.`); + }, +}; diff --git a/config.example.json b/source/config.example.json similarity index 100% rename from config.example.json rename to source/config.example.json diff --git a/source/discord-bot.ts b/source/discord-bot.ts index a8c59f6..4f1f4de 100644 --- a/source/discord-bot.ts +++ b/source/discord-bot.ts @@ -1,17 +1,70 @@ // Require the necessary discord.js classes -import { Client, Events, GatewayIntentBits } from 'discord.js'; -import config from '../config.json' assert { type: 'json' }; +import fs from'node:fs'; +import path from 'node:path'; +import { Client, Collection, Events, GatewayIntentBits } from'discord.js'; +import config from './config.json' assert { type: 'json' }; +import { deployCommands } from './util/deployCommand.js'; -const { token } = config; +const { token, application_client_id, guild_id } = config; // Create a new client instance -const client = new Client({ intents: [GatewayIntentBits.Guilds] }); +const client: any = new Client({ intents: [GatewayIntentBits.Guilds] }); +client.commands = new Collection(); + +try { + const __dirname = path.resolve(); + + const commandsPath = path.join(__dirname, '/target/commands/'); + const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); + + for (const file of commandFiles) { + const filePath = path.join('file://', commandsPath, file); + const commandModule = await import(filePath); + const command = commandModule.default; + + if (command instanceof Object && 'data' in command && 'execute' in command) { + client.commands.set(command.data.name, command); + } else { + console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`); + } + } +} catch (error: any) { + console.log(`Error while getting commands up: ${error}`) +} + +try { + await deployCommands({token, guild_id, application_client_id}); +} catch (error: any) { + console.log(`Error while registering commands: ${error}`) +} // When the client is ready, run this code (only once) // We use 'c' for the event parameter to keep it separate from the already defined 'client' -client.once(Events.ClientReady, c => { +client.once(Events.ClientReady, (c: any) => { console.log(`Ready! Logged in as ${c.user.tag}`); }); +client.on(Events.InteractionCreate, async (interaction: any) => { + if (!interaction.isChatInputCommand()) return; + + const command = interaction.client.commands.get(interaction.commandName); + + if (!command) { + console.error(`No command matching ${interaction.commandName} was found.`); + return; + } + + try { + await command.execute(interaction); + } catch (error) { + console.error(error); + if (interaction.replied || interaction.deferred) { + await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true }); + } else { + await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); + } + } +}); + // Log in to Discord with your client's token client.login(token); \ No newline at end of file diff --git a/source/util/deployCommand.ts b/source/util/deployCommand.ts new file mode 100644 index 0000000..3514cd6 --- /dev/null +++ b/source/util/deployCommand.ts @@ -0,0 +1,44 @@ +import { REST, Routes } from 'discord.js'; +import fs from 'node:fs'; +import path from 'node:path'; + +export async function deployCommands({token, guildId, clientId}: any) { + const commands = []; + + const __dirname = path.resolve(); + + const commandsPath = path.join(__dirname, '/target/commands/'); + const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); + + // Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment + for (const file of commandFiles) { + const filePath = path.join('file://', commandsPath, file); + const command = await import(filePath); + if (command instanceof Object && 'data' in command && 'execute' in command) { + commands.push(command.data.toJSON()); + } else { + console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`); + } + } + + // Construct and prepare an instance of the REST module + const rest = new REST().setToken(token); + + // and deploy your commands! + (async () => { + try { + console.log(`Started refreshing ${commands.length} application (/) commands.`); + + // The put method is used to fully refresh all commands in the guild with the current set + const data: any = await rest.put( + Routes.applicationGuildCommands(clientId, guildId), + { body: commands }, + ); + + console.log(`Successfully reloaded ${data.length} application (/) commands.`); + } catch (error) { + // And of course, make sure you catch and log any errors! + console.error(error); + } + })(); +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 54a61c8..b820ded 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,9 +25,9 @@ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ /* Modules */ - "module": "esnext", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + "module": "esnext", /* Specify what module code is generated. */ + "rootDir": "./source", /* Specify the root folder within your source files. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ @@ -39,7 +39,7 @@ // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - "resolveJsonModule": true, /* Enable importing .json files. */ + "resolveJsonModule": true, /* Enable importing .json files. */ // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ @@ -55,7 +55,7 @@ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./dist", /* Specify an output folder for all emitted files. */ + "outDir": "./target", /* Specify an output folder for all emitted files. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ diff --git a/yarn.lock b/yarn.lock index 13a8944..9d28e32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -69,116 +69,6 @@ tslib "^2.6.1" ws "^8.13.0" -"@esbuild/android-arm64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.3.tgz#91a3b1b4a68c01ffdd5d8ffffb0a83178a366ae0" - integrity sha512-w+Akc0vv5leog550kjJV9Ru+MXMR2VuMrui3C61mnysim0gkFCPOUTAfzTP0qX+HpN9Syu3YA3p1hf3EPqObRw== - -"@esbuild/android-arm@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.3.tgz#08bd09f2ebc312422f4e94ae954821f9cf37b39e" - integrity sha512-Lemgw4io4VZl9GHJmjiBGzQ7ONXRfRPHcUEerndjwiSkbxzrpq0Uggku5MxxrXdwJ+pTj1qyw4jwTu7hkPsgIA== - -"@esbuild/android-x64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.3.tgz#b1dffec99ed5505fc57561e8758b449dba4924fe" - integrity sha512-FKQJKkK5MXcBHoNZMDNUAg1+WcZlV/cuXrWCoGF/TvdRiYS4znA0m5Il5idUwfxrE20bG/vU1Cr5e1AD6IEIjQ== - -"@esbuild/darwin-arm64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.3.tgz#2e0db5ad26313c7f420f2cd76d9d263fc49cb549" - integrity sha512-kw7e3FXU+VsJSSSl2nMKvACYlwtvZB8RUIeVShIEY6PVnuZ3c9+L9lWB2nWeeKWNNYDdtL19foCQ0ZyUL7nqGw== - -"@esbuild/darwin-x64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.3.tgz#ebe99f35049180023bb37999bddbe306b076a484" - integrity sha512-tPfZiwF9rO0jW6Jh9ipi58N5ZLoSjdxXeSrAYypy4psA2Yl1dAMhM71KxVfmjZhJmxRjSnb29YlRXXhh3GqzYw== - -"@esbuild/freebsd-arm64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.3.tgz#cf8b58ba5173440ea6124a3d0278bfe4ce181c20" - integrity sha512-ERDyjOgYeKe0Vrlr1iLrqTByB026YLPzTytDTz1DRCYM+JI92Dw2dbpRHYmdqn6VBnQ9Bor6J8ZlNwdZdxjlSg== - -"@esbuild/freebsd-x64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.3.tgz#3f283099810ef1b8468cd1a9400c042e3f12e2a7" - integrity sha512-nXesBZ2Ad1qL+Rm3crN7NmEVJ5uvfLFPLJev3x1j3feCQXfAhoYrojC681RhpdOph8NsvKBBwpYZHR7W0ifTTA== - -"@esbuild/linux-arm64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.3.tgz#a8b3aa69653ac504a51aa73739fb06de3a04d1ff" - integrity sha512-qXvYKmXj8GcJgWq3aGvxL/JG1ZM3UR272SdPU4QSTzD0eymrM7leiZH77pvY3UetCy0k1xuXZ+VPvoJNdtrsWQ== - -"@esbuild/linux-arm@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.3.tgz#ff6a2f68d4fc3ab46f614bca667a1a81ed6eea26" - integrity sha512-zr48Cg/8zkzZCzDHNxXO/89bf9e+r4HtzNUPoz4GmgAkF1gFAFmfgOdCbR8zMbzFDGb1FqBBhdXUpcTQRYS1cQ== - -"@esbuild/linux-ia32@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.3.tgz#5813baf70e406304e8931b200e39d0293b488073" - integrity sha512-7XlCKCA0nWcbvYpusARWkFjRQNWNGlt45S+Q18UeS///K6Aw8bB2FKYe9mhVWy/XLShvCweOLZPrnMswIaDXQA== - -"@esbuild/linux-loong64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.3.tgz#21110f29b5e31dc865c7253fde8a2003f7e8b6fd" - integrity sha512-qGTgjweER5xqweiWtUIDl9OKz338EQqCwbS9c2Bh5jgEH19xQ1yhgGPNesugmDFq+UUSDtWgZ264st26b3de8A== - -"@esbuild/linux-mips64el@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.3.tgz#4530fc416651eadeb1acc27003c00eac769eb8fd" - integrity sha512-gy1bFskwEyxVMFRNYSvBauDIWNggD6pyxUksc0MV9UOBD138dKTzr8XnM2R4mBsHwVzeuIH8X5JhmNs2Pzrx+A== - -"@esbuild/linux-ppc64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.3.tgz#facf910b0d397e391b37b01a1b4f6e363b04e56b" - integrity sha512-UrYLFu62x1MmmIe85rpR3qou92wB9lEXluwMB/STDzPF9k8mi/9UvNsG07Tt9AqwPQXluMQ6bZbTzYt01+Ue5g== - -"@esbuild/linux-riscv64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.3.tgz#4a67abe97a495430d5867340982f5424a64f2aac" - integrity sha512-9E73TfyMCbE+1AwFOg3glnzZ5fBAFK4aawssvuMgCRqCYzE0ylVxxzjEfut8xjmKkR320BEoMui4o/t9KA96gA== - -"@esbuild/linux-s390x@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.3.tgz#c5fb47474b9f816d81876c119dbccadf671cc5f6" - integrity sha512-LlmsbuBdm1/D66TJ3HW6URY8wO6IlYHf+ChOUz8SUAjVTuaisfuwCOAgcxo3Zsu3BZGxmI7yt//yGOxV+lHcEA== - -"@esbuild/linux-x64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.3.tgz#f22d659969ab78dc422f1df8d9a79bc1e7b12ee3" - integrity sha512-ogV0+GwEmvwg/8ZbsyfkYGaLACBQWDvO0Kkh8LKBGKj9Ru8VM39zssrnu9Sxn1wbapA2qNS6BiLdwJZGouyCwQ== - -"@esbuild/netbsd-x64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.3.tgz#e9b046934996991f46b8c1cadac815aa45f84fd4" - integrity sha512-o1jLNe4uzQv2DKXMlmEzf66Wd8MoIhLNO2nlQBHLtWyh2MitDG7sMpfCO3NTcoTMuqHjfufgUQDFRI5C+xsXQw== - -"@esbuild/openbsd-x64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.3.tgz#b287ef4841fc1067bbbd9a60549e8f9cf1b7ee3a" - integrity sha512-AZJCnr5CZgZOdhouLcfRdnk9Zv6HbaBxjcyhq0StNcvAdVZJSKIdOiPB9az2zc06ywl0ePYJz60CjdKsQacp5Q== - -"@esbuild/sunos-x64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.3.tgz#b2b8ba7d27907c7245f6e57dc62f3b88693f84b0" - integrity sha512-Acsujgeqg9InR4glTRvLKGZ+1HMtDm94ehTIHKhJjFpgVzZG9/pIcWW/HA/DoMfEyXmANLDuDZ2sNrWcjq1lxw== - -"@esbuild/win32-arm64@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.3.tgz#1974c8c180c9add4962235662c569fcc4c8f43dd" - integrity sha512-FSrAfjVVy7TifFgYgliiJOyYynhQmqgPj15pzLyJk8BUsnlWNwP/IAy6GAiB1LqtoivowRgidZsfpoYLZH586A== - -"@esbuild/win32-ia32@0.19.3": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.3.tgz#b02cc2dd8b6aed042069680f01f45fdfd3de5bc4" - integrity sha512-xTScXYi12xLOWZ/sc5RBmMN99BcXp/eEf7scUC0oeiRoiT5Vvo9AycuqCp+xdpDyAU+LkrCqEpUS9fCSZF8J3Q== - -"@esbuild/win32-x64@0.19.3": - version "0.19.3" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.3.tgz" - integrity sha512-FbUN+0ZRXsypPyWE2IwIkVjDkDnJoMJARWOcFZn4KPPli+QnKqF0z1anvfaYe3ev5HFCpRDLLBDHyOALLppWHw== - "@jridgewell/resolve-uri@^3.0.3": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -242,11 +132,6 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== -"@types/deasync@^0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@types/deasync/-/deasync-0.1.2.tgz" - integrity sha512-sCBFlGCEmZMPS06wdnQELcYzyUYio2K1Hp6g0fjJSKP1jkGKQpIdjRNUQAvdSCCJCWxIMCkX2CL7pi4BCm8Ydg== - "@types/node@*", "@types/node@^20.6.3": version "20.6.3" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.3.tgz#5b763b321cd3b80f6b8dde7a37e1a77ff9358dd9" @@ -292,13 +177,6 @@ arg@^4.1.0: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bson@^5.4.0: version "5.5.0" resolved "https://registry.npmjs.org/bson/-/bson-5.5.0.tgz" @@ -316,14 +194,6 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -deasync@^0.1.28: - version "0.1.28" - resolved "https://registry.npmjs.org/deasync/-/deasync-0.1.28.tgz" - integrity sha512-QqLF6inIDwiATrfROIyQtwOQxjZuek13WRYZ7donU5wJPLoP67MnYxA6QtqdvdBy2mMqv5m3UefBVdJjvevOYg== - dependencies: - bindings "^1.5.0" - node-addon-api "^1.7.1" - debug@4.x: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" @@ -343,7 +213,7 @@ discord-api-types@0.37.50: discord.js@^14.13.0: version "14.13.0" - resolved "https://registry.npmjs.org/discord.js/-/discord.js-14.13.0.tgz" + resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.13.0.tgz#e7a00bdba70adb9e266a06884ca1acaf9a0b5c20" integrity sha512-Kufdvg7fpyTEwANGy9x7i4od4yu5c6gVddGi5CKm4Y5a6sF0VBODObI3o0Bh7TGCj0LfNT8Qp8z04wnLFzgnbA== dependencies: "@discordjs/builders" "^1.6.5" @@ -361,44 +231,11 @@ discord.js@^14.13.0: undici "5.22.1" ws "^8.13.0" -esbuild@^0.19.3: - version "0.19.3" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.3.tgz" - integrity sha512-UlJ1qUUA2jL2nNib1JTSkifQTcYTroFqRjwCFW4QYEKEsixXD5Tik9xML7zh2gTxkYTBKGHNH9y7txMwVyPbjw== - optionalDependencies: - "@esbuild/android-arm" "0.19.3" - "@esbuild/android-arm64" "0.19.3" - "@esbuild/android-x64" "0.19.3" - "@esbuild/darwin-arm64" "0.19.3" - "@esbuild/darwin-x64" "0.19.3" - "@esbuild/freebsd-arm64" "0.19.3" - "@esbuild/freebsd-x64" "0.19.3" - "@esbuild/linux-arm" "0.19.3" - "@esbuild/linux-arm64" "0.19.3" - "@esbuild/linux-ia32" "0.19.3" - "@esbuild/linux-loong64" "0.19.3" - "@esbuild/linux-mips64el" "0.19.3" - "@esbuild/linux-ppc64" "0.19.3" - "@esbuild/linux-riscv64" "0.19.3" - "@esbuild/linux-s390x" "0.19.3" - "@esbuild/linux-x64" "0.19.3" - "@esbuild/netbsd-x64" "0.19.3" - "@esbuild/openbsd-x64" "0.19.3" - "@esbuild/sunos-x64" "0.19.3" - "@esbuild/win32-arm64" "0.19.3" - "@esbuild/win32-ia32" "0.19.3" - "@esbuild/win32-x64" "0.19.3" - fast-deep-equal@^3.1.3: 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== -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - ip@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" @@ -488,11 +325,6 @@ ms@2.1.3: resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -node-addon-api@^1.7.1: - version "1.7.2" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz" - integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== - punycode@^2.1.1: version "2.3.0" resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"