Discord .net Bot创建私人频道

问题描述 投票:0回答:1

我目前正在创建一个不和谐的机器人。我知道并且可以同时创建角色和语音频道,但是我试图使机器人将频道创建为私有频道,因此只有我刚刚创建的角色(和管理员)中的人员可以连接到该服务器,这意味着该聊天室是安全的角色。如果有人可以帮助我,将不胜感激!这是我到目前为止的代码:

public class GuildService
{
    private Color[] colors = new Color[] {Color.Blue, Color.DarkBlue, Color.DarkerGrey, Color.DarkGreen, Color.DarkGrey, Color.DarkMagenta, Color.DarkOrange, Color.DarkPurple, Color.DarkRed, Color.DarkTeal, Color.Default, Color.Gold, Color.Green, Color.LighterGrey, Color.LightGrey,
            Color.LightOrange, Color.Magenta, Color.Orange, Color.Purple, Color.Red, Color.Teal};
    public async Task SetupGroup(SocketGuildUser user, string Ext)
    {
        Random ran = new Random();
        ulong origin = (ulong)GuildPermission.Speak + (ulong)GuildPermission.SendTTSMessages + (ulong)GuildPermission.SendMessages + (ulong)GuildPermission.ReadMessages + (ulong)GuildPermission.EmbedLinks + (ulong)GuildPermission.Connect + (ulong)GuildPermission.AttachFiles + (ulong)GuildPermission.AddReactions;
        GuildPermissions perms = new GuildPermissions(origin);
        var guild = await user.Guild.CreateRoleAsync(Ext, perms, colors[ran.Next(colors.Length)], true);

        var vChan = await user.Guild.CreateVoiceChannelAsync(Ext);
    }
}

提前再次欢呼!

c# .net private discord channels
1个回答
0
投票

为了基于角色创建专用通道,就像通过不和谐本身创建专用通道一样,您需要为该通道授予您希望其有权访问的角色的显式权限,并拒绝对服务器中其他角色的访问。

创建频道后,您可以将频道权限应用于角色。

您已经完成了创建通道并将其存储在变量vChan中的前半部分。然后,您将需要调用方法vChan.AddPermissionOverwriteAsync()。这将采用2个参数:

  1. IRole-您希望对频道应用这些新权限的角色。您将需要通过user.Roles
  2. 来检索角色
  3. OvewritePermission-这是using Discord;命名空间中提供的结构,其中包含针对不同操作的权限的一堆属性。您可以查看更多详细信息here。在我自己的代码中,我有一个返回管理员权限的函数,如下所示:
public static OverwritePermissions GetFullAdminPermissions()
        {
            return new OverwritePermissions(PermValue.Deny,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow, // This parameter is for the 'viewChannel' permission
                                            PermValue.Allow,
                                            PermValue.Deny,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Allow,
                                            PermValue.Deny);
        }

对于您希望此通道允许的角色,请为该viewChannel参数设置“允许”。对于您不希望该渠道允许的角色,请为该viewChannel参数设置“拒绝”。

© www.soinside.com 2019 - 2024. All rights reserved.