[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 <beefers@riseup.net>
This commit is contained in:
parent
028bb19080
commit
3083f8d53a
1 changed files with 17 additions and 14 deletions
|
@ -1,30 +1,33 @@
|
||||||
import { ApplicationCommand } from "@types";
|
import { ApplicationCommand, ApplicationCommandType } from "@types";
|
||||||
import { commands as commandsModule } from "@metro/common";
|
import { commands as commandsModule } from "@metro/common";
|
||||||
import { after } from "@lib/patcher";
|
import { after } from "@lib/patcher";
|
||||||
|
|
||||||
let commands: ApplicationCommand[] = [];
|
let commands: ApplicationCommand[] = [];
|
||||||
|
|
||||||
export function patchCommands() {
|
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 () => {
|
return () => {
|
||||||
commands = [];
|
commands = [];
|
||||||
unpatch();
|
unpatch();
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function registerCommand(command: ApplicationCommand): () => void {
|
export function registerCommand(command: ApplicationCommand): () => void {
|
||||||
// Get built in commands
|
// Get built in commands
|
||||||
const builtInCommands = commandsModule.getBuiltInCommands(1, true, false);
|
const builtInCommands = commandsModule.getBuiltInCommands(ApplicationCommandType.CHAT, true, false);
|
||||||
builtInCommands.sort(function (a: ApplicationCommand, b: ApplicationCommand) { return parseInt(b.id!) - parseInt(a.id!) });
|
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
|
// Override the new command's id to the last command id - 1
|
||||||
command.id = (parseInt(lastCommand.id, 10) - 1).toString();
|
command.id = (parseInt(lastCommand.id, 10) - 1).toString();
|
||||||
|
|
||||||
// Add it to the commands array
|
// Add it to the commands array
|
||||||
commands.push(command);
|
commands.push(command);
|
||||||
|
|
||||||
// Return command id so it can be unregistered
|
// Return command id so it can be unregistered
|
||||||
return () => commands = commands.filter(({ id }) => id !== command.id);
|
return () => (commands = commands.filter(({ id }) => id !== command.id));
|
||||||
}
|
}
|
Loading…
Reference in a new issue