mirror of
https://github.com/discordeno/discordeno.git
synced 2026-09-17 08:47:22 +00:00
fix(bot): Review checks to prevent JS from excluding values that might be useful (#3188)
* Explicitly check for null or undefined * fix formatting error This file isn't even modified by this pr, but ok * revert checkIfExists, manually review each case * Update for the RoleFlags and AttachmentFlags * Fix need for TS bang (!) * update invite transformer * update invite transformer * fix consistency
This commit is contained in:
@@ -8,7 +8,7 @@ export function transformAttachment(bot: Bot, payload: DiscordAttachment): Attac
|
||||
if (props.id && payload.id) attachment.id = bot.transformers.snowflake(payload.id)
|
||||
if (props.filename && payload.filename) attachment.filename = payload.filename
|
||||
if (props.contentType && payload.content_type) attachment.contentType = payload.content_type
|
||||
if (props.size && payload.size) attachment.size = payload.size
|
||||
if (props.size) attachment.size = payload.size
|
||||
if (props.url && payload.url) attachment.url = payload.url
|
||||
if (props.proxyUrl && payload.proxy_url) attachment.proxyUrl = payload.proxy_url
|
||||
if (props.height && payload.height) attachment.height = payload.height
|
||||
@@ -17,7 +17,7 @@ export function transformAttachment(bot: Bot, payload: DiscordAttachment): Attac
|
||||
if (props.description && payload.description) attachment.description = payload.description
|
||||
if (props.duration_secs && payload.duration_secs) attachment.duration_secs = payload.duration_secs
|
||||
if (props.waveform && payload.waveform) attachment.waveform = payload.waveform
|
||||
if (props.flags && payload.flags) attachment.flags = payload.flags
|
||||
if (props.flags) attachment.flags = payload.flags
|
||||
|
||||
return bot.transformers.customizers.attachment(bot, payload, attachment)
|
||||
}
|
||||
|
||||
@@ -63,43 +63,42 @@ export const baseChannel: Partial<Channel> & BaseChannel = {
|
||||
}
|
||||
|
||||
export function transformChannel(bot: Bot, payload: { channel: DiscordChannel } & { guildId?: BigString }): Channel {
|
||||
const channel = Object.create(baseChannel)
|
||||
const channel = Object.create(baseChannel) as Channel
|
||||
const props = bot.transformers.desiredProperties.channel
|
||||
channel.toggles = new ChannelToggles(payload.channel)
|
||||
|
||||
if (payload.channel.id && props.id) channel.id = bot.transformers.snowflake(payload.channel.id)
|
||||
if ((payload.guildId ?? payload.channel.guild_id) && props.guildId)
|
||||
channel.guildId = payload.guildId ?? bot.transformers.snowflake(payload.channel.guild_id!)
|
||||
if (props.id && payload.channel.id) channel.id = bot.transformers.snowflake(payload.channel.id)
|
||||
if (props.guildId && (payload.guildId ?? payload.channel.guild_id))
|
||||
channel.guildId = payload.guildId ? bot.transformers.snowflake(payload.guildId) : bot.transformers.snowflake(payload.channel.guild_id!)
|
||||
if (props.type) channel.type = payload.channel.type
|
||||
if (props.position) channel.position = payload.channel.position
|
||||
if (payload.channel.name && props.name) channel.name = payload.channel.name
|
||||
if (payload.channel.topic && props.topic) channel.topic = payload.channel.topic
|
||||
if (payload.channel.last_message_id && props.lastMessageId) channel.lastMessageId = bot.transformers.snowflake(payload.channel.last_message_id)
|
||||
if (payload.channel.bitrate && props.bitrate) channel.bitrate = payload.channel.bitrate
|
||||
if (props.name && payload.channel.name) channel.name = payload.channel.name
|
||||
if (props.topic && payload.channel.topic) channel.topic = payload.channel.topic
|
||||
if (props.lastMessageId && payload.channel.last_message_id) channel.lastMessageId = bot.transformers.snowflake(payload.channel.last_message_id)
|
||||
if (props.bitrate && payload.channel.bitrate) channel.bitrate = payload.channel.bitrate
|
||||
if (props.userLimit) channel.userLimit = payload.channel.user_limit
|
||||
if (props.rateLimitPerUser) channel.rateLimitPerUser = payload.channel.rate_limit_per_user
|
||||
if (payload.channel.owner_id && props.ownerId) channel.ownerId = bot.transformers.snowflake(payload.channel.owner_id)
|
||||
if (payload.channel.last_pin_timestamp && props.lastPinTimestamp) channel.lastPinTimestamp = Date.parse(payload.channel.last_pin_timestamp)
|
||||
if (payload.channel.rtc_region && props.rtcRegion) channel.rtcRegion = payload.channel.rtc_region
|
||||
if (payload.channel.video_quality_mode && props.videoQualityMode) channel.videoQualityMode = payload.channel.video_quality_mode
|
||||
if (payload.channel.message_count && props.messageCount) channel.messageCount = payload.channel.message_count
|
||||
if (payload.channel.member_count && props.memberCount) channel.memberCount = payload.channel.member_count
|
||||
if (props.ownerId && payload.channel.owner_id) channel.ownerId = bot.transformers.snowflake(payload.channel.owner_id)
|
||||
if (props.lastPinTimestamp && payload.channel.last_pin_timestamp) channel.lastPinTimestamp = Date.parse(payload.channel.last_pin_timestamp)
|
||||
if (props.rtcRegion && payload.channel.rtc_region) channel.rtcRegion = payload.channel.rtc_region
|
||||
if (props.videoQualityMode && payload.channel.video_quality_mode) channel.videoQualityMode = payload.channel.video_quality_mode
|
||||
if (props.messageCount) channel.messageCount = payload.channel.message_count
|
||||
if (props.memberCount) channel.memberCount = payload.channel.member_count
|
||||
if (props.archiveTimestamp || props.createTimestamp || props.autoArchiveDuration) {
|
||||
channel.internalThreadMetadata = {}
|
||||
if (payload.channel.thread_metadata?.archive_timestamp && props.archiveTimestamp)
|
||||
channel.internalThreadMetadata = {} as NonNullable<Channel['internalThreadMetadata']>
|
||||
if (props.archiveTimestamp && payload.channel.thread_metadata?.archive_timestamp)
|
||||
channel.internalThreadMetadata.archiveTimestamp = Date.parse(payload.channel.thread_metadata.archive_timestamp)
|
||||
if (payload.channel.thread_metadata?.create_timestamp && props.createTimestamp)
|
||||
if (props.createTimestamp && payload.channel.thread_metadata?.create_timestamp)
|
||||
channel.internalThreadMetadata.createTimestamp = Date.parse(payload.channel.thread_metadata.create_timestamp)
|
||||
if (payload.channel.thread_metadata?.auto_archive_duration && props.autoArchiveDuration)
|
||||
if (props.autoArchiveDuration && payload.channel.thread_metadata?.auto_archive_duration)
|
||||
channel.internalThreadMetadata.autoArchiveDuration = payload.channel.thread_metadata.auto_archive_duration
|
||||
}
|
||||
if (payload.channel.default_auto_archive_duration && props.autoArchiveDuration)
|
||||
if (props.autoArchiveDuration && payload.channel.default_auto_archive_duration)
|
||||
channel.autoArchiveDuration = payload.channel.default_auto_archive_duration
|
||||
if (payload.channel.permissions && props.permissions) channel.permissions = new Permissions(payload.channel.permissions)
|
||||
if (payload.channel.flags && props.flags) channel.flags = payload.channel.flags
|
||||
if (payload.channel.permission_overwrites && props.permissionOverwrites) {
|
||||
if (props.permissions && payload.channel.permissions) channel.permissions = new Permissions(payload.channel.permissions)
|
||||
if (props.flags) channel.flags = payload.channel.flags
|
||||
if (props.permissionOverwrites && payload.channel.permission_overwrites)
|
||||
channel.internalOverwrites = payload.channel.permission_overwrites.map((o) => packOverwrites(o.allow ?? '0', o.deny ?? '0', o.id, o.type))
|
||||
}
|
||||
if (props.parentId && payload.channel.parent_id) channel.parentId = bot.transformers.snowflake(payload.channel.parent_id)
|
||||
|
||||
return bot.transformers.customizers.channel(bot, payload.channel, channel)
|
||||
@@ -163,7 +162,7 @@ export interface Channel extends BaseChannel {
|
||||
/** For guild channels: Id of the parent category for a channel (each parent category can contain up to 50 channels), for threads: id of the text channel this thread was created */
|
||||
parentId?: bigint
|
||||
/** When the last pinned message was pinned. This may be null in events such as GUILD_CREATE when a message is not pinned. */
|
||||
lastPinTimestamp?: string
|
||||
lastPinTimestamp?: number
|
||||
/** Voice region id for the voice or stage channel, automatic when set to null */
|
||||
rtcRegion?: string
|
||||
/** The camera video quality mode of the voice channel, 1 when not present */
|
||||
@@ -188,7 +187,7 @@ export interface Channel extends BaseChannel {
|
||||
/** Thread member object for the current user, if they have joined the thread, only included on certain API endpoints */
|
||||
member?: DiscordThreadMember
|
||||
/** Default duration for newly created threads, in minutes, to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 */
|
||||
default_auto_archive_duration?: number
|
||||
autoArchiveDuration?: number
|
||||
/** computed permissions for the invoking user in the channel, including overwrites, only included when part of the resolved data received on a slash command interaction. This does not include implicit permissions, which may need to be checked separately. */
|
||||
permissions?: Permissions
|
||||
/** The flags of the channel */
|
||||
|
||||
@@ -37,23 +37,22 @@ export function transformGuild(bot: Bot, payload: { guild: DiscordGuild } & { sh
|
||||
if (props.approximateMemberCount && payload.guild.approximate_member_count) guild.approximateMemberCount = payload.guild.approximate_member_count
|
||||
if (props.approximatePresenceCount && payload.guild.approximate_presence_count)
|
||||
guild.approximatePresenceCount = payload.guild.approximate_presence_count
|
||||
if (props.defaultMessageNotifications && payload.guild.default_message_notifications)
|
||||
guild.defaultMessageNotifications = payload.guild.default_message_notifications
|
||||
if (props.defaultMessageNotifications) guild.defaultMessageNotifications = payload.guild.default_message_notifications
|
||||
if (props.description && payload.guild.description) guild.description = payload.guild.description
|
||||
if (props.toggles) guild.toggles = new GuildToggles(payload.guild)
|
||||
if (props.explicitContentFilter && payload.guild.explicit_content_filter) guild.explicitContentFilter = payload.guild.explicit_content_filter
|
||||
if (props.explicitContentFilter) guild.explicitContentFilter = payload.guild.explicit_content_filter
|
||||
if (props.maxMembers && payload.guild.max_members) guild.maxMembers = payload.guild.max_members
|
||||
if (props.maxPresences && payload.guild.max_presences) guild.maxPresences = payload.guild.max_presences ?? undefined
|
||||
if (props.maxVideoChannelUsers && payload.guild.max_video_channel_users) guild.maxVideoChannelUsers = payload.guild.max_video_channel_users
|
||||
if (props.mfaLevel && payload.guild.mfa_level) guild.mfaLevel = payload.guild.mfa_level
|
||||
if (props.mfaLevel) guild.mfaLevel = payload.guild.mfa_level
|
||||
if (props.name && payload.guild.name) guild.name = payload.guild.name
|
||||
if (props.nsfwLevel && payload.guild.nsfw_level) guild.nsfwLevel = payload.guild.nsfw_level
|
||||
if (props.nsfwLevel) guild.nsfwLevel = payload.guild.nsfw_level
|
||||
if (props.preferredLocale && payload.guild.preferred_locale) guild.preferredLocale = payload.guild.preferred_locale
|
||||
if (props.premiumSubscriptionCount && payload.guild.premium_subscription_count)
|
||||
if (props.premiumSubscriptionCount && payload.guild.premium_subscription_count !== undefined)
|
||||
guild.premiumSubscriptionCount = payload.guild.premium_subscription_count
|
||||
if (props.premiumTier && payload.guild.premium_tier) guild.premiumTier = payload.guild.premium_tier
|
||||
if (props.premiumTier) guild.premiumTier = payload.guild.premium_tier
|
||||
if (props.stageInstances && payload.guild.stage_instances)
|
||||
guild.stageInstances = payload.guild.stage_instances?.map((si) => ({
|
||||
guild.stageInstances = payload.guild.stage_instances.map((si) => ({
|
||||
/** The id of this Stage instance */
|
||||
id: bot.transformers.snowflake(si.id),
|
||||
/** The guild id of the associated Stage channel */
|
||||
@@ -107,7 +106,7 @@ export function transformGuild(bot: Bot, payload: { guild: DiscordGuild } & { sh
|
||||
)
|
||||
if (props.systemChannelFlags && payload.guild.system_channel_flags) guild.systemChannelFlags = payload.guild.system_channel_flags
|
||||
if (props.vanityUrlCode && payload.guild.vanity_url_code) guild.vanityUrlCode = payload.guild.vanity_url_code
|
||||
if (props.verificationLevel && payload.guild.verification_level) guild.verificationLevel = payload.guild.verification_level
|
||||
if (props.verificationLevel) guild.verificationLevel = payload.guild.verification_level
|
||||
if (props.welcomeScreen && payload.guild.welcome_screen)
|
||||
guild.welcomeScreen = {
|
||||
description: payload.guild.welcome_screen.description ?? undefined,
|
||||
@@ -121,7 +120,7 @@ export function transformGuild(bot: Bot, payload: { guild: DiscordGuild } & { sh
|
||||
if (props.discoverySplash && payload.guild.discovery_splash) guild.discoverySplash = iconHashToBigInt(payload.guild.discovery_splash)
|
||||
if (props.joinedAt && payload.guild.joined_at) guild.joinedAt = Date.parse(payload.guild.joined_at)
|
||||
if (props.memberCount && payload.guild.member_count) guild.memberCount = payload.guild.member_count ?? 0
|
||||
if (props.shardId && payload.shardId) guild.shardId = payload.shardId
|
||||
if (props.shardId) guild.shardId = payload.shardId
|
||||
if (props.icon && payload.guild.icon) guild.icon = iconHashToBigInt(payload.guild.icon)
|
||||
if (props.banner && payload.guild.banner) guild.banner = iconHashToBigInt(payload.guild.banner)
|
||||
if (props.splash && payload.guild.splash) guild.splash = iconHashToBigInt(payload.guild.splash)
|
||||
|
||||
@@ -158,21 +158,21 @@ export function transformInteraction(bot: Bot, payload: DiscordInteraction): Int
|
||||
interaction.bot = bot
|
||||
interaction.acknowledged = false
|
||||
|
||||
if (payload.id && props.id) interaction.id = bot.transformers.snowflake(payload.id)
|
||||
if (payload.application_id && props.applicationId) interaction.applicationId = bot.transformers.snowflake(payload.application_id)
|
||||
if (payload.type && props.type) interaction.type = payload.type
|
||||
if (payload.token && props.token) interaction.token = payload.token
|
||||
if (payload.version && props.version) interaction.version = payload.version
|
||||
if (payload.locale && props.locale) interaction.locale = payload.locale
|
||||
if (payload.guild_locale && props.guildLocale) interaction.guildLocale = payload.guild_locale
|
||||
if (guildId && props.guildId) interaction.guildId = guildId
|
||||
if (props.user) interaction.user = user
|
||||
if (payload.app_permissions && props.appPermissions) interaction.appPermissions = bot.transformers.snowflake(payload.app_permissions)
|
||||
if (payload.message && props.message) interaction.message = bot.transformers.message(bot, payload.message)
|
||||
if (payload.channel && props.channel) interaction.channel = bot.transformers.channel(bot, { channel: payload.channel as DiscordChannel, guildId })
|
||||
if (payload.channel_id && props.channelId) interaction.channelId = bot.transformers.snowflake(payload.channel_id)
|
||||
if (payload.member && guildId && props.member) interaction.member = bot.transformers.member(bot, payload.member, guildId, user.id)
|
||||
if (payload.data && props.data) {
|
||||
if (props.id && payload.id) interaction.id = bot.transformers.snowflake(payload.id)
|
||||
if (props.applicationId && payload.application_id) interaction.applicationId = bot.transformers.snowflake(payload.application_id)
|
||||
if (props.type && payload.type) interaction.type = payload.type
|
||||
if (props.token && payload.token) interaction.token = payload.token
|
||||
if (props.version && payload.version) interaction.version = payload.version
|
||||
if (props.locale && payload.locale) interaction.locale = payload.locale
|
||||
if (props.guildLocale && payload.guild_locale) interaction.guildLocale = payload.guild_locale
|
||||
if (props.guildId && guildId) interaction.guildId = guildId
|
||||
if (props.user && user) interaction.user = user
|
||||
if (props.appPermissions && payload.app_permissions) interaction.appPermissions = bot.transformers.snowflake(payload.app_permissions)
|
||||
if (props.message && payload.message) interaction.message = bot.transformers.message(bot, payload.message)
|
||||
if (props.channel && payload.channel) interaction.channel = bot.transformers.channel(bot, { channel: payload.channel as DiscordChannel, guildId })
|
||||
if (props.channelId && payload.channel_id) interaction.channelId = bot.transformers.snowflake(payload.channel_id)
|
||||
if (props.member && guildId && payload.member) interaction.member = bot.transformers.member(bot, payload.member, guildId, user.id)
|
||||
if (props.data && payload.data) {
|
||||
interaction.data = {
|
||||
type: payload.data.type,
|
||||
componentType: payload.data.component_type,
|
||||
|
||||
@@ -9,8 +9,8 @@ export function transformInvite(bot: Bot, payload: { invite: DiscordInviteCreate
|
||||
if (props.code && payload.invite.code) invite.code = payload.invite.code
|
||||
if (props.createdAt && payload.invite.created_at) invite.createdAt = Date.parse(payload.invite.created_at)
|
||||
if (props.inviter && payload.invite.inviter) invite.inviter = bot.transformers.user(bot, payload.invite.inviter)
|
||||
if (props.maxAge && payload.invite.max_age) invite.maxAge = payload.invite.max_age
|
||||
if (props.maxUses && payload.invite.max_uses) invite.maxUses = payload.invite.max_uses
|
||||
if (props.maxAge) invite.maxAge = payload.invite.max_age
|
||||
if (props.maxUses) invite.maxUses = payload.invite.max_uses
|
||||
if (props.targetType && payload.invite.target_type) invite.targetType = payload.invite.target_type
|
||||
if (props.targetUser && payload.invite.target_user) invite.targetUser = bot.transformers.user(bot, payload.invite.target_user)
|
||||
if (props.targetApplication && payload.invite.target_application)
|
||||
@@ -26,20 +26,15 @@ export function transformInvite(bot: Bot, payload: { invite: DiscordInviteCreate
|
||||
if (props.guildId && payload.invite.guild?.id) invite.guildId = bot.transformers.snowflake(payload.invite.guild.id)
|
||||
if (props.approximateMemberCount && payload.invite.approximate_member_count)
|
||||
invite.approximateMemberCount = payload.invite.approximate_member_count
|
||||
if (props.approximatePresenceCount && payload.invite.approximate_presence_count)
|
||||
if (props.approximatePresenceCount && payload.invite.approximate_presence_count !== undefined)
|
||||
invite.approximatePresenceCount = payload.invite.approximate_presence_count
|
||||
if (props.guildScheduledEvent && payload.invite.guild_scheduled_event) {
|
||||
invite.guildScheduledEvent = payload.invite.guild_scheduled_event
|
||||
? bot.transformers.scheduledEvent(bot, payload.invite.guild_scheduled_event)
|
||||
: undefined
|
||||
}
|
||||
if (props.guildScheduledEvent && payload.invite.guild_scheduled_event)
|
||||
invite.guildScheduledEvent = bot.transformers.scheduledEvent(bot, payload.invite.guild_scheduled_event)
|
||||
if (props.stageInstance && invite.guildId && payload.invite.stage_instance) {
|
||||
invite.stageInstance = payload.invite.stage_instance
|
||||
? bot.transformers.inviteStageInstance(bot, {
|
||||
...payload.invite.stage_instance,
|
||||
guildId: invite.guildId,
|
||||
})
|
||||
: undefined
|
||||
invite.stageInstance = bot.transformers.inviteStageInstance(bot, {
|
||||
...payload.invite.stage_instance,
|
||||
guildId: invite.guildId,
|
||||
})
|
||||
}
|
||||
if (props.expiresAt && payload.invite.expires_at) {
|
||||
invite.expiresAt = Date.parse(payload.invite.expires_at)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import type { BigString, DiscordMember } from '@discordeno/types'
|
||||
import { iconHashToBigInt } from '@discordeno/utils'
|
||||
import type { Bot } from '../bot.js'
|
||||
import { Permissions } from './toggles/Permissions.js'
|
||||
import { MemberToggles } from './toggles/member.js'
|
||||
import { Permissions } from './toggles/Permissions.js'
|
||||
import type { User } from './user.js'
|
||||
|
||||
const baseMember: Partial<Member> & BaseMember = {
|
||||
@@ -21,17 +21,17 @@ export function transformMember(bot: Bot, payload: DiscordMember, guildId: BigSt
|
||||
const member: Member = Object.create(baseMember)
|
||||
const props = bot.transformers.desiredProperties.member
|
||||
|
||||
if (userId && props.id) member.id = typeof userId === 'string' ? bot.transformers.snowflake(userId) : userId
|
||||
if (guildId && props.guildId) member.guildId = typeof guildId === 'string' ? bot.transformers.snowflake(guildId) : guildId
|
||||
if (payload.user && props.user) member.user = bot.transformers.user(bot, payload.user)
|
||||
if (payload.nick && props.nick) member.nick = payload.nick
|
||||
if (payload.roles && props.roles) member.roles = payload.roles.map((id) => bot.transformers.snowflake(id))
|
||||
if (payload.joined_at && props.joinedAt) member.joinedAt = Date.parse(payload.joined_at)
|
||||
if (payload.premium_since && props.premiumSince) member.premiumSince = Date.parse(payload.premium_since)
|
||||
if (payload.communication_disabled_until && props.communicationDisabledUntil)
|
||||
if (props.id && userId) member.id = typeof userId === 'string' ? bot.transformers.snowflake(userId) : userId
|
||||
if (props.guildId && guildId) member.guildId = typeof guildId === 'string' ? bot.transformers.snowflake(guildId) : guildId
|
||||
if (props.user && payload.user) member.user = bot.transformers.user(bot, payload.user)
|
||||
if (props.nick && payload.nick) member.nick = payload.nick
|
||||
if (props.roles && payload.roles) member.roles = payload.roles.map((id) => bot.transformers.snowflake(id))
|
||||
if (props.joinedAt && payload.joined_at) member.joinedAt = Date.parse(payload.joined_at)
|
||||
if (props.premiumSince && payload.premium_since) member.premiumSince = Date.parse(payload.premium_since)
|
||||
if (props.communicationDisabledUntil && payload.communication_disabled_until)
|
||||
member.communicationDisabledUntil = Date.parse(payload.communication_disabled_until)
|
||||
if (payload.avatar && props.avatar) member.avatar = iconHashToBigInt(payload.avatar)
|
||||
if (payload.permissions && props.permissions) member.permissions = new Permissions(payload.permissions)
|
||||
if (props.avatar && payload.avatar) member.avatar = iconHashToBigInt(payload.avatar)
|
||||
if (props.permissions && payload.permissions) member.permissions = new Permissions(payload.permissions)
|
||||
if (props.deaf || props.mute || props.pending) {
|
||||
member.toggles = new MemberToggles(payload)
|
||||
}
|
||||
|
||||
@@ -271,16 +271,15 @@ export function transformMessage(bot: Bot, payload: DiscordMessage): Message {
|
||||
const props = bot.transformers.desiredProperties.message
|
||||
|
||||
if (props.author && payload.author) message.author = bot.transformers.user(bot, payload.author)
|
||||
if (payload.application_id && props.applicationId) message.applicationId = bot.transformers.snowflake(payload.application_id)
|
||||
if (payload.attachments?.length && props.attachments) {
|
||||
if (props.applicationId && payload.application_id) message.applicationId = bot.transformers.snowflake(payload.application_id)
|
||||
if (props.attachments && payload.attachments?.length)
|
||||
message.attachments = payload.attachments.map((attachment) => bot.transformers.attachment(bot, attachment))
|
||||
}
|
||||
if (props.channelId && payload.channel_id) message.channelId = bot.transformers.snowflake(payload.channel_id)
|
||||
if (props.components && payload.components?.length) message.components = payload.components.map((comp) => bot.transformers.component(bot, comp))
|
||||
if (props.content && payload.content) message.content = payload.content ?? EMPTY_STRING
|
||||
if (payload.edited_timestamp && props.editedTimestamp) message.editedTimestamp = Date.parse(payload.edited_timestamp)
|
||||
if (payload.embeds?.length && props.embeds) message.embeds = payload.embeds.map((embed) => bot.transformers.embed(bot, embed))
|
||||
if (guildId && props.guildId) message.guildId = guildId
|
||||
if (props.editedTimestamp && payload.edited_timestamp) message.editedTimestamp = Date.parse(payload.edited_timestamp)
|
||||
if (props.embeds && payload.embeds?.length) message.embeds = payload.embeds.map((embed) => bot.transformers.embed(bot, embed))
|
||||
if (props.guildId && guildId) message.guildId = guildId
|
||||
if (props.id && payload.id) message.id = bot.transformers.snowflake(payload.id)
|
||||
if (payload.interaction) {
|
||||
const interaction = {} as NonNullable<Message['interaction']>
|
||||
@@ -309,7 +308,7 @@ export function transformMessage(bot: Bot, payload: DiscordMessage): Message {
|
||||
|
||||
if (edited) message.interaction = interaction
|
||||
}
|
||||
if (props.member && payload.member && guildId) message.member = bot.transformers.member(bot, payload.member, guildId, userId)
|
||||
if (props.member && guildId && payload.member) message.member = bot.transformers.member(bot, payload.member, guildId, userId)
|
||||
if (payload.mention_everyone) message.mentionEveryone = true
|
||||
if (props.mentionedChannelIds && payload.mention_channels?.length) {
|
||||
message.mentionedChannelIds = [
|
||||
@@ -322,12 +321,9 @@ export function transformMessage(bot: Bot, payload: DiscordMessage): Message {
|
||||
),
|
||||
]
|
||||
}
|
||||
if (props.mentionedRoleIds && payload.mention_roles?.length) {
|
||||
if (props.mentionedRoleIds && payload.mention_roles?.length)
|
||||
message.mentionedRoleIds = payload.mention_roles.map((id) => bot.transformers.snowflake(id))
|
||||
}
|
||||
if (props.mentions && payload.mentions?.length) {
|
||||
message.mentions = payload.mentions.map((user) => bot.transformers.user(bot, user))
|
||||
}
|
||||
if (props.mentions && payload.mentions?.length) message.mentions = payload.mentions.map((user) => bot.transformers.user(bot, user))
|
||||
if (payload.message_reference) {
|
||||
const reference = {} as NonNullable<Message['messageReference']>
|
||||
let edited = false
|
||||
@@ -347,9 +343,9 @@ export function transformMessage(bot: Bot, payload: DiscordMessage): Message {
|
||||
|
||||
if (edited) message.messageReference = reference
|
||||
}
|
||||
if (payload.nonce && props.nonce) message.nonce = payload.nonce
|
||||
if (props.nonce && payload.nonce) message.nonce = payload.nonce
|
||||
if (payload.pinned) message.pinned = true
|
||||
if (payload.reactions?.length && props.reactions) {
|
||||
if (props.reactions && payload.reactions?.length) {
|
||||
message.reactions = payload.reactions.map((reaction) => ({
|
||||
me: reaction.me,
|
||||
meBurst: reaction.me_burst,
|
||||
@@ -370,8 +366,8 @@ export function transformMessage(bot: Bot, payload: DiscordMessage): Message {
|
||||
}))
|
||||
if (payload.tts) message.tts = true
|
||||
if (props.thread && payload.thread) message.thread = bot.transformers.channel(bot, { channel: payload.thread, guildId })
|
||||
if (props.type && props.type) message.type = payload.type
|
||||
if (payload.webhook_id && props.webhookId) message.webhookId = bot.transformers.snowflake(payload.webhook_id)
|
||||
if (props.type) message.type = payload.type
|
||||
if (props.webhookId && payload.webhook_id) message.webhookId = bot.transformers.snowflake(payload.webhook_id)
|
||||
|
||||
return bot.transformers.customizers.message(bot, payload, message)
|
||||
}
|
||||
|
||||
@@ -43,21 +43,21 @@ const baseRole: Partial<Role> & BaseRole = {
|
||||
export function transformRole(bot: Bot, payload: { role: DiscordRole } & { guildId: BigString }): Role {
|
||||
const role: Role = Object.create(baseRole)
|
||||
const props = bot.transformers.desiredProperties.role
|
||||
if (payload.role.id && props.id) role.id = bot.transformers.snowflake(payload.role.id)
|
||||
if (payload.role.name && props.name) role.name = payload.role.name
|
||||
if (props.id && payload.role.id) role.id = bot.transformers.snowflake(payload.role.id)
|
||||
if (props.name && payload.role.name) role.name = payload.role.name
|
||||
if (props.position) role.position = payload.role.position
|
||||
if (props.guildId && payload.guildId) role.guildId = bot.transformers.snowflake(payload.guildId)
|
||||
if (props.color && payload.role.color) role.color = payload.role.color
|
||||
if (payload.role.permissions && props.permissions) role.permissions = new Permissions(payload.role.permissions)
|
||||
if (payload.role.icon && props.icon) role.icon = iconHashToBigInt(payload.role.icon)
|
||||
if (payload.role.unicode_emoji && props.unicodeEmoji) role.unicodeEmoji = payload.role.unicode_emoji
|
||||
if (payload.role.flags && props.flags) role.flags = payload.role.flags
|
||||
if (payload.role.tags && (props.botId || props.integrationId || props.subscriptionListingId)) {
|
||||
if (props.permissions && payload.role.permissions) role.permissions = new Permissions(payload.role.permissions)
|
||||
if (props.icon && payload.role.icon) role.icon = iconHashToBigInt(payload.role.icon)
|
||||
if (props.unicodeEmoji && payload.role.unicode_emoji) role.unicodeEmoji = payload.role.unicode_emoji
|
||||
if (props.flags) role.flags = payload.role.flags
|
||||
if ((props.botId || props.integrationId || props.subscriptionListingId) && payload.role.tags) {
|
||||
role.internalTags = {}
|
||||
if (payload.role.tags.bot_id && props.botId) role.internalTags.botId = bot.transformers.snowflake(payload.role.tags.bot_id)
|
||||
if (payload.role.tags.integration_id && props.integrationId)
|
||||
if (props.botId && payload.role.tags.bot_id) role.internalTags.botId = bot.transformers.snowflake(payload.role.tags.bot_id)
|
||||
if (props.integrationId && payload.role.tags.integration_id)
|
||||
role.internalTags.integrationId = bot.transformers.snowflake(payload.role.tags.integration_id)
|
||||
if (payload.role.tags.subscription_listing_id && props.subscriptionListingId)
|
||||
if (props.subscriptionListingId && payload.role.tags.subscription_listing_id)
|
||||
role.internalTags.subscriptionListingId = bot.transformers.snowflake(payload.role.tags.subscription_listing_id)
|
||||
}
|
||||
if (props.hoist || props.managed || props.mentionable) {
|
||||
|
||||
@@ -24,7 +24,7 @@ export function transformScheduledEvent(bot: Bot, payload: DiscordScheduledEvent
|
||||
if (props.privacyLevel && payload.privacy_level) scheduledEvent.privacyLevel = payload.privacy_level
|
||||
if (props.status && payload.status) scheduledEvent.status = payload.status
|
||||
if (props.entityType && payload.entity_type) scheduledEvent.entityType = payload.entity_type
|
||||
if (props.userCount && payload.user_count) scheduledEvent.userCount = payload.user_count ?? 0
|
||||
if (props.userCount) scheduledEvent.userCount = payload.user_count ?? 0
|
||||
if (props.location && payload.entity_metadata?.location) scheduledEvent.location = payload.entity_metadata.location
|
||||
if (props.image && payload.image) scheduledEvent.image = iconHashToBigInt(payload.image)
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@ export function transformInviteStageInstance(bot: Bot, payload: DiscordInviteSta
|
||||
),
|
||||
)
|
||||
}
|
||||
if (props.participantCount && payload.participant_count) inviteStageInstance.participantCount = payload.participant_count
|
||||
if (props.speakerCount && payload.speaker_count) inviteStageInstance.participantCount = payload.participant_count
|
||||
if (props.participantCount) inviteStageInstance.participantCount = payload.participant_count
|
||||
if (props.speakerCount) inviteStageInstance.participantCount = payload.participant_count
|
||||
if (props.topic && payload.topic) inviteStageInstance.topic = payload.topic
|
||||
|
||||
return bot.transformers.customizers.inviteStageInstance(bot, payload, inviteStageInstance)
|
||||
|
||||
@@ -15,7 +15,7 @@ export function transformSticker(bot: Bot, payload: DiscordSticker): Sticker {
|
||||
if (props.available && payload.available) sticker.available = payload.available
|
||||
if (props.guildId && payload.guild_id) sticker.guildId = bot.transformers.snowflake(payload.guild_id)
|
||||
if (props.user && payload.user) sticker.user = bot.transformers.user(bot, payload.user)
|
||||
if (props.sortValue && payload.sort_value) sticker.sortValue = payload.sort_value
|
||||
if (props.sortValue && payload.sort_value !== undefined) sticker.sortValue = payload.sort_value
|
||||
|
||||
return bot.transformers.customizers.sticker(bot, payload, sticker)
|
||||
}
|
||||
|
||||
@@ -30,17 +30,17 @@ export function transformUser(bot: Bot, payload: DiscordUser): User {
|
||||
}
|
||||
if (props.flags) user.flags = new ToggleBitfield(payload.flags)
|
||||
if (props.publicFlags) user.publicFlags = new ToggleBitfield(payload.public_flags)
|
||||
if (payload.id && props.id) user.id = bot.transformers.snowflake(payload.id)
|
||||
if (payload.username && props.username) user.username = payload.username
|
||||
if (payload.global_name && props.globalName) user.globalName = payload.global_name
|
||||
if (payload.discriminator && props.discriminator) user.discriminator = payload.discriminator
|
||||
if (payload.locale && props.locale) user.locale = payload.locale
|
||||
if (payload.email && props.email) user.email = payload.email
|
||||
if (payload.premium_type && props.premiumType) user.premiumType = payload.premium_type
|
||||
if (payload.avatar && props.avatar) user.avatar = iconHashToBigInt(payload.avatar)
|
||||
if (payload.banner && props.banner) user.banner = iconHashToBigInt(payload.banner)
|
||||
if (payload.avatar_decoration && props.avatarDecoration) user.avatarDecoration = iconHashToBigInt(payload.avatar_decoration)
|
||||
if (payload.accent_color && props.accentColor) user.accentColor = payload.accent_color
|
||||
if (props.id && payload.id) user.id = bot.transformers.snowflake(payload.id)
|
||||
if (props.username && payload.username) user.username = payload.username
|
||||
if (props.globalName && payload.global_name) user.globalName = payload.global_name
|
||||
if (props.discriminator && payload.discriminator) user.discriminator = payload.discriminator
|
||||
if (props.locale && payload.locale) user.locale = payload.locale
|
||||
if (props.email && payload.email) user.email = payload.email
|
||||
if (props.premiumType && payload.premium_type) user.premiumType = payload.premium_type
|
||||
if (props.avatar && payload.avatar) user.avatar = iconHashToBigInt(payload.avatar)
|
||||
if (props.banner && payload.banner) user.banner = iconHashToBigInt(payload.banner)
|
||||
if (props.avatarDecoration && payload.avatar_decoration) user.avatarDecoration = iconHashToBigInt(payload.avatar_decoration)
|
||||
if (props.accentColor && payload.accent_color) user.accentColor = payload.accent_color
|
||||
|
||||
return bot.transformers.customizers.user(bot, payload, user)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user