Browse Source

Fix numeric type check for options

pull/1923/head
quin lynch 3 years ago
parent
commit
8439019f92
2 changed files with 34 additions and 2 deletions
  1. +2
    -2
      src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOptionChoice.cs
  2. +32
    -0
      src/Discord.Net.Core/Extensions/ObjectExtensions.cs

+ 2
- 2
src/Discord.Net.Core/Entities/Interactions/ApplicationCommandOptionChoice.cs View File

@@ -34,8 +34,8 @@ namespace Discord
get => _value; get => _value;
set set
{ {
if (value != null && value is not int && value is not string)
throw new ArgumentException("The value of a choice must be a string or int!");
if (value != null && value is not string && !value.IsNumericType())
throw new ArgumentException("The value of a choice must be a string or a numeric type!");
_value = value; _value = value;
} }
} }


+ 32
- 0
src/Discord.Net.Core/Extensions/ObjectExtensions.cs View File

@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Discord
{
internal static class ObjectExtensions
{
public static bool IsNumericType(this object o)
{
switch (Type.GetTypeCode(o.GetType()))
{
case TypeCode.Byte:
case TypeCode.SByte:
case TypeCode.UInt16:
case TypeCode.UInt32:
case TypeCode.UInt64:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64:
case TypeCode.Decimal:
case TypeCode.Double:
case TypeCode.Single:
return true;
default:
return false;
}
}
}
}

Loading…
Cancel
Save