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 { ThreadMembersUpdate } from "../../types/channels/threads/thread_members_update.ts";
|
||||||
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
|
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
|
||||||
import { snowflakeToBigint } from "../../util/bigint.ts";
|
import { snowflakeToBigint } from "../../util/bigint.ts";
|
||||||
|
import { threadMembersUpdateModified } from "../../util/transformers/thread_members_update_modified.ts";
|
||||||
|
|
||||||
export async function handleThreadMembersUpdate(data: DiscordGatewayPayload) {
|
export async function handleThreadMembersUpdate(data: DiscordGatewayPayload) {
|
||||||
const payload = data.d as ThreadMembersUpdate;
|
const payload = data.d as ThreadMembersUpdate;
|
||||||
@@ -12,5 +13,5 @@ export async function handleThreadMembersUpdate(data: DiscordGatewayPayload) {
|
|||||||
thread.memberCount = payload.memberCount;
|
thread.memberCount = payload.memberCount;
|
||||||
await cacheHandlers.set("threads", thread.id, thread);
|
await cacheHandlers.set("threads", thread.id, thread);
|
||||||
|
|
||||||
eventHandlers.threadMembersUpdate?.(payload);
|
eventHandlers.threadMembersUpdate?.(threadMembersUpdateModified(payload));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
import { eventHandlers } from "../../bot.ts";
|
import { eventHandlers } from "../../bot.ts";
|
||||||
import { cacheHandlers } from "../../cache.ts";
|
import { cacheHandlers } from "../../cache.ts";
|
||||||
import { structures } from "../../structures/mod.ts";
|
|
||||||
import { Channel } from "../../types/channels/channel.ts";
|
import { Channel } from "../../types/channels/channel.ts";
|
||||||
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
|
import { DiscordGatewayPayload } from "../../types/gateway/gateway_payload.ts";
|
||||||
import { snowflakeToBigint } from "../../util/bigint.ts";
|
import { snowflakeToBigint } from "../../util/bigint.ts";
|
||||||
|
import { channelToThread } from "../../util/transformers/channel_to_thread.ts";
|
||||||
|
|
||||||
export async function handleThreadUpdate(data: DiscordGatewayPayload) {
|
export async function handleThreadUpdate(data: DiscordGatewayPayload) {
|
||||||
const payload = data.d as Channel;
|
const payload = data.d as Channel;
|
||||||
const oldChannel = await cacheHandlers.get("channels", snowflakeToBigint(payload.id));
|
const oldThread = await cacheHandlers.get("threads", snowflakeToBigint(payload.id));
|
||||||
if (!oldChannel) return;
|
if (!oldThread) return;
|
||||||
|
|
||||||
const discordenoChannel = await structures.createDiscordenoChannel(payload);
|
const thread = channelToThread(payload);
|
||||||
await cacheHandlers.set("channels", discordenoChannel.id, discordenoChannel);
|
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
|
// TODO: add docs link
|
||||||
export interface ThreadMembersUpdate {
|
export interface ThreadMembersUpdate extends ThreadMembersUpdateBase {
|
||||||
/** The id of the thread */
|
/** The id of the thread */
|
||||||
id: string;
|
id: string;
|
||||||
/** The id of the guild */
|
/** The id of the guild */
|
||||||
guildId: string;
|
guildId: string;
|
||||||
/** The approximate number of members in the thread, capped at 50 */
|
|
||||||
memberCount: number;
|
|
||||||
/** The users who were added to the thread */
|
/** The users who were added to the thread */
|
||||||
addedMembers?: ThreadMember[];
|
addedMembers?: ThreadMember[];
|
||||||
/** The id of the users who were removed from the thread */
|
/** The id of the users who were removed from the thread */
|
||||||
removedMemberIds?: string[];
|
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 { PresenceUpdate } from "../activity/presence_update.ts";
|
||||||
import type { StageInstance } from "../channels/stage_instance.ts";
|
import type { StageInstance } from "../channels/stage_instance.ts";
|
||||||
import type { ThreadMemberModified } from "../channels/threads/thread_member.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 { Emoji } from "../emojis/emoji.ts";
|
||||||
import type { GatewayPayload } from "../gateway/gateway_payload.ts";
|
import type { GatewayPayload } from "../gateway/gateway_payload.ts";
|
||||||
import type { DiscordGatewayPayload } 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 */
|
/** Sent when the current users thread member is updated */
|
||||||
threadMemberUpdate: [threadMember: ThreadMemberModified, thread: Thread];
|
threadMemberUpdate: [threadMember: ThreadMemberModified, thread: Thread];
|
||||||
/** Sent when anyone is added to or removed from a thread */
|
/** Sent when anyone is added to or removed from a thread */
|
||||||
threadMembersUpdate: [update: ThreadMembersUpdate];
|
threadMembersUpdate: [update: ThreadMembersUpdateModified];
|
||||||
/** Sent when a thread is deleted */
|
/** Sent when a thread is deleted */
|
||||||
threadDelete: [thread: Thread];
|
threadDelete: [thread: Thread];
|
||||||
/** Sent when a user starts typing in a channel. */
|
/** Sent when a user starts typing in a channel. */
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
export * from "./channel_to_thread.ts";
|
export * from "./channel_to_thread.ts";
|
||||||
export * from "./thread_member_modified.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