From cd29c5f0b10f3340a287c2d9bd27c926576cbb6b Mon Sep 17 00:00:00 2001 From: livelove1987 <82705913+livelove1987@users.noreply.github.com> Date: Mon, 28 Aug 2023 23:47:30 +0200 Subject: [PATCH] fix(bot): properly handle thread list sync event (#3116) * fix: Added threadListSync event support * fix: Added threadListSync event support * Update packages/bot/src/bot.ts --------- Co-authored-by: ITOH --- packages/bot/src/bot.ts | 14 ++++++-------- .../bot/src/handlers/channels/THREAD_LIST_SYNC.ts | 5 +++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/bot/src/bot.ts b/packages/bot/src/bot.ts index 6b1c9dd90..b110ae41f 100644 --- a/packages/bot/src/bot.ts +++ b/packages/bot/src/bot.ts @@ -71,14 +71,11 @@ export function createBot(options: CreateBotOptions): Bot { bot.gateway.connection = await bot.rest.getSessionInfo() // Check for overrides in the configuration - if (!options.gateway?.url) - bot.gateway.url = bot.gateway.connection.url; + if (!options.gateway?.url) bot.gateway.url = bot.gateway.connection.url - if (!options.gateway?.totalShards) - bot.gateway.totalShards = bot.gateway.connection.shards; + if (!options.gateway?.totalShards) bot.gateway.totalShards = bot.gateway.connection.shards - if (!options.gateway?.lastShardId) - bot.gateway.lastShardId = bot.gateway.connection.shards - 1; + if (!options.gateway?.lastShardId) bot.gateway.lastShardId = bot.gateway.connection.shards - 1 } await bot.gateway.spawnShards() @@ -90,7 +87,7 @@ export function createBot(options: CreateBotOptions): Bot { } bot.helpers = createBotHelpers(bot) - if (options.applicationId) bot.applicationId = bot.transformers.snowflake(options.applicationId); + if (options.applicationId) bot.applicationId = bot.transformers.snowflake(options.applicationId) return bot } @@ -144,6 +141,7 @@ export interface EventHandlers { automodActionExecution: (payload: AutoModerationActionExecution) => unknown threadCreate: (thread: Channel) => unknown threadDelete: (thread: Channel) => unknown + threadListSync: (payload: { guildId: bigint; channelIds?: bigint[]; threads: Channel[]; members: ThreadMember[] }) => unknown threadMemberUpdate: (payload: { id: bigint; guildId: bigint; joinedAt: number; flags: number }) => unknown threadMembersUpdate: (payload: { id: bigint; guildId: bigint; addedMembers?: ThreadMember[]; removedMemberIds?: bigint[] }) => unknown threadUpdate: (thread: Channel) => unknown @@ -187,7 +185,7 @@ export interface EventHandlers { guildId?: bigint member?: Member user?: User - emoji: Emoji, + emoji: Emoji messageAuthorId?: bigint }) => unknown reactionRemove: (payload: { userId: bigint; channelId: bigint; messageId: bigint; guildId?: bigint; emoji: Emoji }) => unknown diff --git a/packages/bot/src/handlers/channels/THREAD_LIST_SYNC.ts b/packages/bot/src/handlers/channels/THREAD_LIST_SYNC.ts index e7b9149aa..4bb5e3299 100644 --- a/packages/bot/src/handlers/channels/THREAD_LIST_SYNC.ts +++ b/packages/bot/src/handlers/channels/THREAD_LIST_SYNC.ts @@ -6,7 +6,7 @@ export async function handleThreadListSync(bot: Bot, data: DiscordGatewayPayload const guildId = bot.transformers.snowflake(payload.guild_id) - return { + bot.events.threadListSync?.({ guildId, channelIds: payload.channel_ids?.map((id) => bot.transformers.snowflake(id)), threads: payload.threads.map((thread) => bot.transformers.channel(bot, { channel: thread, guildId })), @@ -14,6 +14,7 @@ export async function handleThreadListSync(bot: Bot, data: DiscordGatewayPayload id: member.id ? bot.transformers.snowflake(member.id) : undefined, userId: member.user_id ? bot.transformers.snowflake(member.user_id) : undefined, joinTimestamp: Date.parse(member.join_timestamp), + flags: member.flags, })), - } + }) }