A generic command parser meant for discord bots, though works for just about anything else
Go to file
Navy.gif 54888270f3 Refactor and new options
Refactored flag parsing into a separate function
Added option for global flags that can be passed with any command
Upgraded dependencies & yarn
2024-03-28 16:44:13 +02:00
.yarn/releases Refactor and new options 2024-03-28 16:44:13 +02:00
scripts Update to support both cjs and esm 2023-04-13 20:18:40 +03:00
src Refactor and new options 2024-03-28 16:44:13 +02:00
tests Refactor and new options 2024-03-28 16:44:13 +02:00
.drone.yml more tests & enforce structure 2023-02-12 18:08:52 +02:00
.eslintignore meta packages 2022-07-29 14:17:01 +03:00
.eslintrc.json Linter pass 2023-12-14 17:33:54 +02:00
.gitignore Refactor and new options 2024-03-28 16:44:13 +02:00
.yarnrc.yml Refactor and new options 2024-03-28 16:44:13 +02:00
babel.config.cjs default help option to commands and subcommands 2023-05-05 17:32:29 +03:00
index.ts Minor tweaks to the ParserError class 2023-08-16 13:12:53 +03:00
jest.config.cjs default help option to commands and subcommands 2023-05-05 17:32:29 +03:00
package.json Refactor and new options 2024-03-28 16:44:13 +02:00
README.md update readme 2023-05-12 19:37:54 +03:00
tsconfig.cjs.json Refactor and new options 2024-03-28 16:44:13 +02:00
tsconfig.json Refactor and new options 2024-03-28 16:44:13 +02:00
yarn.lock Refactor and new options 2024-03-28 16:44:13 +02:00

A command parser initially made for quickly making discord bots, but works as a standalone parser too.

Your commands are expected to inherit from the Command class

Example usage


const commands: Command[] = [
    new Command({
        name: 'ping',
        options: [
            {
                name: 'respond',            //
                type: OptionType.BOOLEAN,   // Boolean type expects the parser to have some kind of string -> boolean resolver, see the resolver interface for which methods are expected
                required: true,             // Will throw error if not provided
                defaultValue: true,         // The value that will be given back if no value is given, or if option is required but not provided
                flag: true                  // The parser will look for the option in the "--respond value" form
            }
        ]
    })
]; // Command definitions

const parser = new Parser({commands, prefix: ''}); // Empty prefix
const parsed = await parser.parseMessage('ping --respond');

/**
 * Parsed will be an object cotaining properties args, command, subcommand, and subcommandgroup
 * the args property is an object of the given options mapped by their names, e.g.
 * {
 *   respond: {
 *     ... properties,
 *     value: true
 *   }
 * }
 * 
*/

Some of the option types have built-in parsers (e.g. numbers, strings), but others will require the resolver implementation, and in some cases CommandOption extensions.