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

如何设置D#+命令对无管理员/所有者等特定权限用户隐藏?

配置D#+命令实现权限控制(仅特定权限用户可见)

方法1:用内置特性快速指定权限

直接给命令加权限校验特性,没有对应权限的用户会自动看不到这些命令:

  • 给管理员专属命令加[RequirePermissions]特性:
using DSharpPlus.SlashCommands;
using DSharpPlus.Entities;

public class AdminModule : ApplicationCommandModule
{
    [SlashCommand("admin_clean", "清理服务器垃圾消息(仅管理员可用)")]
    [RequirePermissions(Permissions.Administrator)]
    public async Task CleanCommand(InteractionContext ctx)
    {
        await ctx.CreateResponseAsync(InteractionResponseType.ChannelMessageWithSource, 
            new DiscordInteractionResponseBuilder().WithContent("开始清理消息..."));
    }
}
  • 给服务器所有者专属命令加[RequireGuildOwner]特性:
[SlashCommand("server_config", "修改服务器核心配置(仅所有者可用)")]
[RequireGuildOwner]
public async Task ConfigCommand(InteractionContext ctx)
{
    await ctx.CreateResponseAsync(InteractionResponseType.ChannelMessageWithSource, 
        new DiscordInteractionResponseBuilder().WithContent("打开服务器配置面板..."));
}

原理很简单:D#+会自动做权限校验,没权限的用户在命令列表里根本刷不出这些命令,就算手动调用也会被拦截。

方法2:自定义权限检查(适配复杂场景)

如果需要更灵活的权限逻辑(比如指定特定角色、白名单用户ID),可以自己写校验规则:

  1. 先写一个自定义校验特性:
public class RequireTrustedRole : CheckBaseAttribute
{
    public override Task<bool> ExecuteChecksAsync(InteractionContext ctx)
    {
        // 这里替换成你要校验的角色ID
        var trustedRole = ctx.Guild.GetRole(123456789012345678);
        // 校验逻辑:用户有目标角色 或者 是服务器所有者
        bool hasPermission = ctx.Member.Roles.Contains(trustedRole) || ctx.Member.IsOwner;
        
        return Task.FromResult(hasPermission);
    }
}
  1. 把这个特性加到命令上:
[SlashCommand("trusted_action", "仅信任角色/所有者可见的操作")]
[RequireTrustedRole]
public async Task TrustedCommand(InteractionContext ctx)
{
    await ctx.CreateResponseAsync(InteractionResponseType.ChannelMessageWithSource, 
        new DiscordInteractionResponseBuilder().WithContent("执行信任用户专属操作..."));
}

注意点

  • 机器人本身得有足够权限(比如读取成员权限、管理应用命令),不然权限校验会失效。
  • 如果是全局命令,权限规则会在所有服务器生效;要针对单服务器配置的话,建议注册服务器专属命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:55:02