diff --git a/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs index 0b09ee5c8..93ca2e59a 100644 --- a/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs +++ b/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs @@ -33,18 +33,8 @@ namespace Discord /// public Optional CategoryId { get; set; } /// - /// Gets or sets the user permission overwrites for this channel. + /// Gets or sets the permission overwrites for this channel. /// - /// - /// The key needs to be a user snowflake identifier. - /// - public Optional>> UserOverwrites { get; set; } - /// - /// Gets or sets the role permission overwrites for this channel. - /// - /// - /// The key needs to be a role snowflake identifier. - /// - public Optional>> RoleOverwrites { get; set; } + public Optional> PermissionOverwrites { get; set; } } } diff --git a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs index db85cda48..2ff98407f 100644 --- a/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs +++ b/src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs @@ -171,24 +171,6 @@ namespace Discord.Rest var props = new TextChannelProperties(); func?.Invoke(props); - var overwrites = new List(); - if (props.UserOverwrites.IsSpecified) - overwrites.AddRange(props.UserOverwrites.Value.Select(x => new API.Overwrite() - { - TargetId = x.Key, - TargetType = PermissionTarget.User, - Allow = x.Value.AllowValue, - Deny = x.Value.DenyValue, - })); - if (props.RoleOverwrites.IsSpecified) - overwrites.AddRange(props.RoleOverwrites.Value.Select(x => new API.Overwrite() - { - TargetId = x.Key, - TargetType = PermissionTarget.Role, - Allow = x.Value.AllowValue, - Deny = x.Value.DenyValue, - })); - var args = new CreateGuildChannelParams(name, ChannelType.Text) { CategoryId = props.CategoryId, @@ -196,7 +178,15 @@ namespace Discord.Rest IsNsfw = props.IsNsfw, Position = props.Position, SlowModeInterval = props.SlowModeInterval, - Overwrites = overwrites.Count != 0 ? Optional.Create(overwrites.ToArray()) : Optional.Create(), + Overwrites = props.PermissionOverwrites.IsSpecified + ? props.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite + { + TargetId = overwrite.TargetId, + TargetType = overwrite.TargetType, + Allow = overwrite.Permissions.AllowValue, + Deny = overwrite.Permissions.DenyValue + }).ToArray() + : Optional.Create(), }; var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); return RestTextChannel.Create(client, guild, model); @@ -210,31 +200,21 @@ namespace Discord.Rest var props = new VoiceChannelProperties(); func?.Invoke(props); - var overwrites = new List(); - if (props.UserOverwrites.IsSpecified) - overwrites.AddRange(props.UserOverwrites.Value.Select(x => new API.Overwrite() - { - TargetId = x.Key, - TargetType = PermissionTarget.User, - Allow = x.Value.AllowValue, - Deny = x.Value.DenyValue, - })); - if (props.RoleOverwrites.IsSpecified) - overwrites.AddRange(props.RoleOverwrites.Value.Select(x => new API.Overwrite() - { - TargetId = x.Key, - TargetType = PermissionTarget.Role, - Allow = x.Value.AllowValue, - Deny = x.Value.DenyValue, - })); - var args = new CreateGuildChannelParams(name, ChannelType.Voice) { CategoryId = props.CategoryId, Bitrate = props.Bitrate, UserLimit = props.UserLimit, Position = props.Position, - Overwrites = overwrites.Count != 0 ? Optional.Create(overwrites.ToArray()) : Optional.Create(), + Overwrites = props.PermissionOverwrites.IsSpecified + ? props.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite + { + TargetId = overwrite.TargetId, + TargetType = overwrite.TargetType, + Allow = overwrite.Permissions.AllowValue, + Deny = overwrite.Permissions.DenyValue + }).ToArray() + : Optional.Create(), }; var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false); return RestVoiceChannel.Create(client, guild, model); @@ -248,28 +228,18 @@ namespace Discord.Rest var props = new GuildChannelProperties(); func?.Invoke(props); - var overwrites = new List(); - if (props.UserOverwrites.IsSpecified) - overwrites.AddRange(props.UserOverwrites.Value.Select(x => new API.Overwrite() - { - TargetId = x.Key, - TargetType = PermissionTarget.User, - Allow = x.Value.AllowValue, - Deny = x.Value.DenyValue, - })); - if (props.RoleOverwrites.IsSpecified) - overwrites.AddRange(props.RoleOverwrites.Value.Select(x => new API.Overwrite() - { - TargetId = x.Key, - TargetType = PermissionTarget.Role, - Allow = x.Value.AllowValue, - Deny = x.Value.DenyValue, - })); - var args = new CreateGuildChannelParams(name, ChannelType.Category) { Position = props.Position, - Overwrites = overwrites.Count != 0 ? Optional.Create(overwrites.ToArray()) : Optional.Create(), + Overwrites = props.PermissionOverwrites.IsSpecified + ? props.PermissionOverwrites.Value.Select(overwrite => new API.Overwrite + { + TargetId = overwrite.TargetId, + TargetType = overwrite.TargetType, + Allow = overwrite.Permissions.AllowValue, + Deny = overwrite.Permissions.DenyValue + }).ToArray() + : Optional.Create(), }; var model = await client.ApiClient.CreateGuildChannelAsync(guild.Id, args, options).ConfigureAwait(false);