Skip to content

Commit 339bb3e

Browse files
committed
enforce lower-case naming for slash command option names
1 parent 32ae84f commit 339bb3e

2 files changed

Lines changed: 12 additions & 6 deletions

File tree

customcommands/assets/customcommands-editcmd.html

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,13 +1236,15 @@ <h2 class="card-title">Custom Command Information</h2>
12361236
const nIn = row.querySelector('[data-slash-field="name"]');
12371237
const dIn = row.querySelector('[data-slash-field="description"]');
12381238
const tSel = row.querySelector('[data-slash-field="type"]');
1239-
const raw = (nIn ? nIn.value : '').trim();
1240-
if (raw === '') return; // blank rows are dropped server-side
1241-
const oname = raw.toLowerCase();
1239+
const oname = (nIn ? nIn.value : '').trim();
1240+
if (oname === '') return; // blank rows are dropped server-side
12421241
const label = 'argument "' + oname + '"';
12431242

12441243
if (!SLASH_NAME_RE.test(oname)) {
1245-
errors.push('Argument name "' + raw + '" must be 1-32 characters: letters, numbers, dashes and underscores.');
1244+
errors.push('Argument name "' + oname + '" must be 1-32 characters: letters, numbers, dashes and underscores.');
1245+
slashMark(nIn, true);
1246+
} else if (oname !== oname.toLowerCase()) {
1247+
errors.push('Argument name "' + oname + '" must be lowercase.');
12461248
slashMark(nIn, true);
12471249
}
12481250
if (seen[oname]) {

customcommands/customcommands.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -532,9 +532,13 @@ func validateSlashCommandData(guildID int64, name, description string, options [
532532

533533
seenOptions := make(map[string]bool, len(options))
534534
for _, opt := range options {
535-
oname := strings.ToLower(strings.TrimSpace(opt.Name))
535+
oname := strings.TrimSpace(opt.Name)
536536
if !slashCommandNameRegex.MatchString(oname) {
537-
return false, fmt.Sprintf("Option name %q must be 1-32 lowercase characters (letters, numbers, dashes, underscores)", opt.Name)
537+
return false, fmt.Sprintf("Option name %q must be 1-32 characters (letters, numbers, dashes, underscores)", opt.Name)
538+
}
539+
540+
if oname != strings.ToLower(oname) {
541+
return false, fmt.Sprintf("Option name %q must be lowercase", opt.Name)
538542
}
539543
if seenOptions[oname] {
540544
return false, fmt.Sprintf("Duplicate option name %q", oname)

0 commit comments

Comments
 (0)