A generic command parser meant for discord bots, though works for just about anything else
Go to file
2023-08-15 19:16:03 +03:00
scripts Update to support both cjs and esm 2023-04-13 20:18:40 +03:00
src more typings 2023-08-15 19:15:19 +03:00
tests Refactor parser to allow parsing of just arguments 2023-05-12 17:24:59 +03: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 Update to support both cjs and esm 2023-04-13 20:18:40 +03:00
.gitignore test configs 2023-02-12 17:20:05 +02:00
babel.config.cjs default help option to commands and subcommands 2023-05-05 17:32:29 +03:00
index.ts more typings 2023-08-15 19:15:19 +03:00
jest.config.cjs default help option to commands and subcommands 2023-05-05 17:32:29 +03:00
package.json v1.5.6 2023-08-15 19:16:03 +03:00
README.md update readme 2023-05-12 19:37:54 +03:00
tsconfig.cjs.json Update to support both cjs and esm 2023-04-13 20:18:40 +03:00
tsconfig.json v1.4.3 2023-04-16 17:37:46 +03:00
yarn.lock test configs 2023-02-12 17:20:05 +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.