CommandBot 3.0.0-rc1 - choice and boolean processing from messages

This commit is contained in:
mmacierzanka committed 2021-08-09 20:12:02 +02:00
1 parent 7fc5ae2396
commit 0a9cdb7bde
3 files changed
+32 -2

No files matched your search

+2
View File
@@ -106,6 +106,8 @@ export class CommandManager {
command.parameters.map((p, i) => {
if (!p.optional && !paramsList[i]) {
throw new MissingParameterError(p);
} else if (p.optional && !paramsList[i]) {
return;
}
switch (p.type) {
case "mentionable":
+29 -1
View File
@@ -64,6 +64,26 @@ export class StringParameter extends InputParameter {
if (parameter.type != "string") {
throw new Error(`Parameter type mismatch`);
}
if (parameter.choices) {
const match = parameter.choices.filter(
(c) =>
c.name.toLowerCase() === value?.toString().toLowerCase() ||
c.value.toLowerCase() === value?.toString().toLowerCase()
);
if (match.length === 0) {
throw new Error(
`Parameter "${
parameter.name
}" has incorrect value. Please enter one of the following values: ${parameter.choices
.map((c) => [c.name, c.value])
.flat(1)
.join(", ")}`
);
} else {
super(parameter, match[0].value);
return;
}
}
super(parameter, value?.toString());
}
}
@@ -72,7 +92,15 @@ export class BooleanParameter extends InputParameter {
if (parameter.type != "boolean") {
throw new Error(`Parameter type mismatch`);
}
super(parameter, value ? true : false);
if (value?.toString().toLowerCase() === "true") {
super(parameter, true);
} else if (value?.toString().toLowerCase() === "false") {
super(parameter, false);
} else {
throw new Error(
`Cannot convert "${parameter.name}" parameter to boolean. Please enter either "true" or "false".`
);
}
}
}
export class NumberParameter extends InputParameter {