more handler fixes for threads

This commit is contained in:
Skillz4Killz
2021-06-13 21:00:10 +00:00
committed by GitHub
parent 950482c503
commit 04cdda3ba7
6 changed files with 45 additions and 13 deletions
@@ -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));
}
+6 -6
View File
@@ -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[];
}
+2 -2
View File
@@ -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
View File
@@ -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;
}