From 2e4f8805639baa01dda8e65dcdf4c910a1bafc28 Mon Sep 17 00:00:00 2001 From: RogueException Date: Mon, 9 Nov 2015 01:35:02 -0400 Subject: [PATCH] Added required parameter to GetService --- src/Discord.Net.Commands/CommandExtensions.cs | 4 ++-- .../Permissions/Levels/PermissionLevelChecker.cs | 8 ++------ .../Permissions/Userlist/BlacklistChecker.cs | 8 ++------ .../Permissions/Userlist/WhitelistChecker.cs | 8 ++------ src/Discord.Net.Modules/ModuleExtensions.cs | 4 ++-- src/Discord.Net.Modules/ModuleManager.cs | 4 +--- src/Discord.Net/DiscordClient.cs | 11 ++++++++--- 7 files changed, 19 insertions(+), 28 deletions(-) diff --git a/src/Discord.Net.Commands/CommandExtensions.cs b/src/Discord.Net.Commands/CommandExtensions.cs index e6d7a0ee3..e6e732472 100644 --- a/src/Discord.Net.Commands/CommandExtensions.cs +++ b/src/Discord.Net.Commands/CommandExtensions.cs @@ -2,7 +2,7 @@ { public static class CommandExtensions { - public static CommandService Commands(this DiscordClient client) - => client.GetService(); + public static CommandService Commands(this DiscordClient client, bool required = true) + => client.GetService(required); } } diff --git a/src/Discord.Net.Commands/Permissions/Levels/PermissionLevelChecker.cs b/src/Discord.Net.Commands/Permissions/Levels/PermissionLevelChecker.cs index 4d5d33dd4..f64cc37a0 100644 --- a/src/Discord.Net.Commands/Permissions/Levels/PermissionLevelChecker.cs +++ b/src/Discord.Net.Commands/Permissions/Levels/PermissionLevelChecker.cs @@ -1,6 +1,4 @@ -using System; - -namespace Discord.Commands.Permissions.Levels +namespace Discord.Commands.Permissions.Levels { public class PermissionLevelChecker : IPermissionChecker { @@ -12,10 +10,8 @@ namespace Discord.Commands.Permissions.Levels internal PermissionLevelChecker(DiscordClient client, int minPermissions) { - _service = client.GetService(); + _service = client.GetService(true); _minPermissions = minPermissions; - if (_service == null) - throw new InvalidOperationException($"{nameof(PermissionLevelService)} must be added to {nameof(DiscordClient)} before this function is called."); } public bool CanRun(Command command, User user, Channel channel) diff --git a/src/Discord.Net.Commands/Permissions/Userlist/BlacklistChecker.cs b/src/Discord.Net.Commands/Permissions/Userlist/BlacklistChecker.cs index c038af68b..6a4133ccc 100644 --- a/src/Discord.Net.Commands/Permissions/Userlist/BlacklistChecker.cs +++ b/src/Discord.Net.Commands/Permissions/Userlist/BlacklistChecker.cs @@ -1,6 +1,4 @@ -using System; - -namespace Discord.Commands.Permissions.Userlist +namespace Discord.Commands.Permissions.Userlist { public class BlacklistChecker : IPermissionChecker { @@ -8,9 +6,7 @@ namespace Discord.Commands.Permissions.Userlist internal BlacklistChecker(DiscordClient client) { - _service = client.GetService(); - if (_service == null) - throw new InvalidOperationException($"{nameof(BlacklistService)} must be added to {nameof(DiscordClient)} before this function is called."); + _service = client.GetService(true); } public bool CanRun(Command command, User user, Channel channel) diff --git a/src/Discord.Net.Commands/Permissions/Userlist/WhitelistChecker.cs b/src/Discord.Net.Commands/Permissions/Userlist/WhitelistChecker.cs index 781ea30e3..e6a8ddc5f 100644 --- a/src/Discord.Net.Commands/Permissions/Userlist/WhitelistChecker.cs +++ b/src/Discord.Net.Commands/Permissions/Userlist/WhitelistChecker.cs @@ -1,6 +1,4 @@ -using System; - -namespace Discord.Commands.Permissions.Userlist +namespace Discord.Commands.Permissions.Userlist { public class WhitelistChecker : IPermissionChecker { @@ -8,9 +6,7 @@ namespace Discord.Commands.Permissions.Userlist internal WhitelistChecker(DiscordClient client) { - _service = client.GetService(); - if (_service == null) - throw new InvalidOperationException($"{nameof(WhitelistService)} must be added to {nameof(DiscordClient)} before this function is called."); + _service = client.GetService(true); } public bool CanRun(Command command, User user, Channel channel) diff --git a/src/Discord.Net.Modules/ModuleExtensions.cs b/src/Discord.Net.Modules/ModuleExtensions.cs index e009219c5..385138ba2 100644 --- a/src/Discord.Net.Modules/ModuleExtensions.cs +++ b/src/Discord.Net.Modules/ModuleExtensions.cs @@ -2,7 +2,7 @@ { public static class ModuleExtensions { - public static ModuleService Modules(this DiscordClient client) - => client.GetService(); + public static ModuleService Modules(this DiscordClient client, bool required = true) + => client.GetService(required); } } diff --git a/src/Discord.Net.Modules/ModuleManager.cs b/src/Discord.Net.Modules/ModuleManager.cs index 43a5350fa..b946e888e 100644 --- a/src/Discord.Net.Modules/ModuleManager.cs +++ b/src/Discord.Net.Modules/ModuleManager.cs @@ -109,9 +109,7 @@ namespace Discord.Modules public void CreateCommands(string prefix, Action config) { - var commandService = _client.Commands(); - if (commandService == null) - throw new InvalidOperationException($"{nameof(CommandService)} must be added to DiscordClient before this property is accessed."); + var commandService = _client.Commands(true); commandService.CreateGroup(prefix, x => { x.Category(_name); diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index 18b0e41a1..c6f069cf7 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -280,15 +280,20 @@ namespace Discord obj.Install(this); return obj; } - public T GetService() + public T GetService(bool required = true) where T : class, IService { IService service; + T serviceT = null; if (_services.TryGetValue(typeof(T), out service)) - return service as T; + serviceT = service as T; else return null; - } + + if (serviceT == null && required) + throw new InvalidOperationException($"This operation requires {nameof(T)} to be added to {nameof(DiscordClient)}."); + return serviceT; + } protected override IEnumerable GetTasks() {