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 API / Restcord : 创建私人频道