gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:16:13 29 4
gpt4 key购买 nike

因此,我尝试在 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com