From 3083f8d53a09e2e1fd9c932b009e9cc2c737bc0a Mon Sep 17 00:00:00 2001 From: Cynthia Foxwell Date: Mon, 29 May 2023 16:06:04 -0600 Subject: [PATCH] [Commands] Prevent patch from adding commands to all command types (#91) * [Commands] Prevent patch from adding commands to all command types * [Commands] Minor stylistic changes --------- Co-authored-by: Beef --- src/lib/commands.ts | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/lib/commands.ts b/src/lib/commands.ts index 1fdcbfd..4717d0b 100644 --- a/src/lib/commands.ts +++ b/src/lib/commands.ts @@ -1,30 +1,33 @@ -import { ApplicationCommand } from "@types"; +import { ApplicationCommand, ApplicationCommandType } from "@types"; import { commands as commandsModule } from "@metro/common"; import { after } from "@lib/patcher"; let commands: ApplicationCommand[] = []; export function patchCommands() { - const unpatch = after("getBuiltInCommands", commandsModule, (_, res) => res.concat(commands)); + const unpatch = after("getBuiltInCommands", commandsModule, ([type], res: ApplicationCommand[]) => { + if (type === ApplicationCommandType.CHAT) return res.concat(commands); + }); + return () => { commands = []; unpatch(); - } + }; } export function registerCommand(command: ApplicationCommand): () => void { - // Get built in commands - const builtInCommands = commandsModule.getBuiltInCommands(1, true, false); - builtInCommands.sort(function (a: ApplicationCommand, b: ApplicationCommand) { return parseInt(b.id!) - parseInt(a.id!) }); + // Get built in commands + const builtInCommands = commandsModule.getBuiltInCommands(ApplicationCommandType.CHAT, true, false); + builtInCommands.sort((a: ApplicationCommand, b: ApplicationCommand) => parseInt(b.id!) - parseInt(a.id!)); - const lastCommand = builtInCommands[builtInCommands.length - 1]; + const lastCommand = builtInCommands[builtInCommands.length - 1]; - // Override the new command's id to the last command id - 1 - command.id = (parseInt(lastCommand.id, 10) - 1).toString(); + // Override the new command's id to the last command id - 1 + command.id = (parseInt(lastCommand.id, 10) - 1).toString(); - // Add it to the commands array - commands.push(command); + // Add it to the commands array + commands.push(command); - // Return command id so it can be unregistered - return () => commands = commands.filter(({ id }) => id !== command.id); -} \ No newline at end of file + // Return command id so it can be unregistered + return () => (commands = commands.filter(({ id }) => id !== command.id)); +}