From de42065665da59d52bf36ab9c084dd38b1a52567 Mon Sep 17 00:00:00 2001 From: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com> Date: Tue, 22 Mar 2022 22:48:03 +0000 Subject: [PATCH] fix: thread member update event --- bot.ts | 7 +++++++ handlers/channels/THREAD_MEMBER_UPDATE.ts | 13 +++++++++++++ types/discord.ts | 14 +++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 handlers/channels/THREAD_MEMBER_UPDATE.ts diff --git a/bot.ts b/bot.ts index b340251a8..0aa6de58b 100644 --- a/bot.ts +++ b/bot.ts @@ -183,6 +183,7 @@ export function createEventHandlers( debug: events.debug ?? ignore, threadCreate: events.threadCreate ?? ignore, threadDelete: events.threadDelete ?? ignore, + threadMemberUpdate: events.threadMemberUpdate ?? ignore, threadMembersUpdate: events.threadMembersUpdate ?? ignore, threadUpdate: events.threadUpdate ?? ignore, scheduledEventCreate: events.scheduledEventCreate ?? ignore, @@ -455,6 +456,12 @@ export interface EventHandlers { debug: (text: string, ...args: any[]) => unknown; threadCreate: (bot: Bot, thread: Channel) => unknown; threadDelete: (bot: Bot, thread: Channel) => unknown; + threadMemberUpdate: (bot: Bot, payload: { + id: bigint; + guildId: bigint; + joinedAt: number; + flags: number; + }) => unknown; threadMembersUpdate: ( bot: Bot, payload: { diff --git a/handlers/channels/THREAD_MEMBER_UPDATE.ts b/handlers/channels/THREAD_MEMBER_UPDATE.ts new file mode 100644 index 000000000..404c7bc3f --- /dev/null +++ b/handlers/channels/THREAD_MEMBER_UPDATE.ts @@ -0,0 +1,13 @@ +import { Bot } from "../../bot.ts"; +import { DiscordGatewayPayload, DiscordThreadMemberUpdate } from "../../types/discord.ts"; + +export async function handleThreadMemberUpdate(bot: Bot, data: DiscordGatewayPayload) { + const payload = data.d as DiscordThreadMemberUpdate; + + bot.events.threadMemberUpdate(bot, { + id: bot.transformers.snowflake(payload.id), + guildId: bot.transformers.snowflake(payload.guild_id), + joinedAt: Date.parse(payload.joined_at), + flags: payload.flags, + }); +} diff --git a/types/discord.ts b/types/discord.ts index 4ac365824..418705547 100644 --- a/types/discord.ts +++ b/types/discord.ts @@ -2023,7 +2023,7 @@ export interface DiscordMessageDelete { guild_id?: string; } -// TODO: add docs link +/** https://discord.com/developers/docs/topics/gateway#thread-members-update-thread-members-update-event-fields */ export interface DiscordThreadMembersUpdate { /** The id of the thread */ id: string; @@ -2037,6 +2037,18 @@ export interface DiscordThreadMembersUpdate { member_count: number; } +/** https://discord.com/developers/docs/topics/gateway#thread-member-update */ +export interface DiscordThreadMemberUpdate { + /** The id of the thread */ + id: string; + /** The id of the guild */ + guild_id: string; + /** The timestamp when the bot joined this thread. */ + joined_at: string; + /** The flags this user has for this thread. Not useful for bots. */ + flags: number; +} + /** https://discord.com/developers/docs/topics/gateway#guild-role-create */ export interface DiscordGuildRoleCreate { /** The id of the guild */