From 88cfbe54539c8ad1be044af583757c774f06643f Mon Sep 17 00:00:00 2001 From: Suiram1701 <110390261+Suiram1701@users.noreply.github.com> Date: Fri, 28 Mar 2025 21:12:29 +0100 Subject: [PATCH] Fixed type reader/converter parsing exception (#3084) --- .../ComponentInteractions/DefaultValueComponentConverter.cs | 4 ++-- .../TypeConverters/SlashCommands/DefaultValueConverter.cs | 5 ++--- .../TypeReaders/DefaultValueReader.cs | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Discord.Net.Interactions/TypeConverters/ComponentInteractions/DefaultValueComponentConverter.cs b/src/Discord.Net.Interactions/TypeConverters/ComponentInteractions/DefaultValueComponentConverter.cs index 9ed82c6e..3c650b6a 100644 --- a/src/Discord.Net.Interactions/TypeConverters/ComponentInteractions/DefaultValueComponentConverter.cs +++ b/src/Discord.Net.Interactions/TypeConverters/ComponentInteractions/DefaultValueComponentConverter.cs @@ -17,9 +17,9 @@ namespace Discord.Interactions _ => Task.FromResult(TypeConverterResult.FromError(InteractionCommandError.ConvertFailed, $"{option.Type} doesn't have a convertible value.")) }; } - catch (InvalidCastException castEx) + catch (Exception ex) when (ex is FormatException or InvalidCastException) { - return Task.FromResult(TypeConverterResult.FromError(castEx)); + return Task.FromResult(TypeConverterResult.FromError(ex)); } } } diff --git a/src/Discord.Net.Interactions/TypeConverters/SlashCommands/DefaultValueConverter.cs b/src/Discord.Net.Interactions/TypeConverters/SlashCommands/DefaultValueConverter.cs index 15f61649..f71fb2dc 100644 --- a/src/Discord.Net.Interactions/TypeConverters/SlashCommands/DefaultValueConverter.cs +++ b/src/Discord.Net.Interactions/TypeConverters/SlashCommands/DefaultValueConverter.cs @@ -41,7 +41,6 @@ namespace Discord.Interactions public override Task ReadAsync(IInteractionContext context, IApplicationCommandInteractionDataOption option, IServiceProvider services) { object value; - if (option.Value is Optional optional) value = optional.IsSpecified ? optional.Value : default(T); else @@ -52,9 +51,9 @@ namespace Discord.Interactions var converted = Convert.ChangeType(value, typeof(T)); return Task.FromResult(TypeConverterResult.FromSuccess(converted)); } - catch (InvalidCastException castEx) + catch (Exception ex) when (ex is FormatException or InvalidCastException) { - return Task.FromResult(TypeConverterResult.FromError(castEx)); + return Task.FromResult(TypeConverterResult.FromError(ex)); } } } diff --git a/src/Discord.Net.Interactions/TypeReaders/DefaultValueReader.cs b/src/Discord.Net.Interactions/TypeReaders/DefaultValueReader.cs index e833382a..d9074952 100644 --- a/src/Discord.Net.Interactions/TypeReaders/DefaultValueReader.cs +++ b/src/Discord.Net.Interactions/TypeReaders/DefaultValueReader.cs @@ -13,9 +13,9 @@ namespace Discord.Interactions var converted = Convert.ChangeType(option, typeof(T)); return Task.FromResult(TypeConverterResult.FromSuccess(converted)); } - catch (InvalidCastException castEx) + catch (Exception ex) when (ex is FormatException or InvalidCastException) { - return Task.FromResult(TypeConverterResult.FromError(castEx)); + return Task.FromResult(TypeConverterResult.FromError(ex)); } } }