mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-08 07:11:49 +02:00
Add arg infinite support
This commit is contained in:
@@ -10,6 +10,7 @@ module.exports = class Argument {
|
||||
this.max = options.max;
|
||||
this.oneOf = options.oneOf;
|
||||
this.default = options.default;
|
||||
this.infinite = options.infinite || false;
|
||||
this.avatarSize = options.avatarSize || 2048;
|
||||
this.validator = options.validate;
|
||||
this.parser = options.parse;
|
||||
|
||||
@@ -37,6 +37,25 @@ module.exports = class CommandDispatcher {
|
||||
const finalResult = { flags: parsed };
|
||||
for (let i = 0; i < command.args.length; i++) {
|
||||
const arg = command.args[i];
|
||||
if (arg.infinite) {
|
||||
const infinite = parsed.slice(i);
|
||||
const parsedArgs = [];
|
||||
for (const parsedArg of infinite) {
|
||||
if (arg.isEmpty(parsedArg, msg, arg)) {
|
||||
if (arg.default) {
|
||||
finalResult[arg.name] = typeof arg.default === 'function' ? arg.default(msg) : arg.default;
|
||||
continue;
|
||||
} else {
|
||||
return `The "${arg.label || arg.name}" argument is required.`;
|
||||
}
|
||||
}
|
||||
const valid = await arg.validate(parsedArg, msg, arg);
|
||||
if (!valid) return `An invalid value was provided for one of the "${arg.label || arg.name}" arguments.`;
|
||||
parsedArgs.push(await arg.parse(parsedArg, msg, arg));
|
||||
}
|
||||
finalResult[arg.name] = parsedArgs;
|
||||
break;
|
||||
}
|
||||
const parsedArg = parsed._[i];
|
||||
if (arg.isEmpty(parsedArg, msg, arg)) {
|
||||
if (arg.default) {
|
||||
|
||||
Reference in New Issue
Block a user