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

如何用Discord4J实现仅指定频道可用的Slash Command?

解决Discord4J斜杠命令仅在特定频道显示的问题

要让你的/poll命令仅在指定频道可见并可用,需要结合默认权限禁用和目标频道权限覆盖来实现,具体操作如下:

1. 调整命令的默认权限配置

首先将命令的默认权限设置为禁用,这样所有频道默认都看不到该命令:

List<SlashCommandData> commandData = new ArrayList<>();
commandData.add(Commands.slash("poll", "Erstelle eine Umfrage")
        .setDefaultPermissions(DefaultMemberPermissions.disabled()) // 默认全频道不可见
        .setGuildOnly(true));

2. 给目标频道添加权限覆盖

完成公会命令注册后,针对你要开放命令的频道,添加权限覆盖,允许管理员在该频道使用并看到这个命令:

// 假设已获取目标公会对象 Guild guild,目标频道ID为 channelId(Snowflake类型)
guild.getApplicationCommandManager()
        .bulkOverwrite(commandData)
        .flatMapMany(commands -> commands)
        .filter(cmd -> cmd.getName().equals("poll"))
        .flatMap(pollCmd -> {
            // 1. 创建频道权限覆盖:允许该频道显示此命令
            ApplicationCommandPermission channelPerm = ApplicationCommandPermission.builder()
                    .type(ApplicationCommandPermission.Type.CHANNEL)
                    .id(channelId)
                    .permission(true)
                    .build();
            
            // 2. 创建管理员权限覆盖:允许管理员角色在该频道使用此命令
            Snowflake adminRoleId = guild.getRoles()
                    .filter(role -> role.getPermissions().contains(Permission.ADMINISTRATOR))
                    .single()
                    .block()
                    .getId();
            
            ApplicationCommandPermission adminPerm = ApplicationCommandPermission.builder()
                    .type(ApplicationCommandPermission.Type.ROLE)
                    .id(adminRoleId)
                    .permission(true)
                    .build();

            // 应用权限覆盖到命令
            return pollCmd.edit().withPermissions(Arrays.asList(channelPerm, adminPerm));
        })
        .subscribe();

核心逻辑说明

  • DefaultMemberPermissions.disabled():让命令默认在所有频道隐藏,只有被权限覆盖的频道才会显示。
  • 频道权限覆盖:指定目标频道并设置permission(true),解除该频道的命令隐藏限制。
  • 管理员权限限制:通过角色权限覆盖,确保仅拥有管理员权限的用户能在目标频道使用该命令。

这样配置后,只有指定频道的管理员输入/时能看到/poll命令,其他频道的所有用户都看不到该命令选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:53:26