c# - 如何使用 Discord.NET 配置 Discord 角色权限?

标签 c# discord discord.net

因此,我尝试在 C# 中使用 Discord.NET API 编写 Discord 机器人代码,但我遇到了使用该机器人为角色配置权限的问题。

我正在尝试通过创建“Muted”角色来执行文本 channel 静音命令。但是,我不能拒绝Send Messages 的权限。这是我尝试过的:

// Mute Command:
[Command("mute")]
[RequireUserPermission(GuildPermission.KickMembers)]
[RequireBotPermission(GuildPermission.KickMembers)]
public async Task Mute(IGuildUser user, int duration, string reason)
{
    var role = await Context.Guild.CreateRoleAsync("Muted");
    role.Permissions.SendMessages = false;
    Threading.Sleep(duration);
    await role.DeleteAsync();
}

这是行不通的。

我也试过更换

role.Permissions.SendMessages = false;

role.Permissions.SendMessages.Equal(false);

这也没有用。我查看了 API 文档,但仍未找到解决方案。

有什么解决办法吗?

最佳答案

IRole 中的 Permissions 属性只有一个 getter,这意味着您不能设置 Permissions 对象或 Permissions 对象中的任何属性,一旦它被创建。您只能从对象中获取数据。从下图可以看出:

IRole definition

CreateRoleAsync 函数有一个 GuildPermissions 参数(这是第二个参数),您可以将自定义 GuildPermissions 对象传递给该参数。创建新的 GuildPermissions 实例时,您将需要使用接受大约 20 个参数的构造函数,这些参数全部设置不同的权限。

下面是一些示例代码:

public void CreateRoleWithCustomPermissions()
{
   var myCustomPermissions = new GuildPermissions(false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false, // this one is for sendMessages
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                true,
                                                false,
                                                false,
                                                true,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                false);

   var role = await Context.Guild.CreateRoleAsync("Muted", myCustomPermissions);
}

关于c# - 如何使用 Discord.NET 配置 Discord 角色权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61041247/

相关文章:

c# - Azure Web 作业正常关闭

javascript - 尝试为我的不和谐机器人发出抽奖命令,但始终返回未定义的获胜者

c# - Discord.net 无法在 Linux 上运行

c# - Discord.Net -- 如何使用 "@"使 Bot Ping 用户

c# - ActionFilter 中的 ViewData 集在母版页 MVC3 上变为空

c# - 如何在javascript中获取 session [""]值?

c# - 我们怎样才能得到当前的汇率?

python - on_message函数重复,Discord.py重写

python - 当我提到某个人时,我是否可以通过discord.py 让我的机器人通过私信联系他们?

c# - 如何复制并说出用户的输入?