From e48d2127e48866c56678110f5b0e2e936f375265 Mon Sep 17 00:00:00 2001 From: izzy Date: Tue, 10 Jun 2025 11:19:58 +0100 Subject: [PATCH] feat: add support for policy changes / ack --- src/Client.ts | 7 ++++++- src/events/v1.ts | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Client.ts b/src/Client.ts index 77f9240c..10584716 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -27,7 +27,7 @@ import { EventClient, type EventClientOptions, } from "./events/EventClient.js"; -import { handleEvent } from "./events/v1.js"; +import { ProtocolV1, handleEvent } from "./events/v1.js"; import type { HydratedChannel } from "./hydration/channel.js"; import type { HydratedEmoji } from "./hydration/emoji.js"; import type { HydratedMessage } from "./hydration/message.js"; @@ -51,6 +51,11 @@ export type Events = { ready: []; logout: []; + policyChanges: [ + policyChanges: (ProtocolV1["server"] & { type: "Ready" })["policy_changes"], + acknowledge: () => Promise, + ]; + messageCreate: [message: Message]; messageUpdate: [message: Message, previousMessage: HydratedMessage]; messageDelete: [message: HydratedMessage]; diff --git a/src/events/v1.ts b/src/events/v1.ts index c786f11f..22b67daf 100644 --- a/src/events/v1.ts +++ b/src/events/v1.ts @@ -180,6 +180,12 @@ type ReadyData = { channels: Channel[]; members: Member[]; emojis: Emoji[]; + policy_changes: { + created_time: string; + effective_time: string; + description: string; + url: string; + }[]; }; /** @@ -238,6 +244,12 @@ export async function handleEvent( setReady(true); client.emit("ready"); + if (event.policy_changes.length) { + client.emit("policyChanges", event.policy_changes, async () => + client.api.post("/policy/acknowledge"), + ); + } + break; } case "Message": {