|
@@ -126,17 +126,31 @@ namespace Discord.Modules |
|
|
if (server == null) throw new ArgumentNullException(nameof(server)); |
|
|
if (server == null) throw new ArgumentNullException(nameof(server)); |
|
|
if (!_useServerWhitelist) throw new InvalidOperationException("This module is not configured to use a server whitelist."); |
|
|
if (!_useServerWhitelist) throw new InvalidOperationException("This module is not configured to use a server whitelist."); |
|
|
|
|
|
|
|
|
|
|
|
lock (this) |
|
|
|
|
|
return EnableServerInternal(server); |
|
|
|
|
|
} |
|
|
|
|
|
public void EnableServers(IEnumerable<Server> servers) |
|
|
|
|
|
{ |
|
|
|
|
|
if (servers == null) throw new ArgumentNullException(nameof(servers)); |
|
|
|
|
|
if (!_useServerWhitelist) throw new InvalidOperationException("This module is not configured to use a server whitelist."); |
|
|
|
|
|
|
|
|
lock (this) |
|
|
lock (this) |
|
|
{ |
|
|
{ |
|
|
if (_enabledServers.TryAdd(server.Id, server)) |
|
|
|
|
|
{ |
|
|
|
|
|
if (ServerEnabled != null) |
|
|
|
|
|
ServerEnabled(this, new ServerEventArgs(server)); |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
foreach (var server in servers) |
|
|
|
|
|
EnableServerInternal(server); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
private bool EnableServerInternal(Server server) |
|
|
|
|
|
{ |
|
|
|
|
|
if (_enabledServers.TryAdd(server.Id, server)) |
|
|
|
|
|
{ |
|
|
|
|
|
if (ServerEnabled != null) |
|
|
|
|
|
ServerEnabled(this, new ServerEventArgs(server)); |
|
|
|
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public bool DisableServer(Server server) |
|
|
public bool DisableServer(Server server) |
|
|
{ |
|
|
{ |
|
|
if (server == null) throw new ArgumentNullException(nameof(server)); |
|
|
if (server == null) throw new ArgumentNullException(nameof(server)); |
|
@@ -175,24 +189,38 @@ namespace Discord.Modules |
|
|
if (!_useChannelWhitelist) throw new InvalidOperationException("This module is not configured to use a channel whitelist."); |
|
|
if (!_useChannelWhitelist) throw new InvalidOperationException("This module is not configured to use a channel whitelist."); |
|
|
|
|
|
|
|
|
lock (this) |
|
|
lock (this) |
|
|
|
|
|
return EnableChannelInternal(channel); |
|
|
|
|
|
} |
|
|
|
|
|
public void EnableChannels(IEnumerable<Channel> channels) |
|
|
|
|
|
{ |
|
|
|
|
|
if (channels == null) throw new ArgumentNullException(nameof(channels)); |
|
|
|
|
|
if (!_useChannelWhitelist) throw new InvalidOperationException("This module is not configured to use a channel whitelist."); |
|
|
|
|
|
|
|
|
|
|
|
lock (this) |
|
|
|
|
|
{ |
|
|
|
|
|
foreach (var channel in channels) |
|
|
|
|
|
EnableChannelInternal(channel); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
private bool EnableChannelInternal(Channel channel) |
|
|
|
|
|
{ |
|
|
|
|
|
if (_enabledChannels.TryAdd(channel.Id, channel)) |
|
|
{ |
|
|
{ |
|
|
if (_enabledChannels.TryAdd(channel.Id, channel)) |
|
|
|
|
|
|
|
|
var server = channel.Server; |
|
|
|
|
|
if (server != null) |
|
|
{ |
|
|
{ |
|
|
var server = channel.Server; |
|
|
|
|
|
if (server != null) |
|
|
|
|
|
{ |
|
|
|
|
|
int value = 0; |
|
|
|
|
|
_indirectServers.TryGetValue(server.Id, out value); |
|
|
|
|
|
value++; |
|
|
|
|
|
_indirectServers[server.Id] = value; |
|
|
|
|
|
} |
|
|
|
|
|
if (ChannelEnabled != null) |
|
|
|
|
|
ChannelEnabled(this, new ChannelEventArgs(channel)); |
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
int value = 0; |
|
|
|
|
|
_indirectServers.TryGetValue(server.Id, out value); |
|
|
|
|
|
value++; |
|
|
|
|
|
_indirectServers[server.Id] = value; |
|
|
} |
|
|
} |
|
|
return false; |
|
|
|
|
|
|
|
|
if (ChannelEnabled != null) |
|
|
|
|
|
ChannelEnabled(this, new ChannelEventArgs(channel)); |
|
|
|
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public bool DisableChannel(Channel channel) |
|
|
public bool DisableChannel(Channel channel) |
|
|
{ |
|
|
{ |
|
|
if (channel == null) throw new ArgumentNullException(nameof(channel)); |
|
|
if (channel == null) throw new ArgumentNullException(nameof(channel)); |
|
|