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:
Fleny
2023-12-22 05:06:24 +00:00
committed by GitHub
parent e2a34082bc
commit 05ccdd9a9b
12 changed files with 107 additions and 118 deletions
+2 -2
View File
@@ -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)
}
+24 -25
View File
@@ -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 */
+9 -10
View File
@@ -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)
+15 -15
View File
@@ -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 -14
View File
@@ -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)
+11 -11
View File
@@ -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)
}
+12 -16
View File
@@ -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)
}
+10 -10
View File
@@ -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)
+1 -1
View File
@@ -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)
}
+11 -11
View File
@@ -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)
}