import { SlashCommandArgument, SlashCommandNamedArgument } from './SlashCommandArgument.js'; export class SlashCommand { /**@type {string}*/ name; /**@type {Function}*/ callback; /**@type {string}*/ helpString; /**@type {boolean}*/ interruptsGeneration = true; /**@type {boolean}*/ purgeFromMessage = true; /**@type {string[]}*/ aliases = []; /**@type {string}*/ returns; /**@type {SlashCommandNamedArgument[]}*/ namedArgumentList = []; /**@type {SlashCommandArgument[]}*/ unnamedArgumentList = []; get helpStringFormatted() { let aliases = ''; if (this.aliases?.length > 0) { aliases = ' (alias: '; aliases += this.aliases .map(it=>`/${it}`) .join(', ') ; aliases += ')'; } return `/${this.name} ${this.helpString}${aliases}`; } }