From c6b90b08eea67f55bc4e858036b73f5e1e06b0a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0spik?= Date: Sat, 18 Jul 2026 08:08:56 +0300 Subject: [PATCH] feat: add pronouns (#169) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: pronouns Signed-off-by: İspik * feat: add pronouns Signed-off-by: İspik --------- Signed-off-by: İspik --- src/classes/ServerMember.ts | 7 +++++++ src/classes/User.ts | 7 +++++++ src/events/v1.ts | 6 ++++++ src/hydration/serverMember.ts | 2 ++ src/hydration/user.ts | 2 ++ 5 files changed, 24 insertions(+) diff --git a/src/classes/ServerMember.ts b/src/classes/ServerMember.ts index c734fd28..e04cc39b 100644 --- a/src/classes/ServerMember.ts +++ b/src/classes/ServerMember.ts @@ -94,6 +94,13 @@ export class ServerMember { return this.#collection.getUnderlyingObject(key(this.id)).avatar; } + /** + * Pronouns + */ + get pronouns(): string | undefined { + return this.#collection.getUnderlyingObject(key(this.id)).pronouns; + } + /** * List of role IDs */ diff --git a/src/classes/User.ts b/src/classes/User.ts index ab872a3d..2fe8cfe8 100644 --- a/src/classes/User.ts +++ b/src/classes/User.ts @@ -93,6 +93,13 @@ export class User { return this.#collection.getUnderlyingObject(this.id).avatar; } + /** + * Pronouns + */ + get pronouns(): string | undefined { + return this.#collection.getUnderlyingObject(this.id).pronouns; + } + /** * Badges */ diff --git a/src/events/v1.ts b/src/events/v1.ts index a085e6b1..dbaf7dfe 100644 --- a/src/events/v1.ts +++ b/src/events/v1.ts @@ -798,6 +798,9 @@ export async function handleEvent( case "Timeout": changes["timeout"] = undefined; break; + case "Pronouns": + changes["pronouns"] = undefined; + break; } } } @@ -869,6 +872,9 @@ export async function handleEvent( text: undefined, }; break; + case "Pronouns": + changes["pronouns"] = undefined; + break; } } } diff --git a/src/hydration/serverMember.ts b/src/hydration/serverMember.ts index cfb230a7..6c4bf3e5 100644 --- a/src/hydration/serverMember.ts +++ b/src/hydration/serverMember.ts @@ -11,6 +11,7 @@ export type HydratedServerMember = { joinedAt: Date; nickname?: string; avatar?: File; + pronouns?: string; roles: string[]; timeout?: Date; }; @@ -28,6 +29,7 @@ export const serverMemberHydration: Hydrate< joinedAt: (member) => new Date(member.joined_at), nickname: (member) => member.nickname!, avatar: (member, ctx) => new File(ctx as Client, member.avatar!), + pronouns: (member) => member.pronouns!, roles: (member) => member.roles, timeout: (member) => new Date(member.timeout!), }, diff --git a/src/hydration/user.ts b/src/hydration/user.ts index c7f2e50c..49c7fbce 100644 --- a/src/hydration/user.ts +++ b/src/hydration/user.ts @@ -25,6 +25,7 @@ export type HydratedUser = { flags: UserFlags; avatar?: File; + pronouns?: string; status?: UserStatus; bot?: BotInformation; }; @@ -49,6 +50,7 @@ export const userHydration: Hydrate = { flags: (user) => user.flags!, avatar: (user, ctx) => new File(ctx as Client, user.avatar!), + pronouns: (user) => user.pronouns, status: (user) => user.status!, bot: (user) => user.bot!, },