mirror of
https://github.com/discordeno/discordeno.git
synced 2026-09-17 08:47:22 +00:00
feat(bot): Add guildId to ThreadMember (#4335)
This commit is contained in:
@@ -9,7 +9,7 @@ export async function handleThreadMembersUpdate(bot: Bot, data: DiscordGatewayPa
|
||||
bot.events.threadMembersUpdate({
|
||||
id: bot.transformers.snowflake(payload.id),
|
||||
guildId: bot.transformers.snowflake(payload.guild_id),
|
||||
addedMembers: payload.added_members?.map((member) => bot.transformers.threadMember?.(bot, member)),
|
||||
addedMembers: payload.added_members?.map((member) => bot.transformers.threadMember?.(bot, member, { guildId: payload.guild_id })),
|
||||
removedMemberIds: payload.removed_member_ids?.map((id) => bot.transformers.snowflake(id)),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -138,6 +138,7 @@ import type {
|
||||
Subscription,
|
||||
Template,
|
||||
ThreadMember,
|
||||
ThreadMemberTransformerExtra,
|
||||
User,
|
||||
VoiceState,
|
||||
Webhook,
|
||||
@@ -281,7 +282,7 @@ export function createBotHelpers<TProps extends TransformersDesiredProperties, T
|
||||
const result = await bot.rest.getActiveThreads(guildId)
|
||||
return {
|
||||
threads: result.threads.map((thread) => bot.transformers.channel(bot, { guildId, channel: snakelize(thread) })),
|
||||
members: result.members.map((member) => bot.transformers.threadMember(bot, snakelize(member))),
|
||||
members: result.members.map((member) => bot.transformers.threadMember(bot, snakelize(member), { guildId })),
|
||||
}
|
||||
},
|
||||
getApplicationInfo: async () => {
|
||||
@@ -493,11 +494,11 @@ export function createBotHelpers<TProps extends TransformersDesiredProperties, T
|
||||
getSticker: async (stickerId) => {
|
||||
return bot.transformers.sticker(bot, snakelize(await bot.rest.getSticker(stickerId)))
|
||||
},
|
||||
getThreadMember: async (channelId, userId, options) => {
|
||||
return bot.transformers.threadMember(bot, snakelize(await bot.rest.getThreadMember(channelId, userId, options)))
|
||||
getThreadMember: async (channelId, userId, options, extra) => {
|
||||
return bot.transformers.threadMember(bot, snakelize(await bot.rest.getThreadMember(channelId, userId, options)), extra)
|
||||
},
|
||||
getThreadMembers: async (channelId, options) => {
|
||||
return (await bot.rest.getThreadMembers(channelId, options)).map((res) => bot.transformers.threadMember(bot, snakelize(res)))
|
||||
getThreadMembers: async (channelId, options, extra) => {
|
||||
return (await bot.rest.getThreadMembers(channelId, options)).map((res) => bot.transformers.threadMember(bot, snakelize(res), extra))
|
||||
},
|
||||
getReactions: async (channelId, messageId, reaction, options) => {
|
||||
return (await bot.rest.getReactions(channelId, messageId, reaction, options)).map((res) => bot.transformers.user(bot, snakelize(res)))
|
||||
@@ -1028,8 +1029,8 @@ export type BotHelpers<TProps extends TransformersDesiredProperties, TBehavior e
|
||||
getOwnVoiceState: (guildId: BigString) => Promise<SetupDesiredProps<VoiceState, TProps, TBehavior>>
|
||||
getUserVoiceState: (guildId: BigString, userId: BigString) => Promise<SetupDesiredProps<VoiceState, TProps, TBehavior>>
|
||||
getSticker: (stickerId: BigString) => Promise<SetupDesiredProps<Sticker, TProps, TBehavior>>
|
||||
getThreadMember: (channelId: BigString, userId: BigString, options?: GetThreadMember) => Promise<ThreadMember>
|
||||
getThreadMembers: (channelId: BigString, options?: ListThreadMembers) => Promise<ThreadMember[]>
|
||||
getThreadMember: (channelId: BigString, userId: BigString, options?: GetThreadMember, extra?: ThreadMemberTransformerExtra) => Promise<ThreadMember>
|
||||
getThreadMembers: (channelId: BigString, options?: ListThreadMembers, extra?: ThreadMemberTransformerExtra) => Promise<ThreadMember[]>
|
||||
getReactions: (
|
||||
channelId: BigString,
|
||||
messageId: BigString,
|
||||
|
||||
@@ -155,6 +155,7 @@ import {
|
||||
type Template,
|
||||
type ThreadMember,
|
||||
type ThreadMemberGuildCreate,
|
||||
type ThreadMemberTransformerExtra,
|
||||
transformActivity,
|
||||
transformActivityInstance,
|
||||
transformActivityLocation,
|
||||
@@ -415,7 +416,7 @@ export type Transformers<TProps extends TransformersDesiredProperties, TBehavior
|
||||
subscription: (bot: Bot<TProps, TBehavior>, payload: DiscordSubscription, subscription: SetupDesiredProps<Subscription, TProps, TBehavior>) => any
|
||||
team: (bot: Bot<TProps, TBehavior>, payload: DiscordTeam, team: Team) => any
|
||||
template: (bot: Bot<TProps, TBehavior>, payload: DiscordTemplate, template: Template) => any
|
||||
threadMember: (bot: Bot<TProps, TBehavior>, payload: DiscordThreadMember, threadMember: ThreadMember) => any
|
||||
threadMember: (bot: Bot<TProps, TBehavior>, payload: DiscordThreadMember, threadMember: ThreadMember, extra?: ThreadMemberTransformerExtra) => any
|
||||
threadMemberGuildCreate: (
|
||||
bot: Bot<TProps, TBehavior>,
|
||||
payload: DiscordThreadMemberGuildCreate,
|
||||
@@ -560,7 +561,7 @@ export type Transformers<TProps extends TransformersDesiredProperties, TBehavior
|
||||
subscription: (bot: Bot<TProps, TBehavior>, payload: DiscordSubscription) => SetupDesiredProps<Subscription, TProps, TBehavior>
|
||||
team: (bot: Bot<TProps, TBehavior>, payload: DiscordTeam) => Team
|
||||
template: (bot: Bot<TProps, TBehavior>, payload: DiscordTemplate) => Template
|
||||
threadMember: (bot: Bot<TProps, TBehavior>, payload: DiscordThreadMember) => ThreadMember
|
||||
threadMember: (bot: Bot<TProps, TBehavior>, payload: DiscordThreadMember, extra?: ThreadMemberTransformerExtra) => ThreadMember
|
||||
threadMemberGuildCreate: (bot: Bot<TProps, TBehavior>, payload: DiscordThreadMemberGuildCreate) => ThreadMemberGuildCreate
|
||||
unfurledMediaItem: (bot: Bot<TProps, TBehavior>, payload: DiscordUnfurledMediaItem) => UnfurledMediaItem
|
||||
user: (bot: Bot<TProps, TBehavior>, payload: DiscordUser) => SetupDesiredProps<User, TProps, TBehavior>
|
||||
|
||||
@@ -117,7 +117,8 @@ export function transformChannel(bot: Bot, payload: { channel: DiscordChannel; g
|
||||
if (props.recipients && payload.channel.recipients) channel.recipients = payload.channel.recipients.map((u) => bot.transformers.user(bot, u))
|
||||
if (props.icon && payload.channel.icon) channel.icon = iconHashToBigInt(payload.channel.icon)
|
||||
if (props.applicationId && payload.channel.application_id) channel.applicationId = bot.transformers.snowflake(payload.channel.application_id)
|
||||
if (props.member && payload.channel.member) channel.member = bot.transformers.threadMember(bot, payload.channel.member)
|
||||
if (props.member && payload.channel.member)
|
||||
channel.member = bot.transformers.threadMember(bot, payload.channel.member, { guildId: payload.guildId })
|
||||
if (props.totalMessageSent && payload.channel.total_message_sent !== undefined) channel.totalMessageSent = payload.channel.total_message_sent
|
||||
if (props.availableTags && payload.channel.available_tags)
|
||||
channel.availableTags = payload.channel.available_tags.map((x) => bot.transformers.forumTag(bot, x))
|
||||
|
||||
@@ -1,16 +1,33 @@
|
||||
import type { DiscordThreadMember, DiscordThreadMemberGuildCreate } from '@discordeno/types'
|
||||
import type { BigString, DiscordThreadMember, DiscordThreadMemberGuildCreate } from '@discordeno/types'
|
||||
import type { Bot, ThreadMember, ThreadMemberGuildCreate } from '../index.js'
|
||||
|
||||
export function transformThreadMember(bot: Bot, payload: DiscordThreadMember): ThreadMember {
|
||||
export function transformThreadMember(bot: Bot, payload: DiscordThreadMember, extra?: ThreadMemberTransformerExtra): ThreadMember {
|
||||
const threadMember = {
|
||||
id: payload.id ? bot.transformers.snowflake(payload.id) : undefined,
|
||||
userId: payload.user_id ? bot.transformers.snowflake(payload.user_id) : undefined,
|
||||
joinTimestamp: Date.parse(payload.join_timestamp),
|
||||
flags: payload.flags,
|
||||
member: payload.member ? bot.transformers.member(bot, payload.member, undefined, bot.transformers.snowflake(payload.user_id)) : undefined,
|
||||
member: payload.member
|
||||
? bot.transformers.member(
|
||||
bot,
|
||||
payload.member,
|
||||
extra?.guildId ? bot.transformers.snowflake(extra.guildId) : undefined,
|
||||
bot.transformers.snowflake(payload.user_id),
|
||||
)
|
||||
: undefined,
|
||||
} as ThreadMember
|
||||
|
||||
return bot.transformers.customizers.threadMember(bot, payload, threadMember)
|
||||
return bot.transformers.customizers.threadMember(bot, payload, threadMember, extra)
|
||||
}
|
||||
|
||||
export interface ThreadMemberTransformerExtra {
|
||||
/**
|
||||
* Provide this parameter if you want it to be passed down to the `threadMember.member` object (when `withMembers` is set to `true`),
|
||||
* since Discord does not include a `guildId` in that payload.
|
||||
*
|
||||
* This allows you to cache member objects in the member customizer.
|
||||
*/
|
||||
guildId?: BigString
|
||||
}
|
||||
|
||||
export function transformThreadMemberGuildCreate(bot: Bot, payload: DiscordThreadMemberGuildCreate): ThreadMemberGuildCreate {
|
||||
|
||||
Reference in New Issue
Block a user