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

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "commandbot", "name": "commandbot",
"version": "3.0.0-s-beta1e", "version": "3.0.0-rc1",
"description": "A framework that helps you create your own Discord bot easier.", "description": "A framework that helps you create your own Discord bot easier.",
"main": "dist/cjs/index.js", "main": "dist/cjs/index.js",
"module": "dist/mjs/index.js", "module": "dist/mjs/index.js",
+2
View File
@@ -106,6 +106,8 @@ export class CommandManager {
command.parameters.map((p, i) => { command.parameters.map((p, i) => {
if (!p.optional && !paramsList[i]) { if (!p.optional && !paramsList[i]) {
throw new MissingParameterError(p); throw new MissingParameterError(p);
} else if (p.optional && !paramsList[i]) {
return;
} }
switch (p.type) { switch (p.type) {
case "mentionable": case "mentionable":
+29 -1
View File
@@ -64,6 +64,26 @@ export class StringParameter extends InputParameter {
if (parameter.type != "string") { if (parameter.type != "string") {
throw new Error(`Parameter type mismatch`); 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()); super(parameter, value?.toString());
} }
} }
@@ -72,7 +92,15 @@ export class BooleanParameter extends InputParameter {
if (parameter.type != "boolean") { if (parameter.type != "boolean") {
throw new Error(`Parameter type mismatch`); 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 { export class NumberParameter extends InputParameter {