From 863f31fa35ccb8ce1b069db3487adf2a301f5fa0 Mon Sep 17 00:00:00 2001 From: CyberL1 Date: Thu, 4 Dec 2025 16:56:39 +0100 Subject: [PATCH 1/3] fix: send presences array (empty for now) in READY event data --- src/gateway/opcodes/Identify.ts | 1 + src/util/interfaces/Event.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/gateway/opcodes/Identify.ts b/src/gateway/opcodes/Identify.ts index 352fd6fed..0c36829e4 100644 --- a/src/gateway/opcodes/Identify.ts +++ b/src/gateway/opcodes/Identify.ts @@ -536,6 +536,7 @@ export async function onIdentify(this: WebSocket, data: Payload) { version: 0, // TODO }, private_channels: channels, + presences: [], // TODO: Send actual data session_id: this.session_id, country_code: user.settings.locale, // TODO: do ip analysis instead users: Array.from(users), diff --git a/src/util/interfaces/Event.ts b/src/util/interfaces/Event.ts index b70b92f85..24157efd1 100644 --- a/src/util/interfaces/Event.ts +++ b/src/util/interfaces/Event.ts @@ -69,6 +69,7 @@ export interface ReadyEventData { v: number; user: UserPrivate; private_channels: ReadyPrivateChannel[]; // this will be empty for bots + presences: Presence[]; session_id: string; // resuming guilds: IReadyGuildDTO[] | GuildOrUnavailable[]; // depends on capability analytics_token?: string; From c130810ad2d0c2c4a5c00a3a5207451f3ae15290 Mon Sep 17 00:00:00 2001 From: CyberL1 Date: Thu, 4 Dec 2025 16:59:31 +0100 Subject: [PATCH 2/3] fix: `highest_last_message_id` is apparently a number and never a string also I discovered that there's a bug in lambert-server's check function that ignores arrays of types --- src/schemas/gateway/IdentifySchema.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/schemas/gateway/IdentifySchema.ts b/src/schemas/gateway/IdentifySchema.ts index 7d0eedae5..f52b8ff17 100644 --- a/src/schemas/gateway/IdentifySchema.ts +++ b/src/schemas/gateway/IdentifySchema.ts @@ -18,7 +18,7 @@ // TODO: Need a way to allow camalCase and pascal_case without just duplicating the schema -import { ActivitySchema } from "@spacebar/schemas" +import { ActivitySchema } from "@spacebar/schemas"; export const IdentifySchema = { token: String, @@ -58,7 +58,7 @@ export const IdentifySchema = { $capabilities: Number, $client_state: { $guild_hashes: Object, - $highest_last_message_id: String || Number, + $highest_last_message_id: Number, $read_state_version: Number, $user_guild_settings_version: Number, $user_settings_version: undefined, @@ -70,7 +70,7 @@ export const IdentifySchema = { }, $clientState: { $guildHashes: Object, - $highestLastMessageId: String || Number, + $highestLastMessageId: Number, $readStateVersion: Number, $useruserGuildSettingsVersion: undefined, $userGuildSettingsVersion: undefined, @@ -120,7 +120,7 @@ export interface IdentifySchema { capabilities?: number; client_state?: { guild_hashes?: unknown; - highest_last_message_id?: string | number; + highest_last_message_id?: number; read_state_version?: number; user_guild_settings_version?: number; user_settings_version?: number; @@ -132,7 +132,7 @@ export interface IdentifySchema { }; clientState?: { guildHashes?: unknown; - highestLastMessageId?: string | number; + highestLastMessageId?: number; readStateVersion?: number; userGuildSettingsVersion?: number; useruserGuildSettingsVersion?: number; From 41e375f89658006bc2f081b996c42f10fda4274c Mon Sep 17 00:00:00 2001 From: CyberL1 Date: Thu, 4 Dec 2025 17:00:05 +0100 Subject: [PATCH 3/3] chore: re-generate openapi.json and schemas.json --- assets/openapi.json | Bin 856837 -> 856601 bytes assets/schemas.json | Bin 380401 -> 380213 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index 6bf6f92257c279976a31c58e2fa0c47d84a33b55..5d73449d2ca0367103f39f941831459302b60123 100644 GIT binary patch delta 80 zcmZo&W-@b$$%ekWlN+A6P4~8E;@TW?&zKd&Yj%Fp?)-!ih?#(x8Hibcm=%cGfS4VK TIe?fGh`E56d%N=!o