Update app commands regex and fix localization on app context commands (#2452)
Co-authored-by: Quin Lynch <49576606+quinchs@users.noreply.github.com>
This commit is contained in:
@@ -145,10 +145,10 @@ namespace Discord
|
|||||||
if (name.Length > 32)
|
if (name.Length > 32)
|
||||||
throw new ArgumentOutOfRangeException(nameof(name), "Name length must be less than or equal to 32.");
|
throw new ArgumentOutOfRangeException(nameof(name), "Name length must be less than or equal to 32.");
|
||||||
|
|
||||||
if (!Regex.IsMatch(name, @"^[\w-]{1,32}$"))
|
if (!Regex.IsMatch(name, @"^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$"))
|
||||||
throw new FormatException($"{nameof(name)} must match the regex ^[\\w-]{{1,32}}$");
|
throw new ArgumentException(@"Name must match the regex ^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$", nameof(name));
|
||||||
|
|
||||||
if (name.Any(x => char.IsUpper(x)))
|
if (name.Any(char.IsUpper))
|
||||||
throw new FormatException("Name cannot contain any uppercase characters.");
|
throw new FormatException("Name cannot contain any uppercase characters.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,9 @@ namespace Discord
|
|||||||
|
|
||||||
Preconditions.AtLeast(name.Length, 1, nameof(name));
|
Preconditions.AtLeast(name.Length, 1, nameof(name));
|
||||||
Preconditions.AtMost(name.Length, SlashCommandBuilder.MaxNameLength, nameof(name));
|
Preconditions.AtMost(name.Length, SlashCommandBuilder.MaxNameLength, nameof(name));
|
||||||
if (!Regex.IsMatch(name, @"^[\w-]{1,32}$"))
|
|
||||||
throw new ArgumentException("Option name cannot contain any special characters or whitespaces!", nameof(name));
|
if (Type == ApplicationCommandType.Slash && !Regex.IsMatch(name, @"^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$"))
|
||||||
|
throw new ArgumentException(@"Name must match the regex ^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$", nameof(name));
|
||||||
}
|
}
|
||||||
_nameLocalizations = value;
|
_nameLocalizations = value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,8 @@ namespace Discord
|
|||||||
Name = Name,
|
Name = Name,
|
||||||
IsDefaultPermission = IsDefaultPermission,
|
IsDefaultPermission = IsDefaultPermission,
|
||||||
IsDMEnabled = IsDMEnabled,
|
IsDMEnabled = IsDMEnabled,
|
||||||
DefaultMemberPermissions = DefaultMemberPermissions ?? Optional<GuildPermission>.Unspecified
|
DefaultMemberPermissions = DefaultMemberPermissions ?? Optional<GuildPermission>.Unspecified,
|
||||||
|
NameLocalizations = NameLocalizations
|
||||||
};
|
};
|
||||||
|
|
||||||
return props;
|
return props;
|
||||||
@@ -157,14 +158,6 @@ namespace Discord
|
|||||||
Preconditions.NotNullOrEmpty(name, nameof(name));
|
Preconditions.NotNullOrEmpty(name, nameof(name));
|
||||||
Preconditions.AtLeast(name.Length, 1, nameof(name));
|
Preconditions.AtLeast(name.Length, 1, nameof(name));
|
||||||
Preconditions.AtMost(name.Length, MaxNameLength, nameof(name));
|
Preconditions.AtMost(name.Length, MaxNameLength, nameof(name));
|
||||||
|
|
||||||
// Discord updated the docs, this regex prevents special characters like @!$%(... etc,
|
|
||||||
// https://discord.com/developers/docs/interactions/slash-commands#applicationcommand
|
|
||||||
if (!Regex.IsMatch(name, @"^[\w-]{1,32}$"))
|
|
||||||
throw new ArgumentException("Command name cannot contain any special characters or whitespaces!", nameof(name));
|
|
||||||
|
|
||||||
if (name.Any(x => char.IsUpper(x)))
|
|
||||||
throw new FormatException("Name cannot contain any uppercase characters.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -65,7 +65,8 @@ namespace Discord
|
|||||||
Name = Name,
|
Name = Name,
|
||||||
IsDefaultPermission = IsDefaultPermission,
|
IsDefaultPermission = IsDefaultPermission,
|
||||||
IsDMEnabled = IsDMEnabled,
|
IsDMEnabled = IsDMEnabled,
|
||||||
DefaultMemberPermissions = DefaultMemberPermissions ?? Optional<GuildPermission>.Unspecified
|
DefaultMemberPermissions = DefaultMemberPermissions ?? Optional<GuildPermission>.Unspecified,
|
||||||
|
NameLocalizations = NameLocalizations
|
||||||
};
|
};
|
||||||
|
|
||||||
return props;
|
return props;
|
||||||
@@ -155,14 +156,6 @@ namespace Discord
|
|||||||
Preconditions.NotNullOrEmpty(name, nameof(name));
|
Preconditions.NotNullOrEmpty(name, nameof(name));
|
||||||
Preconditions.AtLeast(name.Length, 1, nameof(name));
|
Preconditions.AtLeast(name.Length, 1, nameof(name));
|
||||||
Preconditions.AtMost(name.Length, MaxNameLength, nameof(name));
|
Preconditions.AtMost(name.Length, MaxNameLength, nameof(name));
|
||||||
|
|
||||||
// Discord updated the docs, this regex prevents special characters like @!$%(... etc,
|
|
||||||
// https://discord.com/developers/docs/interactions/slash-commands#applicationcommand
|
|
||||||
if (!Regex.IsMatch(name, @"^[\w-]{1,32}$"))
|
|
||||||
throw new ArgumentException("Command name cannot contain any special characters or whitespaces!", nameof(name));
|
|
||||||
|
|
||||||
if (name.Any(x => char.IsUpper(x)))
|
|
||||||
throw new FormatException("Name cannot contain any uppercase characters.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -207,10 +207,9 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
Preconditions.Options(name, description);
|
Preconditions.Options(name, description);
|
||||||
|
|
||||||
// Discord updated the docs, this regex prevents special characters like @!$%( and s p a c e s.. etc,
|
// https://discord.com/developers/docs/interactions/application-commands
|
||||||
// https://discord.com/developers/docs/interactions/slash-commands#applicationcommand
|
if (!Regex.IsMatch(name, @"^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$"))
|
||||||
if (!Regex.IsMatch(name, @"^[\w-]{1,32}$"))
|
throw new ArgumentException(@"Name must match the regex ^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$", nameof(name));
|
||||||
throw new ArgumentException("Command name cannot contain any special characters or whitespaces!", nameof(name));
|
|
||||||
|
|
||||||
// make sure theres only one option with default set to true
|
// make sure theres only one option with default set to true
|
||||||
if (isDefault == true && Options?.Any(x => x.IsDefault == true) == true)
|
if (isDefault == true && Options?.Any(x => x.IsDefault == true) == true)
|
||||||
@@ -376,12 +375,11 @@ namespace Discord
|
|||||||
Preconditions.AtLeast(name.Length, 1, nameof(name));
|
Preconditions.AtLeast(name.Length, 1, nameof(name));
|
||||||
Preconditions.AtMost(name.Length, MaxNameLength, nameof(name));
|
Preconditions.AtMost(name.Length, MaxNameLength, nameof(name));
|
||||||
|
|
||||||
// Discord updated the docs, this regex prevents special characters like @!$%(... etc,
|
// https://discord.com/developers/docs/interactions/application-commands
|
||||||
// https://discord.com/developers/docs/interactions/slash-commands#applicationcommand
|
if (!Regex.IsMatch(name, @"^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$"))
|
||||||
if (!Regex.IsMatch(name, @"^[\w-]{1,32}$"))
|
throw new ArgumentException(@"Name must match the regex ^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$", nameof(name));
|
||||||
throw new ArgumentException("Command name cannot contain any special characters or whitespaces!", nameof(name));
|
|
||||||
|
|
||||||
if (name.Any(x => char.IsUpper(x)))
|
if (name.Any(char.IsUpper))
|
||||||
throw new FormatException("Name cannot contain any uppercase characters.");
|
throw new FormatException("Name cannot contain any uppercase characters.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -587,10 +585,9 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
Preconditions.Options(name, description);
|
Preconditions.Options(name, description);
|
||||||
|
|
||||||
// Discord updated the docs, this regex prevents special characters like @!$%( and s p a c e s.. etc,
|
// https://discord.com/developers/docs/interactions/application-commands
|
||||||
// https://discord.com/developers/docs/interactions/slash-commands#applicationcommand
|
if (!Regex.IsMatch(name, @"^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$"))
|
||||||
if (!Regex.IsMatch(name, @"^[\w-]{1,32}$"))
|
throw new ArgumentException(@"Name must match the regex ^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$", nameof(name));
|
||||||
throw new ArgumentException("Command name cannot contain any special characters or whitespaces!", nameof(name));
|
|
||||||
|
|
||||||
// make sure theres only one option with default set to true
|
// make sure theres only one option with default set to true
|
||||||
if (isDefault && Options?.Any(x => x.IsDefault == true) == true)
|
if (isDefault && Options?.Any(x => x.IsDefault == true) == true)
|
||||||
@@ -966,8 +963,10 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
Preconditions.AtLeast(name.Length, 1, nameof(name));
|
Preconditions.AtLeast(name.Length, 1, nameof(name));
|
||||||
Preconditions.AtMost(name.Length, SlashCommandBuilder.MaxNameLength, nameof(name));
|
Preconditions.AtMost(name.Length, SlashCommandBuilder.MaxNameLength, nameof(name));
|
||||||
if (!Regex.IsMatch(name, @"^[\w-]{1,32}$"))
|
|
||||||
throw new ArgumentException("Option name cannot contain any special characters or whitespaces!", nameof(name));
|
// https://discord.com/developers/docs/interactions/application-commands
|
||||||
|
if (!Regex.IsMatch(name, @"^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$"))
|
||||||
|
throw new ArgumentException(@"Name must match the regex ^[-_\p{L}\p{N}\p{IsDevanagari}\p{IsThai}]{1,32}$", nameof(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void EnsureValidCommandOptionDescription(string description)
|
private static void EnsureValidCommandOptionDescription(string description)
|
||||||
|
|||||||
Reference in New Issue
Block a user