You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手开发者遇ValidationError:期望布尔值类型问题求助

Discord.js Slash命令Boolean选项必填设置报错修复

我是一名新手开发者,这是我第一次使用boolean类型,遇到了如下报错,尝试了各种方法都没解决,希望能得到帮助。

出错代码

const {
    SlashCommandBuilder,
    PermissionFlagsBits,
    PermissionsBitField,
    EmbedBuilder,
  } = require("discord.js");

    const { generateDependencyReport, AudioPlayerStatus, joinVoiceChannel, createAudioPlayer, createAudioResource  } = require('@discordjs/voice'); 
  const googleTTS = require("google-tts-api");
  const translate = require("google-translate-api-x");

module.exports = {
  data: new SlashCommandBuilder()
    .setName(`tts`)
    .setDescription(`Fai ripetere al bot un messaggio in un canale vocale`)
    .addStringOption((option) =>
        option
          .setName("messaggio")
          .setDescription("Scrivi il messaggio da far ripetere dal bot in vocale")
          .setRequired(true)
      )
    .addBooleanOption((option) =>
    option
      .setName("rallentatore")
      .setDescription("Vuoi che il messaggio sia mandato a rallentatore?")
      .setRequired("true") // 错误发生位置
  ),  
  async execute(interaction, client) {

    const testo = interaction.options.getString("messaggio");
    const slow = interaction.options.getBoolean("rallentatore");

     const res = await translate(`${testo}`, {to: aa});


     const url = googleTTS.getAudioUrl(testo, {
        lang: res.from.language.iso,
        slow: slow,
        host: 'https://translate.google.com',
      });

      

      const { generateDependencyReport, AudioPlayerStatus, joinVoiceChannel, createAudioPlayer, createAudioResource  } = require('@discordjs/voice');



      const voiceChannelId = interaction.member.voice.channel.id
        const voiceChannel = interaction.member.voice.channel
        const guildId = interaction.guild.id

        
        const player = createAudioPlayer();

    

        const resource = createAudioResource(url);
        player.play(resource);

        
        const connection = joinVoiceChannel({
            channelId: voiceChannelId,
            guildId: guildId,
            adapterCreator: voiceChannel.guild.voiceAdapterCreator,
        });    



        const subscription = connection.subscribe(player);


        if (subscription) {
            setTimeout(() => subscription.unsubscribe(), 30_000);
        }

 
    
  },
};

错误信息

ValidationError: Expected a boolean primitive
    at BooleanValidator.handle (C:\Users\Casa\OneDrive\Desktop\Discord\eKicks\eKicks Bot v14\node_modules\@sapphire\shapeshift\dist\index.js:552:71)
    at BooleanValidator.parse (C:\Users\Casa\OneDrive\Desktop\Discord\eKicks\eKicks Bot v14\node_modules\@sapphire\shapeshift\dist\index.js:113:88)
    at validateRequired (C:\Users\Casa\OneDrive\Desktop\Discord\eKicks\eKicks Bot v14\node_modules\@discordjs\builders\dist\index.js:849:20)
    at SlashCommandBooleanOption.setRequired (C:\Users\Casa\OneDrive\Desktop\Discord\eKicks\eKicks Bot v14\node_modules\@discordjs\builders\dist\index.js:962:5)
    at C:\Users\Casa\OneDrive\Desktop\Discord\eKicks\eKicks Bot v14\src\commands\tools\tts.js:26:8
    at MixedClass._sharedAddOptionMethod (C:\Users\Casa\OneDrive\Desktop\Discord\eKicks\eKicks Bot v14\node_modules\@discordjs\builders\dist\index.js:1262:50)
    at MixedClass.addBooleanOption (C:\Users\Casa\OneDrive\Desktop\Discord\eKicks\eKicks Bot v14\node_modules\@discordjs\builders\dist\index.js:1233:17)
    at Object.<anonymous> (C:\Users\Casa\OneDrive\Desktop\Discord\eKicks\eKicks Bot v14\src\commands\tools\tts.js:22:6)
    at Module._compile (node:internal/modules/cjs/loader:1097:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1149:10) {
  validator: 's.boolean',
  given: 'true'
}

解决方案

错误根源很明确:setRequired()方法要求传入布尔类型的true或false,但你传入了字符串类型的"true",导致类型校验失败。

只需要修改错误行:

.setRequired("true")

改为:

.setRequired(true)

修改后,setRequired()接收到正确的布尔值参数,就能通过校验,不再抛出ValidationError。

补充说明:在JavaScript中,字符串"true"和布尔值true是完全不同的类型——前者是文本内容,后者是表示真假状态的原始值,很多API会严格校验参数类型,后续使用时要注意区分。

内容的提问来源于stack exchange,提问作者Ema R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:40:46