diff --git a/src/util/interfaces/Event.ts b/src/util/interfaces/Event.ts index 4e25e4c..b1ed1fd 100644 --- a/src/util/interfaces/Event.ts +++ b/src/util/interfaces/Event.ts @@ -39,6 +39,7 @@ } from "@spacebar/util"; import { JsonValue } from "@protobuf-ts/runtime"; import { ApplicationCommand, GuildCreateResponse, PartialEmoji, PublicMember, PublicUser, PublicVoiceState, RelationshipType, UserPrivate } from "@spacebar/schemas"; +import { ThreadMember } from "../entities/ThreadMember"; export interface Event { guild_id?: string; @@ -608,6 +609,47 @@ }; } +export interface ThreadCreateEvent extends Event { + event: "THREAD_CREATE"; + data: Channel & { newly_created: boolean }; +} + +export interface ThreadUpdatEvent extends Event { + event: "THREAD_UPDATE"; + data: Channel; +} + +export interface ThreadDeleteEvent extends Event { + event: "THREAD_DELETE"; + data: Pick; +} + +export interface ThreadListSyncEvent extends Event { + event: "THREAD_LIST_SYNC"; + data: { + guild_id: string; + channel_ids?: string[]; + threads: Channel[]; + members: ThreadMember[]; + }; +} + +export interface ThreadMemberUpdateEvent extends Event { + event: "THREAD_MEMBER_UPDATE"; + data: ThreadMember & { guild_id: string }; +} + +export interface ThreadMembersUpdateEvent extends Event { + event: "THREAD_MEMBERS_UPDATE"; + data: { + id: string; + guild_id: string; + member_count: number; + added_members?: ThreadMember[]; + removed_member_ids?: string[]; + }; +} + export type EventData = | InvalidatedEvent | ReadyEvent @@ -658,7 +700,13 @@ | InteractionFailureEvent | MessageAckEvent | RelationshipAddEvent - | RelationshipRemoveEvent; + | RelationshipRemoveEvent + | ThreadCreateEvent + | ThreadUpdatEvent + | ThreadDeleteEvent + | ThreadListSyncEvent + | ThreadMemberUpdateEvent + | ThreadMembersUpdateEvent; // located in collection events @@ -712,6 +760,12 @@ ApplicationCommandUpdate = "APPLICATION_COMMAND_UPDATE", ApplicationCommandDelete = "APPLICATION_COMMAND_DELETE", SessionsReplace = "SESSIONS_REPLACE", + ThreadCreate = "THREAD_CREATE", + ThreadUpdate = "THREAD_UPDATE", + ThreadDelete = "THREAD_DELETE", + ThreadListSync = "THREAD_LIST_SYNC", + ThreadMemberUpdate = "THREAD_MEMBER_UPDATE", + ThreadMembersUpdate = "THREAD_MEMBERS_UPDATE", } export type EVENT = @@ -776,6 +830,11 @@ | "SESSIONS_REPLACE" | "USER_SETTINGS_PROTO_UPDATE" | "THREAD_CREATE" + | "THREAD_UPDATE" + | "THREAD_DELETE" + | "THREAD_LIST_SYNC" + | "THREAD_MEMBER_UPDATE" + | "THREAD_MEMBERS_UPDATE" | CUSTOMEVENTS; export type CUSTOMEVENTS = "INVALIDATED" | "RATELIMIT";