Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

232
Views
(propiedad) CommandInteractionOption<CacheType>.value?: string | número | Opciones booleanas del comando Discord.js Slash

Estoy tratando de hacer mi primer Discord Bot usando mecanografiado. Hice un simple comando de tirada de dados con un paquete npm personal, pero parece haber un problema con las opciones del comando Discord Slash. Hice una opción de sum que NO es obligatoria, que suma cualquier número entero a la tirada de dados. Pero cuando trato de codificar esa parte, devuelve estos errores:
1- Argument of type 'string | number | boolean' is not assignable to parameter of type 'string'
2- Type 'number' is not assignable to type 'string'.ts(2345)

aquí está mi código:

 import { Command } from "../../structures/Command"; import { inlineCode } from "@discordjs/builders"; import aimless from "aimless"; export default new Command({ name: "roll", description: "Rolls a dice.", options: [ { name: "dice", description: "The dice you want to roll", type: "STRING", required: true }, { name: "sum", description: "The sum you want to add to your roll(s)", type: "INTEGER", required: false } ], run: async({ interaction }) => { const dice = interaction.options.get("dice").value; const sum = interaction.options.get("sum"); console.log(sum) let rolls; try { rolls = aimless.roll(dice); } catch (e) { return interaction.followUp(`**Invalid dice! \n${inlineCode(e.toString().split(":")[2])}**`) } if (rolls.length == 1) { if (!sum) { return interaction.followUp(`**You rolled a ${inlineCode(rolls[0])}!**`); } else { return interaction.reply(`**You rolled a ${inlineCode(rolls[0])}!\n ${inlineCode(rolls[0])} + ${inlineCode(sum.value)} = ${inlineCode(+rolls[0] + +sum.value)}.**`); } } } });

Los errores están en esta línea en sum.value y +rolls[0] + +sum.value :

 ` return interaction.reply(`**You rolled a ${inlineCode(rolls[0])}!\n ${inlineCode(rolls[0])} + ${inlineCode(sum.value)} = ${inlineCode(+rolls[0] + +sum.value)}.**`);`

Probé exactamente el mismo comando en JavaScript con @discordjs/builder "SlashCommandBuilder()" y funcionó bien.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El problema central es que inlineCode espera que el valor pasado tenga un tipo de string . Sin embargo, sum.value puede ser una string , un number o un valor boolean , por lo que no se puede aceptar debido a la posibilidad de que sea un number o un boolean .

La solución más simple para su caso es envolver lo que está pasando en las funciones dentro de los métodos String que convertirán los valores en cadenas antes de que se pasen:

 ${inlineCode(String(sum.value))}

y

 inlineCode(String(+rolls[0] + +sum.value))

También recomendaría cambiar +rolls[0] + +sum.value a rolls[0] + sum.value ya que el prefijo + no tiene efecto en el resultado de la operación aritmética. Sin embargo, dejaré esta respuesta para cumplir con el código proporcionado en el ejemplo de su pregunta.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!