Files
discordeno/packages/bot/src/transformers.ts
Fleny dfa7ff4045 feat(bot,rest,gateway,utils,types)!: Add soundboard support (#3919)
* Add soundboard support

* Add rest endpoints

* add comment to gateway requestSoundboardSounds

* Apply suggestions from code review

Co-authored-by: Awesome Stickz <awesome@stickz.dev>

* Update for discord/discord-api-docs#7207

* Update discord.ts

---------

Co-authored-by: Awesome Stickz <awesome@stickz.dev>
Co-authored-by: ITOH <to@itoh.at>
2024-11-05 19:44:37 +05:30

1567 lines
55 KiB
TypeScript

import type {
AllowedMentions,
BigString,
CreateApplicationCommand,
DiscordActivity,
DiscordActivityInstance,
DiscordActivityLocation,
DiscordAllowedMentions,
DiscordApplication,
DiscordApplicationCommand,
DiscordApplicationCommandOption,
DiscordApplicationCommandOptionChoice,
DiscordAttachment,
DiscordAuditLogEntry,
DiscordAutoModerationActionExecution,
DiscordAutoModerationRule,
DiscordAvatarDecorationData,
DiscordChannel,
DiscordCreateApplicationCommand,
DiscordDefaultReactionEmoji,
DiscordEmbed,
DiscordEmoji,
DiscordEntitlement,
DiscordForumTag,
DiscordGetGatewayBot,
DiscordGuild,
DiscordGuildApplicationCommandPermissions,
DiscordGuildOnboarding,
DiscordGuildOnboardingPrompt,
DiscordGuildOnboardingPromptOption,
DiscordGuildWidget,
DiscordGuildWidgetSettings,
DiscordIntegrationCreateUpdate,
DiscordInteraction,
DiscordInteractionCallback,
DiscordInteractionCallbackResponse,
DiscordInteractionDataOption,
DiscordInteractionResource,
DiscordInviteCreate,
DiscordInviteMetadata,
DiscordInviteStageInstance,
DiscordMember,
DiscordMessage,
DiscordMessageCall,
DiscordMessageInteractionMetadata,
DiscordMessageSnapshot,
DiscordPoll,
DiscordPollMedia,
DiscordPresenceUpdate,
DiscordRole,
DiscordScheduledEvent,
DiscordScheduledEventRecurrenceRule,
DiscordSku,
DiscordSoundboardSound,
DiscordStageInstance,
DiscordSticker,
DiscordStickerPack,
DiscordSubscription,
DiscordTeam,
DiscordTemplate,
DiscordThreadMember,
DiscordUser,
DiscordVoiceRegion,
DiscordVoiceState,
DiscordWebhook,
DiscordWelcomeScreen,
RecursivePartial,
} from '@discordeno/types'
import { logger } from '@discordeno/utils'
import type { Bot } from './bot.js'
import {
type Activity,
type ActivityInstance,
type ActivityLocation,
type Application,
type ApplicationCommand,
type ApplicationCommandOption,
type ApplicationCommandOptionChoice,
type Attachment,
type AuditLogEntry,
type AutoModerationActionExecution,
type AutoModerationRule,
type AvatarDecorationData,
type Channel,
type Component,
type DefaultReactionEmoji,
type Embed,
type Emoji,
type Entitlement,
type ForumTag,
type GetGatewayBot,
type Guild,
type GuildApplicationCommandPermissions,
type GuildOnboarding,
type GuildOnboardingPrompt,
type GuildOnboardingPromptOption,
type GuildWidget,
type GuildWidgetSettings,
type Integration,
type Interaction,
type InteractionCallback,
type InteractionCallbackResponse,
type InteractionDataOption,
type InteractionDataResolved,
type InteractionResource,
type Invite,
type InviteStageInstance,
type Member,
type Message,
type MessageCall,
type MessageInteractionMetadata,
type MessageSnapshot,
type Poll,
type PollMedia,
type PresenceUpdate,
type Role,
type ScheduledEvent,
type ScheduledEventRecurrenceRule,
type Sku,
type SoundboardSound,
type StageInstance,
type Sticker,
type StickerPack,
type Subscription,
type Team,
type Template,
type ThreadMember,
type ThreadMemberGuildCreate,
type User,
type VoiceRegion,
type VoiceState,
type Webhook,
type WelcomeScreen,
transformActivity,
transformActivityInstance,
transformActivityLocation,
transformActivityToDiscordActivity,
transformApplication,
transformApplicationCommand,
transformApplicationCommandOption,
transformApplicationCommandOptionChoice,
transformApplicationCommandOptionChoiceToDiscordApplicationCommandOptionChoice,
transformApplicationCommandOptionToDiscordApplicationCommandOption,
transformApplicationCommandPermission,
transformApplicationCommandToDiscordApplicationCommand,
transformApplicationToDiscordApplication,
transformAttachment,
transformAttachmentToDiscordAttachment,
transformAuditLogEntry,
transformAutoModerationActionExecution,
transformAutoModerationRule,
transformAvatarDecorationData,
transformChannel,
transformComponent,
transformComponentToDiscordComponent,
transformDefaultReactionEmoji,
transformEmbed,
transformEmbedToDiscordEmbed,
transformEmoji,
transformEntitlement,
transformForumTag,
transformGatewayBot,
transformGuild,
transformGuildOnboarding,
transformGuildOnboardingPrompt,
transformGuildOnboardingPromptOption,
transformIntegration,
transformInteraction,
transformInteractionCallback,
transformInteractionCallbackResponse,
transformInteractionDataOption,
transformInteractionDataResolved,
transformInteractionResource,
transformInvite,
transformInviteStageInstance,
transformMember,
transformMemberToDiscordMember,
transformMessage,
transformMessageCall,
transformMessageInteractionMetadata,
transformMessageSnapshot,
transformPoll,
transformPollMedia,
transformPresence,
transformRole,
transformScheduledEvent,
transformScheduledEventRecurrenceRule,
transformSku,
transformSoundboardSound,
transformStageInstance,
transformSticker,
transformStickerPack,
transformSubscription,
transformTeam,
transformTeamToDiscordTeam,
transformTemplate,
transformThreadMember,
transformThreadMemberGuildCreate,
transformUser,
transformUserToDiscordUser,
transformVoiceRegion,
transformVoiceState,
transformWebhook,
transformWelcomeScreen,
transformWidget,
transformWidgetSettings,
} from './transformers/index.js'
import {
transformAllowedMentionsToDiscordAllowedMentions,
transformCreateApplicationCommandToDiscordCreateApplicationCommand,
transformInteractionResponseToDiscordInteractionResponse,
} from './transformers/reverse/index.js'
import type {
BotInteractionResponse,
DiscordComponent,
DiscordInteractionDataResolved,
DiscordInteractionResponse,
DiscordThreadMemberGuildCreate,
} from './typings.js'
import { bigintToSnowflake, snowflakeToBigint } from './utils.js'
export interface Transformers {
customizers: {
activity: (bot: Bot, payload: DiscordActivity, activity: Activity) => any
activityInstance: (bot: Bot, payload: DiscordActivityInstance, activityInstance: ActivityInstance) => any
activityLocation: (bot: Bot, payload: DiscordActivityLocation, activityLocation: ActivityLocation) => any
application: (bot: Bot, payload: DiscordApplication, application: Application) => any
applicationCommand: (bot: Bot, payload: DiscordApplicationCommand, applicationCommand: ApplicationCommand) => any
applicationCommandOption: (bot: Bot, payload: DiscordApplicationCommandOption, applicationCommandOption: ApplicationCommandOption) => any
applicationCommandOptionChoice: (
bot: Bot,
payload: DiscordApplicationCommandOptionChoice,
applicationCommandOptionChoice: ApplicationCommandOptionChoice,
) => any
applicationCommandPermission: (
bot: Bot,
payload: DiscordGuildApplicationCommandPermissions,
applicationCommandPermission: GuildApplicationCommandPermissions,
) => any
attachment: (bot: Bot, payload: DiscordAttachment, attachment: Attachment) => any
auditLogEntry: (bot: Bot, payload: DiscordAuditLogEntry, auditLogEntry: AuditLogEntry) => any
automodActionExecution: (bot: Bot, payload: DiscordAutoModerationActionExecution, automodActionExecution: AutoModerationActionExecution) => any
automodRule: (bot: Bot, payload: DiscordAutoModerationRule, automodRule: AutoModerationRule) => any
avatarDecorationData: (bot: Bot, payload: DiscordAvatarDecorationData, avatarDecorationData: AvatarDecorationData) => any
channel: (bot: Bot, payload: DiscordChannel, channel: Channel) => any
component: (bot: Bot, payload: DiscordComponent, component: Component) => any
defaultReactionEmoji: (bot: Bot, payload: DiscordDefaultReactionEmoji, defaultReactionEmoji: DefaultReactionEmoji) => any
embed: (bot: Bot, payload: DiscordEmbed, embed: Embed) => any
emoji: (bot: Bot, payload: DiscordEmoji, emoji: Emoji) => any
entitlement: (bot: Bot, payload: DiscordEntitlement, entitlement: Entitlement) => any
forumTag: (bot: Bot, payload: DiscordForumTag, forumTag: ForumTag) => any
gatewayBot: (bot: Bot, payload: DiscordGetGatewayBot, getGatewayBot: GetGatewayBot) => any
guild: (bot: Bot, payload: DiscordGuild, guild: Guild) => any
guildOnboarding: (bot: Bot, payload: DiscordGuildOnboarding, onboarding: GuildOnboarding) => any
guildOnboardingPrompt: (bot: Bot, payload: DiscordGuildOnboardingPrompt, onboardingPrompt: GuildOnboardingPrompt) => any
guildOnboardingPromptOption: (bot: Bot, payload: DiscordGuildOnboardingPromptOption, onboardingPromptOption: GuildOnboardingPromptOption) => any
integration: (bot: Bot, payload: DiscordIntegrationCreateUpdate, integration: Integration) => any
interaction: (bot: Bot, payload: { interaction: DiscordInteraction; shardId: number }, interaction: Interaction) => any
interactionCallback: (bot: Bot, payload: DiscordInteractionCallback, interactionCallback: InteractionCallback) => any
interactionCallbackResponse: (
bot: Bot,
payload: DiscordInteractionCallbackResponse,
interactionCallbackResponse: InteractionCallbackResponse,
) => any
interactionDataOptions: (bot: Bot, payload: DiscordInteractionDataOption, interactionDataOptions: InteractionDataOption) => any
interactionDataResolved: (
bot: Bot,
payload: { resolved: DiscordInteractionDataResolved; guildId?: bigint },
interactionDataResolved: InteractionDataResolved,
) => any
interactionResource: (bot: Bot, payload: DiscordInteractionResource, interactionResource: InteractionResource) => any
invite: (bot: Bot, payload: DiscordInviteCreate | DiscordInviteMetadata, invite: Invite) => any
inviteStageInstance: (bot: Bot, payload: DiscordInviteStageInstance, inviteStageInstance: InviteStageInstance) => any
member: (bot: Bot, payload: DiscordMember, member: Member) => any
message: (bot: Bot, payload: DiscordMessage, message: Message) => any
messageCall: (bot: Bot, payload: DiscordMessageCall, call: MessageCall) => any
messageInteractionMetadata: (bot: Bot, payload: DiscordMessageInteractionMetadata, metadata: MessageInteractionMetadata) => any
messageSnapshot: (bot: Bot, payload: DiscordMessageSnapshot, messageSnapshot: MessageSnapshot) => any
poll: (bot: Bot, payload: DiscordPoll, poll: Poll) => any
pollMedia: (bot: Bot, payload: DiscordPollMedia, pollMedia: PollMedia) => any
presence: (bot: Bot, payload: DiscordPresenceUpdate, presence: PresenceUpdate) => any
role: (bot: Bot, payload: DiscordRole, role: Role) => any
scheduledEvent: (bot: Bot, payload: DiscordScheduledEvent, scheduledEvent: ScheduledEvent) => any
scheduledEventRecurrenceRule: (bot: Bot, payload: DiscordScheduledEventRecurrenceRule, scheduledEvent: ScheduledEventRecurrenceRule) => any
sku: (bot: Bot, payload: DiscordSku, sku: Sku) => any
soundboardSound: (bot: Bot, payload: DiscordSoundboardSound, soundboardSound: SoundboardSound) => any
stageInstance: (bot: Bot, payload: DiscordStageInstance, stageInstance: StageInstance) => any
sticker: (bot: Bot, payload: DiscordSticker, sticker: Sticker) => any
stickerPack: (bot: Bot, payload: DiscordStickerPack, stickerPack: StickerPack) => any
subscription: (bot: Bot, payload: DiscordSubscription, subscription: Subscription) => any
team: (bot: Bot, payload: DiscordTeam, team: Team) => any
template: (bot: Bot, payload: DiscordTemplate, template: Template) => any
threadMember: (bot: Bot, payload: DiscordThreadMember, threadMember: ThreadMember) => any
threadMemberGuildCreate: (bot: Bot, payload: DiscordThreadMemberGuildCreate, threadMemberGuildCreate: ThreadMemberGuildCreate) => any
user: (bot: Bot, payload: DiscordUser, user: User) => any
voiceRegion: (bot: Bot, payload: DiscordVoiceRegion, voiceRegion: VoiceRegion) => any
voiceState: (bot: Bot, payload: DiscordVoiceState, voiceState: VoiceState) => any
webhook: (bot: Bot, payload: DiscordWebhook, webhook: Webhook) => any
welcomeScreen: (bot: Bot, payload: DiscordWelcomeScreen, welcomeScreen: WelcomeScreen) => any
widget: (bot: Bot, payload: DiscordGuildWidget, widget: GuildWidget) => any
widgetSettings: (bot: Bot, payload: DiscordGuildWidgetSettings, widgetSettings: GuildWidgetSettings) => any
}
desiredProperties: TransformersDesiredProperties
reverse: {
activity: (bot: Bot, payload: Activity) => DiscordActivity
allowedMentions: (bot: Bot, payload: AllowedMentions) => DiscordAllowedMentions
application: (bot: Bot, payload: Application) => DiscordApplication
applicationCommand: (bot: Bot, payload: ApplicationCommand) => DiscordApplicationCommand
applicationCommandOption: (bot: Bot, payload: ApplicationCommandOption) => DiscordApplicationCommandOption
applicationCommandOptionChoice: (bot: Bot, payload: ApplicationCommandOptionChoice) => DiscordApplicationCommandOptionChoice
attachment: (bot: Bot, payload: Attachment) => DiscordAttachment
component: (bot: Bot, payload: Component) => DiscordComponent
createApplicationCommand: (bot: Bot, payload: CreateApplicationCommand) => DiscordCreateApplicationCommand
embed: (bot: Bot, payload: Embed) => DiscordEmbed
interactionResponse: (bot: Bot, payload: BotInteractionResponse) => DiscordInteractionResponse
member: (bot: Bot, payload: Member) => DiscordMember
snowflake: (snowflake: BigString) => string
team: (bot: Bot, payload: Team) => DiscordTeam
user: (bot: Bot, payload: User) => DiscordUser
}
activity: (bot: Bot, payload: DiscordActivity) => Activity
activityInstance: (bot: Bot, payload: DiscordActivityInstance) => ActivityInstance
activityLocation: (bot: Bot, payload: DiscordActivityLocation) => ActivityLocation
application: (bot: Bot, payload: { application: DiscordApplication; shardId: number }) => Application
applicationCommand: (bot: Bot, payload: DiscordApplicationCommand) => ApplicationCommand
applicationCommandOption: (bot: Bot, payload: DiscordApplicationCommandOption) => ApplicationCommandOption
applicationCommandOptionChoice: (bot: Bot, payload: DiscordApplicationCommandOptionChoice) => ApplicationCommandOptionChoice
applicationCommandPermission: (bot: Bot, payload: DiscordGuildApplicationCommandPermissions) => GuildApplicationCommandPermissions
attachment: (bot: Bot, payload: DiscordAttachment) => Attachment
auditLogEntry: (bot: Bot, payload: DiscordAuditLogEntry) => AuditLogEntry
automodActionExecution: (bot: Bot, payload: DiscordAutoModerationActionExecution) => AutoModerationActionExecution
automodRule: (bot: Bot, payload: DiscordAutoModerationRule) => AutoModerationRule
avatarDecorationData: (bot: Bot, payload: DiscordAvatarDecorationData) => AvatarDecorationData
channel: (bot: Bot, payload: { channel: DiscordChannel } & { guildId?: BigString }) => Channel
component: (bot: Bot, payload: DiscordComponent) => Component
defaultReactionEmoji: (bot: Bot, payload: DiscordDefaultReactionEmoji) => DefaultReactionEmoji
embed: (bot: Bot, payload: DiscordEmbed) => Embed
emoji: (bot: Bot, payload: DiscordEmoji) => Emoji
entitlement: (bot: Bot, payload: DiscordEntitlement) => Entitlement
forumTag: (bot: Bot, payload: DiscordForumTag) => ForumTag
gatewayBot: (bot: Bot, payload: DiscordGetGatewayBot) => GetGatewayBot
guild: (bot: Bot, payload: { guild: DiscordGuild } & { shardId: number }) => Guild
guildOnboarding: (bot: Bot, payload: DiscordGuildOnboarding) => GuildOnboarding
guildOnboardingPrompt: (bot: Bot, payload: DiscordGuildOnboardingPrompt) => GuildOnboardingPrompt
guildOnboardingPromptOption: (bot: Bot, payload: DiscordGuildOnboardingPromptOption) => GuildOnboardingPromptOption
integration: (bot: Bot, payload: DiscordIntegrationCreateUpdate) => Integration
interaction: (bot: Bot, payload: { interaction: DiscordInteraction; shardId: number }) => Interaction
interactionCallback: (bot: Bot, payload: DiscordInteractionCallback) => InteractionCallback
interactionCallbackResponse: (bot: Bot, payload: DiscordInteractionCallbackResponse) => InteractionCallbackResponse
interactionDataOptions: (bot: Bot, payload: DiscordInteractionDataOption) => InteractionDataOption
interactionDataResolved: (bot: Bot, payload: { resolved: DiscordInteractionDataResolved; guildId?: bigint }) => InteractionDataResolved
interactionResource: (bot: Bot, payload: DiscordInteractionResource) => InteractionResource
invite: (bot: Bot, payload: { invite: DiscordInviteCreate | DiscordInviteMetadata; shardId: number }) => Invite
inviteStageInstance: (bot: Bot, payload: DiscordInviteStageInstance & { guildId: BigString }) => InviteStageInstance
member: (bot: Bot, payload: DiscordMember, guildId: BigString, userId: BigString) => Member
message: (bot: Bot, payload: DiscordMessage) => Message
messageCall: (bot: Bot, payload: DiscordMessageCall) => MessageCall
messageInteractionMetadata: (bot: Bot, payload: DiscordMessageInteractionMetadata) => MessageInteractionMetadata
messageSnapshot: (bot: Bot, payload: DiscordMessageSnapshot) => MessageSnapshot
poll: (bot: Bot, payload: DiscordPoll) => Poll
pollMedia: (bot: Bot, payload: DiscordPollMedia) => PollMedia
presence: (bot: Bot, payload: DiscordPresenceUpdate) => PresenceUpdate
role: (bot: Bot, payload: { role: DiscordRole } & { guildId: BigString }) => Role
scheduledEvent: (bot: Bot, payload: DiscordScheduledEvent) => ScheduledEvent
scheduledEventRecurrenceRule: (bot: Bot, payload: DiscordScheduledEventRecurrenceRule) => ScheduledEventRecurrenceRule
sku: (bot: Bot, payload: DiscordSku) => Sku
soundboardSound: (bot: Bot, payload: DiscordSoundboardSound) => SoundboardSound
snowflake: (snowflake: BigString) => bigint
stageInstance: (bot: Bot, payload: DiscordStageInstance) => StageInstance
sticker: (bot: Bot, payload: DiscordSticker) => Sticker
stickerPack: (bot: Bot, payload: DiscordStickerPack) => StickerPack
subscription: (bot: Bot, payload: DiscordSubscription) => Subscription
team: (bot: Bot, payload: DiscordTeam) => Team
template: (bot: Bot, payload: DiscordTemplate) => Template
threadMember: (bot: Bot, payload: DiscordThreadMember) => ThreadMember
threadMemberGuildCreate: (bot: Bot, payload: DiscordThreadMemberGuildCreate) => ThreadMemberGuildCreate
user: (bot: Bot, payload: DiscordUser) => User
voiceRegion: (bot: Bot, payload: DiscordVoiceRegion) => VoiceRegion
voiceState: (bot: Bot, payload: { voiceState: DiscordVoiceState } & { guildId: BigString }) => VoiceState
webhook: (bot: Bot, payload: DiscordWebhook) => Webhook
welcomeScreen: (bot: Bot, payload: DiscordWelcomeScreen) => WelcomeScreen
widget: (bot: Bot, payload: DiscordGuildWidget) => GuildWidget
widgetSettings: (bot: Bot, payload: DiscordGuildWidgetSettings) => GuildWidgetSettings
}
export interface TransformersDesiredProperties {
activityInstance: {
applicationId: boolean
instanceId: boolean
launchId: boolean
location: boolean
users: boolean
}
activityLocation: {
id: boolean
kind: boolean
channelId: boolean
guildId: boolean
}
attachment: {
id: boolean
filename: boolean
title: boolean
contentType: boolean
size: boolean
url: boolean
proxyUrl: boolean
height: boolean
width: boolean
ephemeral: boolean
description: boolean
duration_secs: boolean
waveform: boolean
flags: boolean
}
channel: {
type: boolean
position: boolean
name: boolean
topic: boolean
nsfw: boolean
bitrate: boolean
userLimit: boolean
rateLimitPerUser: boolean
rtcRegion: boolean
videoQualityMode: boolean
guildId: boolean
lastPinTimestamp: boolean
permissionOverwrites: boolean
id: boolean
permissions: boolean
lastMessageId: boolean
ownerId: boolean
applicationId: boolean
managed: boolean
parentId: boolean
memberCount: boolean
messageCount: boolean
archiveTimestamp: boolean
defaultAutoArchiveDuration: boolean
autoArchiveDuration: boolean
botIsMember: boolean
archived: boolean
locked: boolean
invitable: boolean
createTimestamp: boolean
newlyCreated: boolean
flags: boolean
recipients: boolean
icon: boolean
member: boolean
totalMessageSent: boolean
availableTags: boolean
appliedTags: boolean
defaultReactionEmoji: boolean
defaultThreadRateLimitPerUser: boolean
defaultSortOrder: boolean
defaultForumLayout: boolean
}
forumTag: {
id: boolean
name: boolean
moderated: boolean
emojiId: boolean
emojiName: boolean
}
emoji: {
id: boolean
name: boolean
roles: boolean
user: boolean
}
defaultReactionEmoji: {
emojiId: boolean
emojiName: boolean
}
guild: {
afkTimeout: boolean
approximateMemberCount: boolean
approximatePresenceCount: boolean
defaultMessageNotifications: boolean
description: boolean
explicitContentFilter: boolean
maxMembers: boolean
maxPresences: boolean
maxVideoChannelUsers: boolean
mfaLevel: boolean
name: boolean
nsfwLevel: boolean
preferredLocale: boolean
premiumSubscriptionCount: boolean
premiumTier: boolean
toggles: boolean
stageInstances: boolean
channels: boolean
members: boolean
roles: boolean
emojis: boolean
stickers: boolean
threads: boolean
voiceStates: boolean
large: boolean
owner: boolean
widgetEnabled: boolean
unavailable: boolean
iconHash: boolean
presences: boolean
systemChannelFlags: boolean
vanityUrlCode: boolean
verificationLevel: boolean
welcomeScreen: boolean
discoverySplash: boolean
joinedAt: boolean
memberCount: boolean
shardId: boolean
icon: boolean
banner: boolean
splash: boolean
id: boolean
ownerId: boolean
permissions: boolean
afkChannelId: boolean
widgetChannelId: boolean
applicationId: boolean
systemChannelId: boolean
rulesChannelId: boolean
publicUpdatesChannelId: boolean
premiumProgressBarEnabled: boolean
safetyAlertsChannelId: boolean
}
interaction: {
id: boolean
applicationId: boolean
type: boolean
guild: boolean
guildId: boolean
channel: boolean
channelId: boolean
member: boolean
user: boolean
token: boolean
version: boolean
message: boolean
data: boolean
locale: boolean
guildLocale: boolean
appPermissions: boolean
authorizingIntegrationOwners: boolean
context: boolean
}
interactionCallback: {
id: boolean
type: boolean
activityInstanceId: boolean
responseMessageId: boolean
responseMessageLoading: boolean
responseMessageEphemeral: boolean
}
interactionCallbackResponse: {
interaction: boolean
resource: boolean
}
interactionResource: {
type: boolean
activityInstance: boolean
message: boolean
}
invite: {
type: boolean
channelId: boolean
code: boolean
createdAt: boolean
guildId: boolean
inviter: boolean
maxAge: boolean
maxUses: boolean
targetType: boolean
targetUser: boolean
targetApplication: boolean
temporary: boolean
uses: boolean
approximateMemberCount: boolean
approximatePresenceCount: boolean
guildScheduledEvent: boolean
stageInstance: boolean
expiresAt: boolean
}
member: {
id: boolean
guildId: boolean
user: boolean
nick: boolean
roles: boolean
joinedAt: boolean
premiumSince: boolean
avatar: boolean
banner: boolean
permissions: boolean
communicationDisabledUntil: boolean
flags: boolean
toggles: boolean
avatarDecorationData: boolean
}
message: {
activity: boolean
application: boolean
applicationId: boolean
attachments: boolean
author: boolean
channelId: boolean
components: boolean
content: boolean
editedTimestamp: boolean
embeds: boolean
guildId: boolean
id: boolean
interactionMetadata: boolean
interaction: boolean
member: boolean
mentionedChannelIds: boolean
mentionedRoleIds: boolean
mentions: boolean
messageReference: boolean
referencedMessage: boolean
messageSnapshots: boolean
nonce: boolean
reactions: boolean
stickerItems: boolean
thread: boolean
type: boolean
webhookId: boolean
poll: boolean
call: boolean
}
messageSnapshot: {
message: boolean
}
messageInteractionMetadata: {
id: boolean
type: boolean
user: boolean
authorizingIntegrationOwners: boolean
originalResponseMessageId: boolean
interactedMessageId: boolean
triggeringInteractionMetadata: boolean
targetUser: boolean
targetMessageId: boolean
}
messageInteraction: {
id: boolean
member: boolean
name: boolean
user: boolean
type: boolean
}
messageReference: {
messageId: boolean
channelId: boolean
guildId: boolean
}
messageCall: {
participants: boolean
endedTimestamp: boolean
}
role: {
name: boolean
guildId: boolean
position: boolean
color: boolean
id: boolean
permissions: boolean
icon: boolean
unicodeEmoji: boolean
flags: boolean
tags: boolean
toggles: boolean
}
scheduledEvent: {
id: boolean
guildId: boolean
channelId: boolean
creatorId: boolean
scheduledStartTime: boolean
scheduledEndTime: boolean
entityId: boolean
creator: boolean
name: boolean
description: boolean
privacyLevel: boolean
status: boolean
entityType: boolean
userCount: boolean
location: boolean
image: boolean
recurrenceRule: boolean
}
scheduledEventRecurrenceRule: {
start: boolean
end: boolean
frequency: boolean
interval: boolean
byWeekday: boolean
byNWeekday: boolean
byMonth: boolean
byMonthDay: boolean
byYearDay: boolean
count: boolean
}
stageInstance: {
id: boolean
guildId: boolean
channelId: boolean
topic: boolean
guildScheduledEventId: boolean
}
inviteStageInstance: {
members: boolean
participantCount: boolean
speakerCount: boolean
topic: boolean
}
sticker: {
id: boolean
packId: boolean
name: boolean
description: boolean
tags: boolean
type: boolean
formatType: boolean
available: boolean
guildId: boolean
user: boolean
sortValue: boolean
}
subscription: {
id: boolean
userId: boolean
skuIds: boolean
entitlementIds: boolean
currentPeriodStart: boolean
currentPeriodEnd: boolean
status: boolean
canceledAt: boolean
country: boolean
}
user: {
username: boolean
globalName: boolean
locale: boolean
flags: boolean
premiumType: boolean
publicFlags: boolean
accentColor: boolean
id: boolean
discriminator: boolean
avatar: boolean
email: boolean
banner: boolean
avatarDecorationData: boolean
toggles: boolean
}
avatarDecorationData: {
asset: boolean
skuId: boolean
}
webhook: {
id: boolean
type: boolean
guildId: boolean
channelId: boolean
user: boolean
name: boolean
avatar: boolean
token: boolean
applicationId: boolean
sourceGuild: boolean
sourceChannel: boolean
url: boolean
}
guildOnboarding: {
guildId: boolean
prompts: boolean
defaultChannelIds: boolean
enabled: boolean
mode: boolean
}
guildOnboardingPrompt: {
id: boolean
type: boolean
options: boolean
title: boolean
singleSelect: boolean
required: boolean
inOnboarding: boolean
}
guildOnboardingPromptOption: {
id: boolean
channelIds: boolean
roleIds: boolean
emoji: boolean
title: boolean
description: boolean
}
entitlement: {
id: boolean
skuId: boolean
userId: boolean
guildId: boolean
applicationId: boolean
type: boolean
deleted: boolean
startsAt: boolean
endsAt: boolean
consumed: boolean
}
sku: {
id: boolean
type: boolean
applicationId: boolean
name: boolean
slug: boolean
flags: boolean
}
voiceState: {
requestToSpeakTimestamp: boolean
channelId: boolean
guildId: boolean
toggles: boolean
sessionId: boolean
userId: boolean
}
poll: {
question: boolean
answers: boolean
expiry: boolean
allowMultiselect: boolean
layoutType: boolean
results: boolean
}
pollAnswer: {
answerId: boolean
pollMedia: boolean
}
pollResult: {
isFinalized: boolean
answerCounts: boolean
}
pollAnswerCount: {
id: boolean
count: boolean
meVoted: boolean
}
pollMedia: {
text: boolean
emoji: boolean
}
soundboardSound: {
name: boolean
soundId: boolean
volume: boolean
emojiId: boolean
emojiName: boolean
guildId: boolean
available: boolean
user: boolean
}
}
export interface CreateTransformerOptions {
defaultDesiredPropertiesValue: boolean
logger?: Pick<typeof logger, 'debug' | 'info' | 'warn' | 'error' | 'fatal'>
}
const defaultCustomizer = (_bot: unknown, _payload: unknown, structure: unknown) => structure
export function createTransformers(options: RecursivePartial<Transformers>, opts?: CreateTransformerOptions): Transformers {
if (opts?.defaultDesiredPropertiesValue) {
const log = opts.logger ?? logger
log.warn('[Transformers] WARNING WARNING WARNING!')
log.warn(
'[Transformers] The defaultDesiredPropertiesValue property is being used and it is NOT RECOMMENDED. In fact it was WARNED AGAINST. It is extremely bad practice.',
)
log.warn('[Transformers] It is a bit painful to work with and get started, but it has massive long term benefits.')
log.warn('[Transformers] ----------------------------------------------------------------')
}
return {
customizers: {
activity: options.customizers?.activity ?? defaultCustomizer,
activityInstance: options.customizers?.activityInstance ?? defaultCustomizer,
activityLocation: options.customizers?.activityLocation ?? defaultCustomizer,
application: options.customizers?.application ?? defaultCustomizer,
applicationCommand: options.customizers?.applicationCommand ?? defaultCustomizer,
applicationCommandOption: options.customizers?.applicationCommandOption ?? defaultCustomizer,
applicationCommandOptionChoice: options.customizers?.applicationCommandOptionChoice ?? defaultCustomizer,
applicationCommandPermission: options.customizers?.applicationCommandPermission ?? defaultCustomizer,
attachment: options.customizers?.attachment ?? defaultCustomizer,
auditLogEntry: options.customizers?.auditLogEntry ?? defaultCustomizer,
automodActionExecution: options.customizers?.automodActionExecution ?? defaultCustomizer,
automodRule: options.customizers?.automodRule ?? defaultCustomizer,
avatarDecorationData: options.customizers?.avatarDecorationData ?? defaultCustomizer,
channel: options.customizers?.channel ?? defaultCustomizer,
component: options.customizers?.component ?? defaultCustomizer,
defaultReactionEmoji: options.customizers?.defaultReactionEmoji ?? defaultCustomizer,
embed: options.customizers?.embed ?? defaultCustomizer,
emoji: options.customizers?.emoji ?? defaultCustomizer,
entitlement: options.customizers?.entitlement ?? defaultCustomizer,
forumTag: options.customizers?.forumTag ?? defaultCustomizer,
gatewayBot: options.customizers?.gatewayBot ?? defaultCustomizer,
guild: options.customizers?.guild ?? defaultCustomizer,
guildOnboarding: options.customizers?.guildOnboarding ?? defaultCustomizer,
guildOnboardingPrompt: options.customizers?.guildOnboardingPrompt ?? defaultCustomizer,
guildOnboardingPromptOption: options.customizers?.guildOnboardingPromptOption ?? defaultCustomizer,
integration: options.customizers?.integration ?? defaultCustomizer,
interaction: options.customizers?.interaction ?? defaultCustomizer,
interactionCallback: options.customizers?.interactionCallback ?? defaultCustomizer,
interactionCallbackResponse: options.customizers?.interactionCallbackResponse ?? defaultCustomizer,
interactionDataOptions: options.customizers?.interactionDataOptions ?? defaultCustomizer,
interactionDataResolved: options.customizers?.interactionDataResolved ?? defaultCustomizer,
interactionResource: options?.customizers?.interactionResource ?? defaultCustomizer,
invite: options.customizers?.invite ?? defaultCustomizer,
inviteStageInstance: options.customizers?.inviteStageInstance ?? defaultCustomizer,
member: options.customizers?.member ?? defaultCustomizer,
message: options.customizers?.message ?? defaultCustomizer,
messageCall: options.customizers?.messageCall ?? defaultCustomizer,
messageInteractionMetadata: options.customizers?.messageInteractionMetadata ?? defaultCustomizer,
messageSnapshot: options.customizers?.messageSnapshot ?? defaultCustomizer,
poll: options.customizers?.poll ?? defaultCustomizer,
pollMedia: options.customizers?.pollMedia ?? defaultCustomizer,
presence: options.customizers?.presence ?? defaultCustomizer,
role: options.customizers?.role ?? defaultCustomizer,
scheduledEvent: options.customizers?.scheduledEvent ?? defaultCustomizer,
scheduledEventRecurrenceRule: options.customizers?.scheduledEventRecurrenceRule ?? defaultCustomizer,
sku: options.customizers?.sku ?? defaultCustomizer,
soundboardSound: options.customizers?.soundboardSound ?? defaultCustomizer,
stageInstance: options.customizers?.stageInstance ?? defaultCustomizer,
sticker: options.customizers?.sticker ?? defaultCustomizer,
stickerPack: options.customizers?.stickerPack ?? defaultCustomizer,
subscription: options.customizers?.subscription ?? defaultCustomizer,
team: options.customizers?.team ?? defaultCustomizer,
template: options.customizers?.template ?? defaultCustomizer,
threadMember: options.customizers?.threadMember ?? defaultCustomizer,
threadMemberGuildCreate: options.customizers?.threadMemberGuildCreate ?? defaultCustomizer,
user: options.customizers?.user ?? defaultCustomizer,
voiceRegion: options.customizers?.voiceRegion ?? defaultCustomizer,
voiceState: options.customizers?.voiceState ?? defaultCustomizer,
webhook: options.customizers?.webhook ?? defaultCustomizer,
welcomeScreen: options.customizers?.welcomeScreen ?? defaultCustomizer,
widget: options.customizers?.widget ?? defaultCustomizer,
widgetSettings: options.customizers?.widgetSettings ?? defaultCustomizer,
},
desiredProperties: createDesiredPropertiesObject(options.desiredProperties ?? {}, opts?.defaultDesiredPropertiesValue ?? false),
reverse: {
activity: options.reverse?.activity ?? transformActivityToDiscordActivity,
allowedMentions: options.reverse?.allowedMentions ?? transformAllowedMentionsToDiscordAllowedMentions,
application: options.reverse?.application ?? transformApplicationToDiscordApplication,
applicationCommand: options.reverse?.applicationCommand ?? transformApplicationCommandToDiscordApplicationCommand,
applicationCommandOption: options.reverse?.applicationCommandOption ?? transformApplicationCommandOptionToDiscordApplicationCommandOption,
applicationCommandOptionChoice:
options.reverse?.applicationCommandOptionChoice ?? transformApplicationCommandOptionChoiceToDiscordApplicationCommandOptionChoice,
attachment: options.reverse?.attachment ?? transformAttachmentToDiscordAttachment,
component: options.reverse?.component ?? transformComponentToDiscordComponent,
createApplicationCommand: options.reverse?.createApplicationCommand ?? transformCreateApplicationCommandToDiscordCreateApplicationCommand,
embed: options.reverse?.embed ?? transformEmbedToDiscordEmbed,
interactionResponse: options.reverse?.interactionResponse ?? transformInteractionResponseToDiscordInteractionResponse,
member: options.reverse?.member ?? transformMemberToDiscordMember,
snowflake: options.reverse?.snowflake ?? bigintToSnowflake,
team: options.reverse?.team ?? transformTeamToDiscordTeam,
user: options.reverse?.user ?? transformUserToDiscordUser,
},
activity: options.activity ?? transformActivity,
activityInstance: options.activityInstance ?? transformActivityInstance,
activityLocation: options.activityLocation ?? transformActivityLocation,
application: options.application ?? transformApplication,
applicationCommand: options.applicationCommand ?? transformApplicationCommand,
applicationCommandOption: options.applicationCommandOption ?? transformApplicationCommandOption,
applicationCommandOptionChoice: options.applicationCommandOptionChoice ?? transformApplicationCommandOptionChoice,
applicationCommandPermission: options.applicationCommandPermission ?? transformApplicationCommandPermission,
attachment: options.attachment ?? transformAttachment,
auditLogEntry: options.auditLogEntry ?? transformAuditLogEntry,
automodActionExecution: options.automodActionExecution ?? transformAutoModerationActionExecution,
automodRule: options.automodRule ?? transformAutoModerationRule,
avatarDecorationData: options.avatarDecorationData ?? transformAvatarDecorationData,
channel: options.channel ?? transformChannel,
component: options.component ?? transformComponent,
defaultReactionEmoji: options.defaultReactionEmoji ?? transformDefaultReactionEmoji,
embed: options.embed ?? transformEmbed,
emoji: options.emoji ?? transformEmoji,
entitlement: options.entitlement ?? transformEntitlement,
forumTag: options.forumTag ?? transformForumTag,
gatewayBot: options.gatewayBot ?? transformGatewayBot,
guild: options.guild ?? transformGuild,
guildOnboarding: options.guildOnboarding ?? transformGuildOnboarding,
guildOnboardingPrompt: options.guildOnboardingPrompt ?? transformGuildOnboardingPrompt,
guildOnboardingPromptOption: options.guildOnboardingPromptOption ?? transformGuildOnboardingPromptOption,
integration: options.integration ?? transformIntegration,
interaction: options.interaction ?? transformInteraction,
interactionCallback: options.interactionCallback ?? transformInteractionCallback,
interactionCallbackResponse: options.interactionCallbackResponse ?? transformInteractionCallbackResponse,
interactionDataOptions: options.interactionDataOptions ?? transformInteractionDataOption,
interactionDataResolved: options.interactionDataResolved ?? transformInteractionDataResolved,
interactionResource: options.interactionResource ?? transformInteractionResource,
invite: options.invite ?? transformInvite,
inviteStageInstance: options.inviteStageInstance ?? transformInviteStageInstance,
member: options.member ?? transformMember,
message: options.message ?? transformMessage,
messageCall: options.messageCall ?? transformMessageCall,
messageInteractionMetadata: options.messageInteractionMetadata ?? transformMessageInteractionMetadata,
messageSnapshot: options.messageSnapshot ?? transformMessageSnapshot,
poll: options.poll ?? transformPoll,
pollMedia: options.pollMedia ?? transformPollMedia,
presence: options.presence ?? transformPresence,
role: options.role ?? transformRole,
scheduledEvent: options.scheduledEvent ?? transformScheduledEvent,
scheduledEventRecurrenceRule: options.scheduledEventRecurrenceRule ?? transformScheduledEventRecurrenceRule,
sku: options.sku ?? transformSku,
soundboardSound: options.soundboardSound ?? transformSoundboardSound,
snowflake: options.snowflake ?? snowflakeToBigint,
stageInstance: options.stageInstance ?? transformStageInstance,
sticker: options.sticker ?? transformSticker,
stickerPack: options.stickerPack ?? transformStickerPack,
subscription: options.subscription ?? transformSubscription,
team: options.team ?? transformTeam,
template: options.template ?? transformTemplate,
threadMember: options.threadMember ?? transformThreadMember,
threadMemberGuildCreate: options.threadMemberGuildCreate ?? transformThreadMemberGuildCreate,
user: options.user ?? transformUser,
voiceRegion: options.voiceRegion ?? transformVoiceRegion,
voiceState: options.voiceState ?? transformVoiceState,
webhook: options.webhook ?? transformWebhook,
welcomeScreen: options.welcomeScreen ?? transformWelcomeScreen,
widget: options.widget ?? transformWidget,
widgetSettings: options.widgetSettings ?? transformWidgetSettings,
}
}
export function createDesiredPropertiesObject(
desiredProperties: RecursivePartial<TransformersDesiredProperties>,
defaultValue = false,
): TransformersDesiredProperties {
return {
activityInstance: {
applicationId: defaultValue,
instanceId: defaultValue,
launchId: defaultValue,
location: defaultValue,
users: defaultValue,
...desiredProperties.activityInstance,
},
activityLocation: {
channelId: defaultValue,
guildId: defaultValue,
id: defaultValue,
kind: defaultValue,
...desiredProperties.activityLocation,
},
attachment: {
id: defaultValue,
filename: defaultValue,
title: defaultValue,
contentType: defaultValue,
size: defaultValue,
url: defaultValue,
proxyUrl: defaultValue,
height: defaultValue,
width: defaultValue,
ephemeral: defaultValue,
description: defaultValue,
duration_secs: defaultValue,
waveform: defaultValue,
flags: defaultValue,
...desiredProperties.attachment,
},
channel: {
type: defaultValue,
position: defaultValue,
name: defaultValue,
topic: defaultValue,
nsfw: defaultValue,
bitrate: defaultValue,
userLimit: defaultValue,
rateLimitPerUser: defaultValue,
rtcRegion: defaultValue,
videoQualityMode: defaultValue,
guildId: defaultValue,
lastPinTimestamp: defaultValue,
permissionOverwrites: defaultValue,
id: defaultValue,
permissions: defaultValue,
lastMessageId: defaultValue,
ownerId: defaultValue,
applicationId: defaultValue,
managed: defaultValue,
parentId: defaultValue,
memberCount: defaultValue,
messageCount: defaultValue,
archiveTimestamp: defaultValue,
defaultAutoArchiveDuration: defaultValue,
autoArchiveDuration: defaultValue,
botIsMember: defaultValue,
archived: defaultValue,
locked: defaultValue,
invitable: defaultValue,
createTimestamp: defaultValue,
newlyCreated: defaultValue,
flags: defaultValue,
appliedTags: defaultValue,
availableTags: defaultValue,
defaultForumLayout: defaultValue,
defaultReactionEmoji: defaultValue,
defaultSortOrder: defaultValue,
defaultThreadRateLimitPerUser: defaultValue,
icon: defaultValue,
member: defaultValue,
recipients: defaultValue,
totalMessageSent: defaultValue,
...desiredProperties.channel,
},
forumTag: {
emojiId: defaultValue,
emojiName: defaultValue,
id: defaultValue,
moderated: defaultValue,
name: defaultValue,
...desiredProperties.forumTag,
},
emoji: {
id: defaultValue,
name: defaultValue,
roles: defaultValue,
user: defaultValue,
...desiredProperties.emoji,
},
defaultReactionEmoji: {
emojiId: defaultValue,
emojiName: defaultValue,
...desiredProperties.defaultReactionEmoji,
},
guild: {
afkTimeout: defaultValue,
approximateMemberCount: defaultValue,
approximatePresenceCount: defaultValue,
defaultMessageNotifications: defaultValue,
description: defaultValue,
explicitContentFilter: defaultValue,
maxMembers: defaultValue,
maxPresences: defaultValue,
maxVideoChannelUsers: defaultValue,
mfaLevel: defaultValue,
name: defaultValue,
channels: defaultValue,
emojis: defaultValue,
iconHash: defaultValue,
large: defaultValue,
members: defaultValue,
owner: defaultValue,
presences: defaultValue,
roles: defaultValue,
stickers: defaultValue,
threads: defaultValue,
toggles: defaultValue,
unavailable: defaultValue,
voiceStates: defaultValue,
widgetEnabled: defaultValue,
nsfwLevel: defaultValue,
preferredLocale: defaultValue,
premiumSubscriptionCount: defaultValue,
premiumTier: defaultValue,
stageInstances: defaultValue,
systemChannelFlags: defaultValue,
vanityUrlCode: defaultValue,
verificationLevel: defaultValue,
welcomeScreen: defaultValue,
discoverySplash: defaultValue,
joinedAt: defaultValue,
memberCount: defaultValue,
shardId: defaultValue,
icon: defaultValue,
banner: defaultValue,
splash: defaultValue,
id: defaultValue,
ownerId: defaultValue,
permissions: defaultValue,
afkChannelId: defaultValue,
widgetChannelId: defaultValue,
applicationId: defaultValue,
systemChannelId: defaultValue,
rulesChannelId: defaultValue,
publicUpdatesChannelId: defaultValue,
premiumProgressBarEnabled: defaultValue,
safetyAlertsChannelId: defaultValue,
...desiredProperties.guild,
},
interaction: {
id: defaultValue,
applicationId: defaultValue,
type: defaultValue,
guild: defaultValue,
guildId: defaultValue,
channel: defaultValue,
channelId: defaultValue,
member: defaultValue,
user: defaultValue,
token: defaultValue,
version: defaultValue,
message: defaultValue,
data: defaultValue,
locale: defaultValue,
guildLocale: defaultValue,
appPermissions: defaultValue,
authorizingIntegrationOwners: defaultValue,
context: defaultValue,
...desiredProperties.interaction,
},
interactionCallback: {
type: defaultValue,
id: defaultValue,
activityInstanceId: defaultValue,
responseMessageEphemeral: defaultValue,
responseMessageId: defaultValue,
responseMessageLoading: defaultValue,
...desiredProperties.interactionCallback,
},
interactionCallbackResponse: {
interaction: defaultValue,
resource: defaultValue,
...desiredProperties.interactionCallbackResponse,
},
interactionResource: {
type: defaultValue,
activityInstance: defaultValue,
message: defaultValue,
...desiredProperties.interactionResource,
},
invite: {
type: defaultValue,
channelId: defaultValue,
code: defaultValue,
createdAt: defaultValue,
guildId: defaultValue,
inviter: defaultValue,
maxAge: defaultValue,
maxUses: defaultValue,
targetType: defaultValue,
targetUser: defaultValue,
targetApplication: defaultValue,
temporary: defaultValue,
uses: defaultValue,
approximateMemberCount: defaultValue,
approximatePresenceCount: defaultValue,
guildScheduledEvent: defaultValue,
stageInstance: defaultValue,
expiresAt: defaultValue,
...desiredProperties.invite,
},
member: {
id: defaultValue,
guildId: defaultValue,
user: defaultValue,
nick: defaultValue,
roles: defaultValue,
joinedAt: defaultValue,
premiumSince: defaultValue,
avatar: defaultValue,
banner: defaultValue,
permissions: defaultValue,
communicationDisabledUntil: defaultValue,
flags: defaultValue,
toggles: defaultValue,
avatarDecorationData: defaultValue,
...desiredProperties.member,
},
message: {
activity: defaultValue,
application: defaultValue,
applicationId: defaultValue,
attachments: defaultValue,
author: defaultValue,
channelId: defaultValue,
components: defaultValue,
content: defaultValue,
editedTimestamp: defaultValue,
embeds: defaultValue,
guildId: defaultValue,
id: defaultValue,
interactionMetadata: defaultValue,
interaction: defaultValue,
member: defaultValue,
mentionedChannelIds: defaultValue,
mentionedRoleIds: defaultValue,
mentions: defaultValue,
messageReference: defaultValue,
messageSnapshots: defaultValue,
referencedMessage: defaultValue,
nonce: defaultValue,
reactions: defaultValue,
stickerItems: defaultValue,
thread: defaultValue,
type: defaultValue,
webhookId: defaultValue,
poll: defaultValue,
call: defaultValue,
...desiredProperties.message,
},
messageSnapshot: {
message: defaultValue,
...desiredProperties.messageSnapshot,
},
messageInteractionMetadata: {
id: defaultValue,
type: defaultValue,
user: defaultValue,
authorizingIntegrationOwners: defaultValue,
originalResponseMessageId: defaultValue,
interactedMessageId: defaultValue,
triggeringInteractionMetadata: defaultValue,
targetMessageId: defaultValue,
targetUser: defaultValue,
...desiredProperties.messageInteractionMetadata,
},
messageInteraction: {
id: defaultValue,
member: defaultValue,
name: defaultValue,
type: defaultValue,
user: defaultValue,
...desiredProperties.messageInteraction,
},
messageReference: {
messageId: defaultValue,
channelId: defaultValue,
guildId: defaultValue,
...desiredProperties.messageReference,
},
messageCall: {
participants: defaultValue,
endedTimestamp: defaultValue,
...desiredProperties.messageCall,
},
role: {
name: defaultValue,
guildId: defaultValue,
position: defaultValue,
color: defaultValue,
id: defaultValue,
permissions: defaultValue,
icon: defaultValue,
unicodeEmoji: defaultValue,
flags: defaultValue,
tags: defaultValue,
toggles: defaultValue,
...desiredProperties.role,
},
scheduledEvent: {
id: defaultValue,
guildId: defaultValue,
channelId: defaultValue,
creatorId: defaultValue,
scheduledStartTime: defaultValue,
scheduledEndTime: defaultValue,
entityId: defaultValue,
creator: defaultValue,
name: defaultValue,
description: defaultValue,
privacyLevel: defaultValue,
status: defaultValue,
entityType: defaultValue,
userCount: defaultValue,
location: defaultValue,
image: defaultValue,
recurrenceRule: defaultValue,
...desiredProperties.scheduledEvent,
},
scheduledEventRecurrenceRule: {
start: defaultValue,
end: defaultValue,
frequency: defaultValue,
interval: defaultValue,
byWeekday: defaultValue,
byNWeekday: defaultValue,
byMonth: defaultValue,
byMonthDay: defaultValue,
byYearDay: defaultValue,
count: defaultValue,
...desiredProperties.scheduledEventRecurrenceRule,
},
stageInstance: {
id: defaultValue,
guildId: defaultValue,
channelId: defaultValue,
topic: defaultValue,
guildScheduledEventId: defaultValue,
...desiredProperties.stageInstance,
},
inviteStageInstance: {
members: defaultValue,
participantCount: defaultValue,
speakerCount: defaultValue,
topic: defaultValue,
...desiredProperties.inviteStageInstance,
},
sticker: {
id: defaultValue,
packId: defaultValue,
name: defaultValue,
description: defaultValue,
tags: defaultValue,
type: defaultValue,
formatType: defaultValue,
available: defaultValue,
guildId: defaultValue,
user: defaultValue,
sortValue: defaultValue,
...desiredProperties.sticker,
},
subscription: {
id: defaultValue,
userId: defaultValue,
skuIds: defaultValue,
entitlementIds: defaultValue,
currentPeriodStart: defaultValue,
currentPeriodEnd: defaultValue,
status: defaultValue,
canceledAt: defaultValue,
country: defaultValue,
...desiredProperties.subscription,
},
user: {
username: defaultValue,
globalName: defaultValue,
locale: defaultValue,
flags: defaultValue,
premiumType: defaultValue,
publicFlags: defaultValue,
accentColor: defaultValue,
id: defaultValue,
discriminator: defaultValue,
avatar: defaultValue,
email: defaultValue,
banner: defaultValue,
avatarDecorationData: defaultValue,
toggles: defaultValue,
...desiredProperties.user,
},
avatarDecorationData: {
asset: defaultValue,
skuId: defaultValue,
...desiredProperties.avatarDecorationData,
},
webhook: {
id: defaultValue,
type: defaultValue,
guildId: defaultValue,
channelId: defaultValue,
user: defaultValue,
name: defaultValue,
avatar: defaultValue,
token: defaultValue,
applicationId: defaultValue,
sourceGuild: defaultValue,
sourceChannel: defaultValue,
url: defaultValue,
...desiredProperties.webhook,
},
guildOnboarding: {
defaultChannelIds: defaultValue,
enabled: defaultValue,
guildId: defaultValue,
mode: defaultValue,
prompts: defaultValue,
...desiredProperties.guildOnboarding,
},
guildOnboardingPrompt: {
id: defaultValue,
inOnboarding: defaultValue,
options: defaultValue,
required: defaultValue,
singleSelect: defaultValue,
title: defaultValue,
type: defaultValue,
...desiredProperties.guildOnboardingPrompt,
},
guildOnboardingPromptOption: {
channelIds: defaultValue,
description: defaultValue,
emoji: defaultValue,
id: defaultValue,
roleIds: defaultValue,
title: defaultValue,
...desiredProperties.guildOnboardingPromptOption,
},
entitlement: {
id: defaultValue,
skuId: defaultValue,
userId: defaultValue,
guildId: defaultValue,
applicationId: defaultValue,
type: defaultValue,
deleted: defaultValue,
startsAt: defaultValue,
endsAt: defaultValue,
consumed: defaultValue,
...desiredProperties.entitlement,
},
sku: {
id: defaultValue,
type: defaultValue,
applicationId: defaultValue,
name: defaultValue,
slug: defaultValue,
flags: defaultValue,
...desiredProperties.sku,
},
voiceState: {
requestToSpeakTimestamp: defaultValue,
channelId: defaultValue,
guildId: defaultValue,
toggles: defaultValue,
sessionId: defaultValue,
userId: defaultValue,
...desiredProperties.voiceState,
},
poll: {
question: defaultValue,
answers: defaultValue,
expiry: defaultValue,
layoutType: defaultValue,
allowMultiselect: defaultValue,
results: defaultValue,
...desiredProperties.poll,
},
pollAnswer: {
answerId: defaultValue,
pollMedia: defaultValue,
...desiredProperties.pollAnswer,
},
pollResult: {
isFinalized: defaultValue,
answerCounts: defaultValue,
...desiredProperties.pollResult,
},
pollAnswerCount: {
id: defaultValue,
count: defaultValue,
meVoted: defaultValue,
...desiredProperties.pollAnswerCount,
},
pollMedia: {
text: defaultValue,
emoji: defaultValue,
...desiredProperties.pollMedia,
},
soundboardSound: {
name: defaultValue,
soundId: defaultValue,
volume: defaultValue,
emojiId: defaultValue,
emojiName: defaultValue,
guildId: defaultValue,
available: defaultValue,
user: defaultValue,
...desiredProperties.soundboardSound,
},
}
}