From 9ead13cbd74e94703c028f9a4d703f298328438b Mon Sep 17 00:00:00 2001 From: GRZ4NA Date: Mon, 2 Aug 2021 22:03:35 +0200 Subject: [PATCH] argument check + conversion --- src/Command.ts | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/Command.ts b/src/Command.ts index fbfddd4..cf7f7ca 100644 --- a/src/Command.ts +++ b/src/Command.ts @@ -3,9 +3,9 @@ import { Permissions, PermissionResolvable, Message, - GuildMember, MessageEmbed, } from "discord.js"; +import { MissingArgumentError, PermissionsError } from "./Error.js"; import { Argument, ArgumentResolvable, ProcessArgument } from "./Arguments.js"; //TYPE DEFINITIONS @@ -36,17 +36,6 @@ interface PhraseOccurrenceData { } //CLASSES -export class PermissionsError { - private command: Command; - private user: GuildMember | null; - constructor(command: Command, user?: GuildMember | null) { - this.command = command; - this.user = user || null; - } - toString() { - return `User ${this.user?.user.tag} doesn't have enough permissions to run "${this.command.name}" command`; - } -} export class Command { name: string; arguments: Argument[]; @@ -268,7 +257,7 @@ export class CommandManager { const command = this.get(name, "ALL"); if (command) { const argumentsText = content.replace(name, ""); - const argumentsList = argumentsText + const argumentsList: ArgumentResolvable[] = argumentsText .split(this.argumentSeparator) .map((a) => { return a.replace(" ", ""); @@ -279,6 +268,18 @@ export class CommandManager { ) { argumentsList.splice(0, 1); } + if (command.arguments) { + command.arguments.map((a, i) => { + if (!argumentsList[i] && !a.optional) { + throw new MissingArgumentError(a); + } else { + argumentsList[i] = ProcessArgument( + argumentsList[i] as string, + a.type + ); + } + }); + } return { command: command, arguments: argumentsList,