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

Discord服务器默认权限用户无法使用无权限要求的JDA命令

Discord JDA 命令默认权限不生效问题解决

问题分析

你设置commandone为DefaultMemberPermissions.ENABLED,但默认权限组用户仍无法访问,管理员可正常使用两个命令,核心原因大概率是服务器命令权限被手动覆盖或者JDA权限枚举的使用场景不匹配。

解决方案

  • 检查服务器端命令权限配置
    打开Discord服务器设置 → 「整合」→ 「命令」,找到你的机器人对应的commandone命令。若该命令被手动设置为仅特定角色/用户可访问,需改回「允许所有人使用」的默认状态。

  • 替换权限枚举为DefaultMemberPermissions.EMPTY
    DefaultMemberPermissions.ENABLED的设计是授予所有成员使用权限,但部分场景下Discord的权限继承逻辑会出现冲突。改用EMPTY可明确表示该命令无需任何权限,所有人默认可访问:

    jda.awaitReady();
    jda.upsertCommand("commandone", "This is command 1").setDefaultPermissions(DefaultMemberPermissions.EMPTY).queue();
    jda.upsertCommand("commandtwo", "This is command 2").setDefaultPermissions(DefaultMemberPermissions.DISABLED).queue();
    
  • 重新同步命令缓存
    若旧命令的权限缓存未更新,可先清空现有命令再重新注册:

    // 先删除所有现有命令
    jda.retrieveCommands().queue(commands -> {
        commands.forEach(cmd -> cmd.delete().queue());
        // 删除完成后重新注册命令
        jda.upsertCommand("commandone", "This is command 1").setDefaultPermissions(DefaultMemberPermissions.EMPTY).queue();
        jda.upsertCommand("commandtwo", "This is command 2").setDefaultPermissions(DefaultMemberPermissions.DISABLED).queue();
    });
    
  • 确认机器人角色权限
    进入服务器设置 → 「角色」→ 找到机器人的角色,确保「使用应用命令」权限已勾选开启。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:54:57