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

Discord.js调用permissionOverwrites遇[INVALID_TYPE]错误求助

Discord.js [INVALID_TYPE] 错误排查与解决

报错信息:[INVALID_TYPE]: Supplied parameter is not a User nor a Role

错误出在以下调用permissionOverwrites的代码段:

interaction.guild.channels.create(`ticket-${interaction.user.username}`, {
    parent: client.config.parentOpened,
    topic: interaction.user.id,
    type: 'GUILD_TEXT',
    permissionOverwrites: [{
        id: interaction.user.id,
        allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
      },
      {
        id: client.config.roleSupport,
        allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
      },
      {
        id: interaction.guild.roles.everyone,
        deny: ['VIEW_CHANNEL'],
      },
    ],
  })

错误原因

  • client.config.roleSupport配置无效:该值不是字符串格式的有效角色ID,可能是未配置、值为undefined、数字或角色名称,导致Discord.js无法识别为合法的角色对象/ID。
  • @everyone角色传参错误:直接传入interaction.guild.roles.everyone(角色实例对象),而Discord.js的permissionOverwrites需要的是用户/角色的ID字符串,部分版本API会因此判定类型无效。

解决方法

  1. 修复client.config.roleSupport配置

    • 打开配置文件,确认roleSupport的值是服务器支持角色的字符串ID(可在Discord开启开发者模式后右键角色复制ID)。
    • 如果是通过代码动态获取角色,确保存入配置的是角色的id属性,而非角色对象。
  2. 修正@everyone角色的传参
    将代码中对应部分改为:

    {
      id: interaction.guild.roles.everyone.id,
      deny: ['VIEW_CHANNEL'],
    }
    
  3. 可选验证步骤
    添加日志输出确认参数有效性:

    console.log('roleSupport配置值:', client.config.roleSupport, '类型:', typeof client.config.roleSupport);
    console.log('@everyone角色实例:', interaction.guild.roles.everyone, 'ID:', interaction.guild.roles.everyone.id);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:56:08