fix: add option to enable all desire props

This commit is contained in:
Skillz4Killz
2023-10-28 13:25:02 +00:00
parent eec2927285
commit ea9fca102a

View File

@@ -44,6 +44,7 @@ import type {
DiscordWebhook,
DiscordWelcomeScreen,
} from '@discordeno/types'
import { logger } from '@discordeno/utils'
import { bigintToSnowflake, snowflakeToBigint, type Bot } from './index.js'
import { transformActivity, type Activity } from './transformers/activity.js'
import { transformApplication, type Application } from './transformers/application.js'
@@ -502,7 +503,20 @@ export interface Transformers {
template: (bot: Bot, payload: DiscordTemplate) => Template
}
export function createTransformers(options: Partial<Transformers>): Transformers {
export interface CreateTransformerOptions {
defaultDesiredPropertiesValue: boolean
}
export function createTransformers(options: Partial<Transformers>, opts?: CreateTransformerOptions): Transformers {
if (opts?.defaultDesiredPropertiesValue) {
logger.warn('[Transformers] WARNING WARNING WARNING!')
logger.warn(
'[Transformers] The defaultDesiredPropertiesValue property is being used and it is NOT RECOMMENDED. In fact it was WARNED AGAINST. It is extremely bad practice.',
)
logger.warn('[Transformers] It is a bit painful to work with and get started, but it has massive long term benefits.')
logger.warn('[Transformers] ----------------------------------------------------------------')
}
return {
customizers: {
channel(bot, payload, channel) {
@@ -628,287 +642,287 @@ export function createTransformers(options: Partial<Transformers>): Transformers
},
desiredProperties: {
attachment: {
id: false,
filename: false,
contentType: false,
size: false,
url: false,
proxyUrl: false,
height: false,
width: false,
ephemeral: false,
description: false,
id: opts?.defaultDesiredPropertiesValue ?? false,
filename: opts?.defaultDesiredPropertiesValue ?? false,
contentType: opts?.defaultDesiredPropertiesValue ?? false,
size: opts?.defaultDesiredPropertiesValue ?? false,
url: opts?.defaultDesiredPropertiesValue ?? false,
proxyUrl: opts?.defaultDesiredPropertiesValue ?? false,
height: opts?.defaultDesiredPropertiesValue ?? false,
width: opts?.defaultDesiredPropertiesValue ?? false,
ephemeral: opts?.defaultDesiredPropertiesValue ?? false,
description: opts?.defaultDesiredPropertiesValue ?? false,
},
channel: {
type: false,
position: false,
name: false,
topic: false,
nsfw: false,
bitrate: false,
userLimit: false,
rateLimitPerUser: false,
rtcRegion: false,
videoQualityMode: false,
guildId: false,
lastPinTimestamp: false,
permissionOverwrites: false,
id: false,
permissions: false,
lastMessageId: false,
ownerId: false,
applicationId: false,
managed: false,
parentId: false,
memberCount: false,
messageCount: false,
archiveTimestamp: false,
autoArchiveDuration: false,
botIsMember: false,
archived: false,
locked: false,
invitable: false,
createTimestamp: false,
newlyCreated: false,
flags: false,
type: opts?.defaultDesiredPropertiesValue ?? false,
position: opts?.defaultDesiredPropertiesValue ?? false,
name: opts?.defaultDesiredPropertiesValue ?? false,
topic: opts?.defaultDesiredPropertiesValue ?? false,
nsfw: opts?.defaultDesiredPropertiesValue ?? false,
bitrate: opts?.defaultDesiredPropertiesValue ?? false,
userLimit: opts?.defaultDesiredPropertiesValue ?? false,
rateLimitPerUser: opts?.defaultDesiredPropertiesValue ?? false,
rtcRegion: opts?.defaultDesiredPropertiesValue ?? false,
videoQualityMode: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
lastPinTimestamp: opts?.defaultDesiredPropertiesValue ?? false,
permissionOverwrites: opts?.defaultDesiredPropertiesValue ?? false,
id: opts?.defaultDesiredPropertiesValue ?? false,
permissions: opts?.defaultDesiredPropertiesValue ?? false,
lastMessageId: opts?.defaultDesiredPropertiesValue ?? false,
ownerId: opts?.defaultDesiredPropertiesValue ?? false,
applicationId: opts?.defaultDesiredPropertiesValue ?? false,
managed: opts?.defaultDesiredPropertiesValue ?? false,
parentId: opts?.defaultDesiredPropertiesValue ?? false,
memberCount: opts?.defaultDesiredPropertiesValue ?? false,
messageCount: opts?.defaultDesiredPropertiesValue ?? false,
archiveTimestamp: opts?.defaultDesiredPropertiesValue ?? false,
autoArchiveDuration: opts?.defaultDesiredPropertiesValue ?? false,
botIsMember: opts?.defaultDesiredPropertiesValue ?? false,
archived: opts?.defaultDesiredPropertiesValue ?? false,
locked: opts?.defaultDesiredPropertiesValue ?? false,
invitable: opts?.defaultDesiredPropertiesValue ?? false,
createTimestamp: opts?.defaultDesiredPropertiesValue ?? false,
newlyCreated: opts?.defaultDesiredPropertiesValue ?? false,
flags: opts?.defaultDesiredPropertiesValue ?? false,
},
emoji: {
id: false,
name: false,
roles: false,
user: false,
id: opts?.defaultDesiredPropertiesValue ?? false,
name: opts?.defaultDesiredPropertiesValue ?? false,
roles: opts?.defaultDesiredPropertiesValue ?? false,
user: opts?.defaultDesiredPropertiesValue ?? false,
},
guild: {
afkTimeout: false,
approximateMemberCount: false,
approximatePresenceCount: false,
defaultMessageNotifications: false,
description: false,
explicitContentFilter: false,
maxMembers: false,
maxPresences: false,
maxVideoChannelUsers: false,
mfaLevel: false,
name: false,
channels: false,
emojis: false,
features: false,
iconHash: false,
large: false,
members: false,
owner: false,
presences: false,
roles: false,
stickers: false,
threads: false,
toggles: false,
unavailable: false,
voiceStates: false,
widgetEnabled: false,
nsfwLevel: false,
preferredLocale: false,
premiumSubscriptionCount: false,
premiumTier: false,
stageInstances: false,
systemChannelFlags: false,
vanityUrlCode: false,
verificationLevel: false,
welcomeScreen: false,
discoverySplash: false,
joinedAt: false,
memberCount: false,
shardId: false,
icon: false,
banner: false,
splash: false,
id: false,
ownerId: false,
permissions: false,
afkChannelId: false,
widgetChannelId: false,
applicationId: false,
systemChannelId: false,
rulesChannelId: false,
publicUpdatesChannelId: false,
premiumProgressBarEnabled: false,
afkTimeout: opts?.defaultDesiredPropertiesValue ?? false,
approximateMemberCount: opts?.defaultDesiredPropertiesValue ?? false,
approximatePresenceCount: opts?.defaultDesiredPropertiesValue ?? false,
defaultMessageNotifications: opts?.defaultDesiredPropertiesValue ?? false,
description: opts?.defaultDesiredPropertiesValue ?? false,
explicitContentFilter: opts?.defaultDesiredPropertiesValue ?? false,
maxMembers: opts?.defaultDesiredPropertiesValue ?? false,
maxPresences: opts?.defaultDesiredPropertiesValue ?? false,
maxVideoChannelUsers: opts?.defaultDesiredPropertiesValue ?? false,
mfaLevel: opts?.defaultDesiredPropertiesValue ?? false,
name: opts?.defaultDesiredPropertiesValue ?? false,
channels: opts?.defaultDesiredPropertiesValue ?? false,
emojis: opts?.defaultDesiredPropertiesValue ?? false,
features: opts?.defaultDesiredPropertiesValue ?? false,
iconHash: opts?.defaultDesiredPropertiesValue ?? false,
large: opts?.defaultDesiredPropertiesValue ?? false,
members: opts?.defaultDesiredPropertiesValue ?? false,
owner: opts?.defaultDesiredPropertiesValue ?? false,
presences: opts?.defaultDesiredPropertiesValue ?? false,
roles: opts?.defaultDesiredPropertiesValue ?? false,
stickers: opts?.defaultDesiredPropertiesValue ?? false,
threads: opts?.defaultDesiredPropertiesValue ?? false,
toggles: opts?.defaultDesiredPropertiesValue ?? false,
unavailable: opts?.defaultDesiredPropertiesValue ?? false,
voiceStates: opts?.defaultDesiredPropertiesValue ?? false,
widgetEnabled: opts?.defaultDesiredPropertiesValue ?? false,
nsfwLevel: opts?.defaultDesiredPropertiesValue ?? false,
preferredLocale: opts?.defaultDesiredPropertiesValue ?? false,
premiumSubscriptionCount: opts?.defaultDesiredPropertiesValue ?? false,
premiumTier: opts?.defaultDesiredPropertiesValue ?? false,
stageInstances: opts?.defaultDesiredPropertiesValue ?? false,
systemChannelFlags: opts?.defaultDesiredPropertiesValue ?? false,
vanityUrlCode: opts?.defaultDesiredPropertiesValue ?? false,
verificationLevel: opts?.defaultDesiredPropertiesValue ?? false,
welcomeScreen: opts?.defaultDesiredPropertiesValue ?? false,
discoverySplash: opts?.defaultDesiredPropertiesValue ?? false,
joinedAt: opts?.defaultDesiredPropertiesValue ?? false,
memberCount: opts?.defaultDesiredPropertiesValue ?? false,
shardId: opts?.defaultDesiredPropertiesValue ?? false,
icon: opts?.defaultDesiredPropertiesValue ?? false,
banner: opts?.defaultDesiredPropertiesValue ?? false,
splash: opts?.defaultDesiredPropertiesValue ?? false,
id: opts?.defaultDesiredPropertiesValue ?? false,
ownerId: opts?.defaultDesiredPropertiesValue ?? false,
permissions: opts?.defaultDesiredPropertiesValue ?? false,
afkChannelId: opts?.defaultDesiredPropertiesValue ?? false,
widgetChannelId: opts?.defaultDesiredPropertiesValue ?? false,
applicationId: opts?.defaultDesiredPropertiesValue ?? false,
systemChannelId: opts?.defaultDesiredPropertiesValue ?? false,
rulesChannelId: opts?.defaultDesiredPropertiesValue ?? false,
publicUpdatesChannelId: opts?.defaultDesiredPropertiesValue ?? false,
premiumProgressBarEnabled: opts?.defaultDesiredPropertiesValue ?? false,
},
interaction: {
id: false,
applicationId: false,
type: false,
guildId: false,
channelId: false,
member: false,
user: false,
token: false,
version: false,
message: false,
data: false,
locale: false,
guildLocale: false,
appPermissions: false,
id: opts?.defaultDesiredPropertiesValue ?? false,
applicationId: opts?.defaultDesiredPropertiesValue ?? false,
type: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
channelId: opts?.defaultDesiredPropertiesValue ?? false,
member: opts?.defaultDesiredPropertiesValue ?? false,
user: opts?.defaultDesiredPropertiesValue ?? false,
token: opts?.defaultDesiredPropertiesValue ?? false,
version: opts?.defaultDesiredPropertiesValue ?? false,
message: opts?.defaultDesiredPropertiesValue ?? false,
data: opts?.defaultDesiredPropertiesValue ?? false,
locale: opts?.defaultDesiredPropertiesValue ?? false,
guildLocale: opts?.defaultDesiredPropertiesValue ?? false,
appPermissions: opts?.defaultDesiredPropertiesValue ?? false,
},
invite: {
channelId: false,
code: false,
createdAt: false,
guildId: false,
inviter: false,
maxAge: false,
maxUses: false,
targetType: false,
targetUser: false,
targetApplication: false,
temporary: false,
uses: false,
approximateMemberCount: false,
approximatePresenceCount: false,
guildScheduledEvent: false,
stageInstance: false,
expiresAt: false,
channelId: opts?.defaultDesiredPropertiesValue ?? false,
code: opts?.defaultDesiredPropertiesValue ?? false,
createdAt: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
inviter: opts?.defaultDesiredPropertiesValue ?? false,
maxAge: opts?.defaultDesiredPropertiesValue ?? false,
maxUses: opts?.defaultDesiredPropertiesValue ?? false,
targetType: opts?.defaultDesiredPropertiesValue ?? false,
targetUser: opts?.defaultDesiredPropertiesValue ?? false,
targetApplication: opts?.defaultDesiredPropertiesValue ?? false,
temporary: opts?.defaultDesiredPropertiesValue ?? false,
uses: opts?.defaultDesiredPropertiesValue ?? false,
approximateMemberCount: opts?.defaultDesiredPropertiesValue ?? false,
approximatePresenceCount: opts?.defaultDesiredPropertiesValue ?? false,
guildScheduledEvent: opts?.defaultDesiredPropertiesValue ?? false,
stageInstance: opts?.defaultDesiredPropertiesValue ?? false,
expiresAt: opts?.defaultDesiredPropertiesValue ?? false,
},
member: {
id: false,
guildId: false,
user: false,
nick: false,
roles: false,
joinedAt: false,
premiumSince: false,
avatar: false,
permissions: false,
communicationDisabledUntil: false,
deaf: false,
mute: false,
pending: false,
id: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
user: opts?.defaultDesiredPropertiesValue ?? false,
nick: opts?.defaultDesiredPropertiesValue ?? false,
roles: opts?.defaultDesiredPropertiesValue ?? false,
joinedAt: opts?.defaultDesiredPropertiesValue ?? false,
premiumSince: opts?.defaultDesiredPropertiesValue ?? false,
avatar: opts?.defaultDesiredPropertiesValue ?? false,
permissions: opts?.defaultDesiredPropertiesValue ?? false,
communicationDisabledUntil: opts?.defaultDesiredPropertiesValue ?? false,
deaf: opts?.defaultDesiredPropertiesValue ?? false,
mute: opts?.defaultDesiredPropertiesValue ?? false,
pending: opts?.defaultDesiredPropertiesValue ?? false,
},
message: {
activity: false,
application: false,
applicationId: false,
attachments: false,
author: false,
channelId: false,
components: false,
content: false,
editedTimestamp: false,
embeds: false,
guildId: false,
id: false,
activity: opts?.defaultDesiredPropertiesValue ?? false,
application: opts?.defaultDesiredPropertiesValue ?? false,
applicationId: opts?.defaultDesiredPropertiesValue ?? false,
attachments: opts?.defaultDesiredPropertiesValue ?? false,
author: opts?.defaultDesiredPropertiesValue ?? false,
channelId: opts?.defaultDesiredPropertiesValue ?? false,
components: opts?.defaultDesiredPropertiesValue ?? false,
content: opts?.defaultDesiredPropertiesValue ?? false,
editedTimestamp: opts?.defaultDesiredPropertiesValue ?? false,
embeds: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
id: opts?.defaultDesiredPropertiesValue ?? false,
interaction: {
id: false,
member: false,
name: false,
type: false,
user: false,
id: opts?.defaultDesiredPropertiesValue ?? false,
member: opts?.defaultDesiredPropertiesValue ?? false,
name: opts?.defaultDesiredPropertiesValue ?? false,
type: opts?.defaultDesiredPropertiesValue ?? false,
user: opts?.defaultDesiredPropertiesValue ?? false,
},
member: false,
mentionedChannelIds: false,
mentionedRoleIds: false,
mentions: false,
member: opts?.defaultDesiredPropertiesValue ?? false,
mentionedChannelIds: opts?.defaultDesiredPropertiesValue ?? false,
mentionedRoleIds: opts?.defaultDesiredPropertiesValue ?? false,
mentions: opts?.defaultDesiredPropertiesValue ?? false,
messageReference: {
messageId: false,
channelId: false,
guildId: false,
messageId: opts?.defaultDesiredPropertiesValue ?? false,
channelId: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
},
nonce: false,
reactions: false,
stickerItems: false,
thread: false,
type: false,
webhookId: false,
nonce: opts?.defaultDesiredPropertiesValue ?? false,
reactions: opts?.defaultDesiredPropertiesValue ?? false,
stickerItems: opts?.defaultDesiredPropertiesValue ?? false,
thread: opts?.defaultDesiredPropertiesValue ?? false,
type: opts?.defaultDesiredPropertiesValue ?? false,
webhookId: opts?.defaultDesiredPropertiesValue ?? false,
},
role: {
name: false,
guildId: false,
position: false,
color: false,
id: false,
botId: false,
integrationId: false,
permissions: false,
icon: false,
unicodeEmoji: false,
mentionable: false,
hoist: false,
managed: false,
subscriptionListingId: false,
name: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
position: opts?.defaultDesiredPropertiesValue ?? false,
color: opts?.defaultDesiredPropertiesValue ?? false,
id: opts?.defaultDesiredPropertiesValue ?? false,
botId: opts?.defaultDesiredPropertiesValue ?? false,
integrationId: opts?.defaultDesiredPropertiesValue ?? false,
permissions: opts?.defaultDesiredPropertiesValue ?? false,
icon: opts?.defaultDesiredPropertiesValue ?? false,
unicodeEmoji: opts?.defaultDesiredPropertiesValue ?? false,
mentionable: opts?.defaultDesiredPropertiesValue ?? false,
hoist: opts?.defaultDesiredPropertiesValue ?? false,
managed: opts?.defaultDesiredPropertiesValue ?? false,
subscriptionListingId: opts?.defaultDesiredPropertiesValue ?? false,
},
scheduledEvent: {
id: false,
guildId: false,
channelId: false,
creatorId: false,
scheduledStartTime: false,
scheduledEndTime: false,
entityId: false,
creator: false,
name: false,
description: false,
privacyLevel: false,
status: false,
entityType: false,
userCount: false,
location: false,
image: false,
id: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
channelId: opts?.defaultDesiredPropertiesValue ?? false,
creatorId: opts?.defaultDesiredPropertiesValue ?? false,
scheduledStartTime: opts?.defaultDesiredPropertiesValue ?? false,
scheduledEndTime: opts?.defaultDesiredPropertiesValue ?? false,
entityId: opts?.defaultDesiredPropertiesValue ?? false,
creator: opts?.defaultDesiredPropertiesValue ?? false,
name: opts?.defaultDesiredPropertiesValue ?? false,
description: opts?.defaultDesiredPropertiesValue ?? false,
privacyLevel: opts?.defaultDesiredPropertiesValue ?? false,
status: opts?.defaultDesiredPropertiesValue ?? false,
entityType: opts?.defaultDesiredPropertiesValue ?? false,
userCount: opts?.defaultDesiredPropertiesValue ?? false,
location: opts?.defaultDesiredPropertiesValue ?? false,
image: opts?.defaultDesiredPropertiesValue ?? false,
},
stageInstance: {
id: false,
guildId: false,
channelId: false,
topic: false,
guildScheduledEventId: false,
id: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
channelId: opts?.defaultDesiredPropertiesValue ?? false,
topic: opts?.defaultDesiredPropertiesValue ?? false,
guildScheduledEventId: opts?.defaultDesiredPropertiesValue ?? false,
},
inviteStageInstance: {
members: false,
participantCount: false,
speakerCount: false,
topic: false,
members: opts?.defaultDesiredPropertiesValue ?? false,
participantCount: opts?.defaultDesiredPropertiesValue ?? false,
speakerCount: opts?.defaultDesiredPropertiesValue ?? false,
topic: opts?.defaultDesiredPropertiesValue ?? false,
},
sticker: {
id: false,
packId: false,
name: false,
description: false,
tags: false,
type: false,
formatType: false,
available: false,
guildId: false,
user: false,
sortValue: false,
id: opts?.defaultDesiredPropertiesValue ?? false,
packId: opts?.defaultDesiredPropertiesValue ?? false,
name: opts?.defaultDesiredPropertiesValue ?? false,
description: opts?.defaultDesiredPropertiesValue ?? false,
tags: opts?.defaultDesiredPropertiesValue ?? false,
type: opts?.defaultDesiredPropertiesValue ?? false,
formatType: opts?.defaultDesiredPropertiesValue ?? false,
available: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
user: opts?.defaultDesiredPropertiesValue ?? false,
sortValue: opts?.defaultDesiredPropertiesValue ?? false,
},
user: {
username: false,
globalName: false,
locale: false,
flags: false,
premiumType: false,
publicFlags: false,
accentColor: false,
id: false,
discriminator: false,
avatar: false,
bot: false,
system: false,
mfaEnabled: false,
verified: false,
email: false,
banner: false,
username: opts?.defaultDesiredPropertiesValue ?? false,
globalName: opts?.defaultDesiredPropertiesValue ?? false,
locale: opts?.defaultDesiredPropertiesValue ?? false,
flags: opts?.defaultDesiredPropertiesValue ?? false,
premiumType: opts?.defaultDesiredPropertiesValue ?? false,
publicFlags: opts?.defaultDesiredPropertiesValue ?? false,
accentColor: opts?.defaultDesiredPropertiesValue ?? false,
id: opts?.defaultDesiredPropertiesValue ?? false,
discriminator: opts?.defaultDesiredPropertiesValue ?? false,
avatar: opts?.defaultDesiredPropertiesValue ?? false,
bot: opts?.defaultDesiredPropertiesValue ?? false,
system: opts?.defaultDesiredPropertiesValue ?? false,
mfaEnabled: opts?.defaultDesiredPropertiesValue ?? false,
verified: opts?.defaultDesiredPropertiesValue ?? false,
email: opts?.defaultDesiredPropertiesValue ?? false,
banner: opts?.defaultDesiredPropertiesValue ?? false,
},
webhook: {
id: false,
type: false,
guildId: false,
channelId: false,
user: false,
name: false,
avatar: false,
token: false,
applicationId: false,
sourceGuild: false,
sourceChannel: false,
url: false,
id: opts?.defaultDesiredPropertiesValue ?? false,
type: opts?.defaultDesiredPropertiesValue ?? false,
guildId: opts?.defaultDesiredPropertiesValue ?? false,
channelId: opts?.defaultDesiredPropertiesValue ?? false,
user: opts?.defaultDesiredPropertiesValue ?? false,
name: opts?.defaultDesiredPropertiesValue ?? false,
avatar: opts?.defaultDesiredPropertiesValue ?? false,
token: opts?.defaultDesiredPropertiesValue ?? false,
applicationId: opts?.defaultDesiredPropertiesValue ?? false,
sourceGuild: opts?.defaultDesiredPropertiesValue ?? false,
sourceChannel: opts?.defaultDesiredPropertiesValue ?? false,
url: opts?.defaultDesiredPropertiesValue ?? false,
},
},
reverse: {