@@ -30,7 +30,7 @@ namespace Discord.WebSocket
public int Position { get; private set; }
public int Position { get; private set; }
/// <inheritdoc />
/// <inheritdoc />
public IReadOnlyCollection<Overwrite> PermissionOverwrites => _overwrites;
public virtual IReadOnlyCollection<Overwrite> PermissionOverwrites => _overwrites;
/// <summary>
/// <summary>
/// Gets a collection of users that are able to view the channel.
/// Gets a collection of users that are able to view the channel.
/// </summary>
/// </summary>
@@ -48,6 +48,8 @@ namespace Discord.WebSocket
{
{
switch (model.Type)
switch (model.Type)
{
{
case ChannelType.News:
return SocketNewsChannel.Create(guild, state, model);
case ChannelType.Text:
case ChannelType.Text:
return SocketTextChannel.Create(guild, state, model);
return SocketTextChannel.Create(guild, state, model);
case ChannelType.Voice:
case ChannelType.Voice:
@@ -55,7 +57,6 @@ namespace Discord.WebSocket
case ChannelType.Category:
case ChannelType.Category:
return SocketCategoryChannel.Create(guild, state, model);
return SocketCategoryChannel.Create(guild, state, model);
default:
default:
// TODO: Proper implementation for channel categories
return new SocketGuildChannel(guild.Discord, model.Id, guild);
return new SocketGuildChannel(guild.Discord, model.Id, guild);
}
}
}
}
@@ -86,7 +87,7 @@ namespace Discord.WebSocket
/// <returns>
/// <returns>
/// An overwrite object for the targeted user; <c>null</c> if none is set.
/// An overwrite object for the targeted user; <c>null</c> if none is set.
/// </returns>
/// </returns>
public OverwritePermissions? GetPermissionOverwrite(IUser user)
public virtual OverwritePermissions? GetPermissionOverwrite(IUser user)
{
{
for (int i = 0; i < _overwrites.Length; i++)
for (int i = 0; i < _overwrites.Length; i++)
{
{
@@ -102,7 +103,7 @@ namespace Discord.WebSocket
/// <returns>
/// <returns>
/// An overwrite object for the targeted role; <c>null</c> if none is set.
/// An overwrite object for the targeted role; <c>null</c> if none is set.
/// </returns>
/// </returns>
public OverwritePermissions? GetPermissionOverwrite(IRole role)
public virtual OverwritePermissions? GetPermissionOverwrite(IRole role)
{
{
for (int i = 0; i < _overwrites.Length; i++)
for (int i = 0; i < _overwrites.Length; i++)
{
{
@@ -121,7 +122,7 @@ namespace Discord.WebSocket
/// <returns>
/// <returns>
/// A task representing the asynchronous permission operation for adding the specified permissions to the channel.
/// A task representing the asynchronous permission operation for adding the specified permissions to the channel.
/// </returns>
/// </returns>
public async Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null)
public virtual async Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null)
{
{
await ChannelHelper.AddPermissionOverwriteAsync(this, Discord, user, permissions, options).ConfigureAwait(false);
await ChannelHelper.AddPermissionOverwriteAsync(this, Discord, user, permissions, options).ConfigureAwait(false);
_overwrites = _overwrites.Add(new Overwrite(user.Id, PermissionTarget.User, new OverwritePermissions(permissions.AllowValue, permissions.DenyValue)));
_overwrites = _overwrites.Add(new Overwrite(user.Id, PermissionTarget.User, new OverwritePermissions(permissions.AllowValue, permissions.DenyValue)));
@@ -136,7 +137,7 @@ namespace Discord.WebSocket
/// <returns>
/// <returns>
/// A task representing the asynchronous permission operation for adding the specified permissions to the channel.
/// A task representing the asynchronous permission operation for adding the specified permissions to the channel.
/// </returns>
/// </returns>
public async Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null)
public virtual async Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null)
{
{
await ChannelHelper.AddPermissionOverwriteAsync(this, Discord, role, permissions, options).ConfigureAwait(false);
await ChannelHelper.AddPermissionOverwriteAsync(this, Discord, role, permissions, options).ConfigureAwait(false);
_overwrites = _overwrites.Add(new Overwrite(role.Id, PermissionTarget.Role, new OverwritePermissions(permissions.AllowValue, permissions.DenyValue)));
_overwrites = _overwrites.Add(new Overwrite(role.Id, PermissionTarget.Role, new OverwritePermissions(permissions.AllowValue, permissions.DenyValue)));
@@ -149,7 +150,7 @@ namespace Discord.WebSocket
/// <returns>
/// <returns>
/// A task representing the asynchronous operation for removing the specified permissions from the channel.
/// A task representing the asynchronous operation for removing the specified permissions from the channel.
/// </returns>
/// </returns>
public async Task RemovePermissionOverwriteAsync(IUser user, RequestOptions options = null)
public virtual async Task RemovePermissionOverwriteAsync(IUser user, RequestOptions options = null)
{
{
await ChannelHelper.RemovePermissionOverwriteAsync(this, Discord, user, options).ConfigureAwait(false);
await ChannelHelper.RemovePermissionOverwriteAsync(this, Discord, user, options).ConfigureAwait(false);
@@ -170,7 +171,7 @@ namespace Discord.WebSocket
/// <returns>
/// <returns>
/// A task representing the asynchronous operation for removing the specified permissions from the channel.
/// A task representing the asynchronous operation for removing the specified permissions from the channel.
/// </returns>
/// </returns>
public async Task RemovePermissionOverwriteAsync(IRole role, RequestOptions options = null)
public virtual async Task RemovePermissionOverwriteAsync(IRole role, RequestOptions options = null)
{
{
await ChannelHelper.RemovePermissionOverwriteAsync(this, Discord, role, options).ConfigureAwait(false);
await ChannelHelper.RemovePermissionOverwriteAsync(this, Discord, role, options).ConfigureAwait(false);