mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-16 19:28:17 +00:00
more handler fixes for threads
This commit is contained in:
@@ -3,6 +3,7 @@ import { cacheHandlers } from "../../cache.ts";
|
||||
import { ThreadMembersUpdate } from "../../types/channels/threads/thread_members_update.ts";
|
||||
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
|
||||
import { snowflakeToBigint } from "../../util/bigint.ts";
|
||||
import { threadMembersUpdateModified } from "../../util/transformers/thread_members_update_modified.ts";
|
||||
|
||||
export async function handleThreadMembersUpdate(data: DiscordGatewayPayload) {
|
||||
const payload = data.d as ThreadMembersUpdate;
|
||||
@@ -12,5 +13,5 @@ export async function handleThreadMembersUpdate(data: DiscordGatewayPayload) {
|
||||
thread.memberCount = payload.memberCount;
|
||||
await cacheHandlers.set("threads", thread.id, thread);
|
||||
|
||||
eventHandlers.threadMembersUpdate?.(payload);
|
||||
eventHandlers.threadMembersUpdate?.(threadMembersUpdateModified(payload));
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
import { eventHandlers } from "../../bot.ts";
|
||||
import { cacheHandlers } from "../../cache.ts";
|
||||
import { structures } from "../../structures/mod.ts";
|
||||
import { Channel } from "../../types/channels/channel.ts";
|
||||
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
|
||||
import { snowflakeToBigint } from "../../util/bigint.ts";
|
||||
import { channelToThread } from "../../util/transformers/channel_to_thread.ts";
|
||||
|
||||
export async function handleThreadUpdate(data: DiscordGatewayPayload) {
|
||||
const payload = data.d as Channel;
|
||||
const oldChannel = await cacheHandlers.get("channels", snowflakeToBigint(payload.id));
|
||||
if (!oldChannel) return;
|
||||
const oldThread = await cacheHandlers.get("threads", snowflakeToBigint(payload.id));
|
||||
if (!oldThread) return;
|
||||
|
||||
const discordenoChannel = await structures.createDiscordenoChannel(payload);
|
||||
await cacheHandlers.set("channels", discordenoChannel.id, discordenoChannel);
|
||||
const thread = channelToThread(payload);
|
||||
await cacheHandlers.set("threads", thread.id, thread);
|
||||
|
||||
eventHandlers.threadUpdate?.(discordenoChannel, oldChannel);
|
||||
eventHandlers.threadUpdate?.(thread, oldThread);
|
||||
}
|
||||
|
||||
@@ -1,15 +1,29 @@
|
||||
import { ThreadMember } from "./thread_member.ts";
|
||||
import { ThreadMember, ThreadMemberModified } from "./thread_member.ts";
|
||||
|
||||
export interface ThreadMembersUpdateBase {
|
||||
/** The approximate number of members in the thread, capped at 50 */
|
||||
memberCount: number;
|
||||
}
|
||||
|
||||
// TODO: add docs link
|
||||
export interface ThreadMembersUpdate {
|
||||
export interface ThreadMembersUpdate extends ThreadMembersUpdateBase {
|
||||
/** The id of the thread */
|
||||
id: string;
|
||||
/** The id of the guild */
|
||||
guildId: string;
|
||||
/** The approximate number of members in the thread, capped at 50 */
|
||||
memberCount: number;
|
||||
/** The users who were added to the thread */
|
||||
addedMembers?: ThreadMember[];
|
||||
/** The id of the users who were removed from the thread */
|
||||
removedMemberIds?: string[];
|
||||
}
|
||||
|
||||
export interface ThreadMembersUpdateModified extends ThreadMembersUpdateBase {
|
||||
/** The id of the thread */
|
||||
id: bigint;
|
||||
/** The id of the guild */
|
||||
guildId: bigint;
|
||||
/** The users who were added to the thread */
|
||||
addedMembers?: ThreadMemberModified[];
|
||||
/** The id of the users who were removed from the thread */
|
||||
removedMemberIds?: bigint[];
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import type { Collection } from "../../util/collection.ts";
|
||||
import type { PresenceUpdate } from "../activity/presence_update.ts";
|
||||
import type { StageInstance } from "../channels/stage_instance.ts";
|
||||
import type { ThreadMemberModified } from "../channels/threads/thread_member.ts";
|
||||
import type { ThreadMembersUpdate } from "../channels/threads/thread_members_update.ts";
|
||||
import type { ThreadMembersUpdateModified } from "../channels/threads/thread_members_update.ts";
|
||||
import type { Emoji } from "../emojis/emoji.ts";
|
||||
import type { GatewayPayload } from "../gateway/gateway_payload.ts";
|
||||
import type { DiscordGatewayPayload } from "../gateway/gateway_payload.ts";
|
||||
@@ -137,7 +137,7 @@ export type EventHandlersDefinitions = {
|
||||
/** Sent when the current users thread member is updated */
|
||||
threadMemberUpdate: [threadMember: ThreadMemberModified, thread: Thread];
|
||||
/** Sent when anyone is added to or removed from a thread */
|
||||
threadMembersUpdate: [update: ThreadMembersUpdate];
|
||||
threadMembersUpdate: [update: ThreadMembersUpdateModified];
|
||||
/** Sent when a thread is deleted */
|
||||
threadDelete: [thread: Thread];
|
||||
/** Sent when a user starts typing in a channel. */
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
export * from "./channel_to_thread.ts";
|
||||
export * from "./thread_member_modified.ts";
|
||||
export * from "./thread_members_update_modified.ts"
|
||||
@@ -0,0 +1,16 @@
|
||||
import {
|
||||
ThreadMembersUpdate,
|
||||
ThreadMembersUpdateModified,
|
||||
} from "../../types/channels/threads/thread_members_update.ts";
|
||||
import { snowflakeToBigint } from "../bigint.ts";
|
||||
import { threadMemberModified } from "./thread_member_modified.ts";
|
||||
|
||||
export function threadMembersUpdateModified(data: ThreadMembersUpdate) {
|
||||
return {
|
||||
...data,
|
||||
id: snowflakeToBigint(data.id),
|
||||
guildId: snowflakeToBigint(data.guildId),
|
||||
addedMembers: data.addedMembers?.map((member) => threadMemberModified(member)) || [],
|
||||
removedMemberIds: data.removedMemberIds?.map((id) => snowflakeToBigint(id)) || [],
|
||||
} as ThreadMembersUpdateModified;
|
||||
}
|
||||
Reference in New Issue
Block a user