this.aliases=options.aliases||[];//Aliases will work for both verbal and flag types. Careful for multiple aliases starting with different letters: more flags, more confusing.
this.type=(options.type&&Constants.Types.includes(options.type)?options.type:'BOOLEAN');//What type the argument is ['STRING', 'INTEGER', 'FLOAT', 'BOOLEAN'].
this.types=options.types||['FLAG','VERBAL'];//['FLAG'], ['VERBAL'], or ['FLAG', 'VERBAL']. Declares if argument can be used verbally-only, flag-only, or both.
this.prompts=options.prompts||{
MISSING:`Argument **${this.name}** is missing and is required.`,
INVALID:`Argument **${this.name}** must be a \`${this.type}\` value.`
}//Default prompts to be replied to the user if an argument is missing or invalid.
//NOTE: Instead of telling the person the argument is missing and is required, ask them and continue the command execution afterwards. More work to do.
this.required=options.type==='BOOLEAN'?false:Boolean(options.required);//If the argument must be required for the command to work. Booleans