Archived
CommandBot 3.0.0-rc1 - choice and boolean processing from messages
This commit is contained in:
1 parent
7fc5ae2396
commit
0a9cdb7bde
3 files changed
+32
-2
No files matched your search
+1
-1
@@ -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",
|
||||||
|
|||||||
@@ -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
@@ -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 {
|
||||||
|
|||||||
Reference in new issue
Block a user