Discord .net Bot 创建私人频道

Posted

技术标签:

【中文标题】Discord .net Bot 创建私人频道【英文标题】:Discord .net Bot create a private channel 【发布时间】:2018-07-27 17:24:55 【问题描述】:

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

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);
    

再次提前干杯!

【问题讨论】:

【参考方案1】:

要基于角色创建私人频道,就像通过 discord 本身创建私人频道一样,您需要为频道明确授予您希望其访问的角色的权限,并拒绝其他角色访问服务器。

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

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

    IRole - 您希望在频道上应用这些新权限的角色。您需要通过user.Roles 检索角色 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 参数设置拒绝。

【讨论】:

以上是关于Discord .net Bot 创建私人频道的主要内容,如果未能解决你的问题,请参考以下文章

Discord Python - 私人频道 (DM) 中的 bot.wait_for_message

Discord - BOT 发送私信

Discord API / Restcord : 创建私人频道

JS Discord Bot - 创建具有特定权限的频道 ( v12+ )

Discord 中所有私人消息的 JSON

如何修复此 JDA discord bot 错误?