diff --git a/PluralKit.API/Controllers/MemberController.cs b/PluralKit.API/Controllers/MemberController.cs index 63cce0a0..3bf30976 100644 --- a/PluralKit.API/Controllers/MemberController.cs +++ b/PluralKit.API/Controllers/MemberController.cs @@ -41,6 +41,8 @@ namespace PluralKit.API.Controllers // Explicit bounds checks if (newMember.Name != null && newMember.Name.Length > Limits.MaxMemberNameLength) return BadRequest($"Member name too long ({newMember.Name.Length} > {Limits.MaxMemberNameLength}."); + if (newMember.DisplayName != null && newMember.DisplayName.Length > Limits.MaxMemberNameLength) + return BadRequest($"Member display name too long ({newMember.DisplayName.Length} > {Limits.MaxMemberNameLength}."); if (newMember.Pronouns != null && newMember.Pronouns.Length > Limits.MaxPronounsLength) return BadRequest($"Member pronouns too long ({newMember.Pronouns.Length} > {Limits.MaxPronounsLength}."); if (newMember.Description != null && newMember.Description.Length > Limits.MaxDescriptionLength) @@ -57,6 +59,7 @@ namespace PluralKit.API.Controllers var member = await _members.Create(system, newMember.Name); member.Name = newMember.Name; + member.DisplayName = newMember.DisplayName; member.Color = newMember.Color; member.AvatarUrl = newMember.AvatarUrl; member.Birthday = newMember.Birthday; @@ -84,6 +87,8 @@ namespace PluralKit.API.Controllers // Explicit bounds checks if (newMember.Name != null && newMember.Name.Length > Limits.MaxMemberNameLength) return BadRequest($"Member name too long ({newMember.Name.Length} > {Limits.MaxMemberNameLength}."); + if (newMember.DisplayName != null && newMember.DisplayName.Length > Limits.MaxMemberNameLength) + return BadRequest($"Member display name too long ({newMember.DisplayName.Length} > {Limits.MaxMemberNameLength}."); if (newMember.Pronouns != null && newMember.Pronouns.Length > Limits.MaxPronounsLength) return BadRequest($"Member pronouns too long ({newMember.Pronouns.Length} > {Limits.MaxPronounsLength}."); if (newMember.Description != null && newMember.Description.Length > Limits.MaxDescriptionLength) @@ -98,6 +103,7 @@ namespace PluralKit.API.Controllers return BadRequest(); member.Name = newMember.Name; + member.DisplayName = newMember.DisplayName; member.Color = newMember.Color; member.AvatarUrl = newMember.AvatarUrl; member.Birthday = newMember.Birthday; diff --git a/PluralKit.Bot/Commands/SystemCommands.cs b/PluralKit.Bot/Commands/SystemCommands.cs index dbb61a6d..0d109213 100644 --- a/PluralKit.Bot/Commands/SystemCommands.cs +++ b/PluralKit.Bot/Commands/SystemCommands.cs @@ -145,7 +145,7 @@ namespace PluralKit.Bot.Commands var members = await _members.GetBySystem(system); var embedTitle = system.Name != null ? $"Members of {system.Name.SanitizeMentions()} (`{system.Hid}`)" : $"Members of `{system.Hid}`"; await ctx.Paginate( - members.OrderBy(m => m.Name).ToList(), + members.OrderBy(m => m.Name.ToLower()).ToList(), 25, embedTitle, (eb, ms) => eb.Description = string.Join("\n", ms.Select((m) => { @@ -161,7 +161,7 @@ namespace PluralKit.Bot.Commands var members = await _members.GetBySystem(system); var embedTitle = system.Name != null ? $"Members of {system.Name} (`{system.Hid}`)" : $"Members of `{system.Hid}`"; await ctx.Paginate( - members.OrderBy(m => m.Name).ToList(), + members.OrderBy(m => m.Name.ToLower()).ToList(), 5, embedTitle, (eb, ms) => { @@ -297,4 +297,4 @@ namespace PluralKit.Bot.Commands }); } } -} \ No newline at end of file +} diff --git a/docs/3-api-documentation.md b/docs/3-api-documentation.md index f17be1e4..56315f8d 100644 --- a/docs/3-api-documentation.md +++ b/docs/3-api-documentation.md @@ -39,6 +39,7 @@ The following three models (usually represented in JSON format) represent the va |---|---|---|---| |id|string|No|| |name|string?|Yes|50-character limit.| +|display name|string?|Yes|50-character limit.| |description|string?|Yes|1000-character limit.| |color|color?|Yes|6-char hex (eg. `ff7000`), sans `#`.| |avatar_url|url?|Yes|Not validated server-side.| @@ -264,6 +265,7 @@ Creates a new member with the information given. Missing fields (except for name ```json { "name": "Craig Peterson", + "display_name": "Craig Peterson [he/they]", "color": null, "avatar_url": "https://path/to/new/image.png", "birthday": "1997-07-14", @@ -279,6 +281,7 @@ Creates a new member with the information given. Missing fields (except for name { "id": "qwert", "name": "Craig Peterson", + "display_name": "Craig Peterson [he/they]", "color": null, "avatar_url": "https://path/to/new/image.png", "birthday": "1997-07-14", @@ -301,6 +304,7 @@ Edits a member's information. Missing fields will be set to `null`. Will return ```json { "name": "Craig Peterson", + "display_name": "Craig Peterson [he/they]", "color": null, "avatar_url": "https://path/to/new/image.png", "birthday": "1997-07-14", @@ -316,6 +320,7 @@ Edits a member's information. Missing fields will be set to `null`. Will return { "id": "qwert", "name": "Craig Peterson", + "display_name": "Craig Peterson [he/they]", "color": null, "avatar_url": "https://path/to/new/image.png", "birthday": "1997-07-14",