I created another command like usual, but it shows the "ValidationError: Expected a string primitive" error and I'm not sure why.
This is the at file:///home/egganto/Documents/Athena/src/commands/perimeter.js:157:33
it's referring to:
import { SlashCommandBuilder } from "discord.js";
const perimeterCommand = new SlashCommandBuilder()
.setName("perimeter")
.setDescription("Solves for the perimeter")
// subcommand for parallelogram
.addSubcommand((subcommand) =>
subcommand
.setName("parallelogram")
.setDescription("Solves for the perimeter of the parallelogram")
.addNumberOption((option) =>
option
.setName("base")
.setDescription("The value of the base of the parallelogram")
.setRequired(true)
)
.addNumberOption((option) =>
option
.setName("height")
.setDescription("The value of height of the parallelogram")
.setRequired(true)
)
)
// subcommand for triangle
.addSubcommand((subcommand) =>
subcommand)
.setName("triangle")
.setDescription("Finds the perimeter of a triangle")
.addNumberOption((option) =>
option
.setName("a")
.setDescription("value of side a of the triangle")
.setRequired(true)
)
.addNumberOption((option) =>
option
.setName("b")
.setDescription("value of side b of the triangle")
.setRequired(true)
)
.addNumberOption((option) =>
option
.setName("c")
.setDescription("value of side c of the triangle")
.setRequired(true)
)
// subcommand for rectangle
.addSubcommand((subcommand) =>
subcommand
.setName("rectangle")
.setDescription("finds the perimeter of a rectangle")
.addNumberOption((option) =>
option
.setName("length")
.setDescription("value of length of rectangle")
.setRequired(true)
)
.addNumberOption((option) =>
option
.setName("width")
.setDescription("value of length of rectangle")
.setRequired(true)
)
)
// subcommand for square
.addSubcommand((subcommand) =>
subcommand
.setName("square")
.setDescription("fnds perimeter of a square")
.addNumberOption((option) =>
option
.setName("a")
.setDescription("value of a side of a square")
.setRequired(true)
)
)
// subcommand for trapezoid
.addSubcommand((subcommand) =>
subcommand
.setName("trapezoid")
.setDescription("finds perimeter of trapezoid")
.addNumberOption((option) =>
option
.setName("a")
.setDescription("value of side a of trapezoid")
.setRequired(true)
)
.addNumberOption((option) =>
option
.setName("b")
.setDescription("value of side b of trapezoid")
.setRequired(true)
)
.addNumberOption((option) =>
option
.setName("c")
.setDescription("value of side c of trapezoid")
.setRequired(true)
)
.addNumberOption((option) =>
option
.setName("d")
.setDescription("value of side d of trapezoid")
.setRequired(true)
)
)
// subcommand for kite
.addSubcommand((subcommand) =>
subcommand
.setName("kite")
.setDescription("finds perimeter of kite")
.addNumberOption((option) =>
option
.setName("a")
.setDescription("length of first pair of equal sides")
.setRequired(true)
)
.addNumberOption((option) =>
option
.setName("b")
.setDescription("length of second pair of equal sides")
.setRequired(true)
)
)
// subcommand for rhombus
.addSubcommand((subcommand) =>
subcommand
.setName("rhombus")
.setDescription("finds perimeter of rhombus")
.addNumberOption((option) =>
option
.setName("a")
.setDescription("length of a side")
.setRequired(true)
)
)
// subcommand for hexagon
.addSubcommand((subcommand) =>
subcommand
.setName("hexagon")
.setDescription("finds perimeter of hexagon")
.addNumberOption((option) =>
option
.setName("a")
.setDescription("length of a side")
.setRequired(true)
)
);
export default perimeterCommand.toJSON();
line 157:33 being export default perimeterCommand.toJSON();
This is the full error:
[nodemon] starting `node ./src/index.js run`
/home/egganto/Documents/Athena/node_modules/@sapphire/shapeshift/dist/cjs/index.cjs:2473
return typeof value === "string" ? Result.ok(value) : Result.err(new ValidationError("s.string", "Expected a string primitive", value));
^
ValidationError: Expected a string primitive
at _StringValidator.handle (/home/egganto/Documents/Athena/node_modules/@sapphire/shapeshift/dist/cjs/index.cjs:2473:70)
at _StringValidator.parse (/home/egganto/Documents/Athena/node_modules/@sapphire/shapeshift/dist/cjs/index.cjs:939:90)
at validateName (/home/egganto/Documents/Athena/node_modules/@discordjs/builders/dist/index.js:1578:17)
at validateRequiredParameters (/home/egganto/Documents/Athena/node_modules/@discordjs/builders/dist/index.js:1597:3)
at MixedClass.toJSON (/home/egganto/Documents/Athena/node_modules/@discordjs/builders/dist/index.js:2358:5)
at /home/egganto/Documents/Athena/node_modules/@discordjs/builders/dist/index.js:2506:52
at Array.map (<anonymous>)
at MixedClass.toJSON (/home/egganto/Documents/Athena/node_modules/@discordjs/builders/dist/index.js:2506:29)
at file:///home/egganto/Documents/Athena/src/commands/perimeter.js:157:33
at ModuleJob.run (node:internal/modules/esm/module_job:222:25) {
validator: 's.string',
given: undefined
}
Node.js v20.12.2
I tried checking if I missed any description/require attributes, and if I haven't missed anything, I think it might not be missing something
Line 27 has a trailing closing bracket, and line 47 lacks a closing bracket.
// perimeter.js:25
// subcommand for triangle
.addSubcommand((subcommand) =>
subcommand) // this closes the addSubcommand function
.setName("triangle")
.setDescription("Finds the perimeter of a triangle")