diff --git a/src/Discord.Net.Interactions/LocalizationManagers/JsonLocalizationManager.cs b/src/Discord.Net.Interactions/LocalizationManagers/JsonLocalizationManager.cs index 81c2b27f3..e841af256 100644 --- a/src/Discord.Net.Interactions/LocalizationManagers/JsonLocalizationManager.cs +++ b/src/Discord.Net.Interactions/LocalizationManagers/JsonLocalizationManager.cs @@ -23,10 +23,10 @@ namespace Discord.Interactions _fileName = fileName; } - public Task> GetAllDescriptionsAsync(IList key, LocalizationTarget destinationType, IServiceProvider serviceProvider) => + public Task> GetAllDescriptionsAsync(IList key, LocalizationTarget destinationType) => GetValuesAsync(key, DescriptionIdentifier); - public Task> GetAllNamesAsync(IList key, LocalizationTarget destinationType, IServiceProvider serviceProvider) => + public Task> GetAllNamesAsync(IList key, LocalizationTarget destinationType) => GetValuesAsync(key, NameIdentifier); private string[] GetAllFiles() => @@ -50,7 +50,8 @@ namespace Discord.Interactions var obj = await JObject.LoadAsync(jr); var token = string.Join(".", key) + $".{identifier}"; var value = (string)obj.SelectToken(token); - result[locale] = value; + if (value is not null) + result[locale] = value; } return result; diff --git a/src/Discord.Net.Interactions/LocalizationManagers/ResxLocalizationManager.cs b/src/Discord.Net.Interactions/LocalizationManagers/ResxLocalizationManager.cs index 97846a55b..f15b0d203 100644 --- a/src/Discord.Net.Interactions/LocalizationManagers/ResxLocalizationManager.cs +++ b/src/Discord.Net.Interactions/LocalizationManagers/ResxLocalizationManager.cs @@ -25,10 +25,10 @@ namespace Discord.Interactions _supportedLocales = supportedLocales; } - public Task> GetAllDescriptionsAsync(IList key, LocalizationTarget destinationType, IServiceProvider serviceProvider) => + public Task> GetAllDescriptionsAsync(IList key, LocalizationTarget destinationType) => Task.FromResult(GetValues(key, DescriptionIdentifier)); - public Task> GetAllNamesAsync(IList key, LocalizationTarget destinationType, IServiceProvider serviceProvider) => + public Task> GetAllNamesAsync(IList key, LocalizationTarget destinationType) => Task.FromResult(GetValues(key, NameIdentifier)); private IDictionary GetValues(IList key, string identifier) @@ -39,7 +39,11 @@ namespace Discord.Interactions var resourceManager = _localizerCache.GetOrAdd(resourceName, new ResourceManager(resourceName, _assembly)); foreach (var locale in _supportedLocales) - result[locale.Name] = resourceManager.GetString(identifier, locale); + { + var value = resourceManager.GetString(identifier, locale); + if (value is not null) + result[locale.Name] = value; + } return result; } diff --git a/src/Discord.Net.Interactions/Map/CommandMap.cs b/src/Discord.Net.Interactions/Map/CommandMap.cs index 2e7bf5368..336e2b1ec 100644 --- a/src/Discord.Net.Interactions/Map/CommandMap.cs +++ b/src/Discord.Net.Interactions/Map/CommandMap.cs @@ -42,7 +42,7 @@ namespace Discord.Interactions public void RemoveCommand(T command) { - var key = ParseCommandName(command); + var key = CommandHierarchy.GetCommandPath(command); _root.RemoveCommand(key, 0); } @@ -60,28 +60,9 @@ namespace Discord.Interactions private void AddCommand(T command) { - var key = ParseCommandName(command); + var key = CommandHierarchy.GetCommandPath(command); _root.AddCommand(key, 0, command); } - - private IList ParseCommandName(T command) - { - var keywords = new List() { command.Name }; - - var currentParent = command.Module; - - while (currentParent != null) - { - if (!string.IsNullOrEmpty(currentParent.SlashGroupName)) - keywords.Add(currentParent.SlashGroupName); - - currentParent = currentParent.Parent; - } - - keywords.Reverse(); - - return keywords; - } } }