From ea9fca102a3ff2f36926f67969736e8ae33e1a28 Mon Sep 17 00:00:00 2001 From: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com> Date: Sat, 28 Oct 2023 13:25:02 +0000 Subject: [PATCH] fix: add option to enable all desire props --- packages/bot/src/transformers.ts | 514 ++++++++++++++++--------------- 1 file changed, 264 insertions(+), 250 deletions(-) diff --git a/packages/bot/src/transformers.ts b/packages/bot/src/transformers.ts index 347824229..bed96f632 100644 --- a/packages/bot/src/transformers.ts +++ b/packages/bot/src/transformers.ts @@ -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 { +export interface CreateTransformerOptions { + defaultDesiredPropertiesValue: boolean +} + +export function createTransformers(options: Partial, 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 }, 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: {