Files
discordeno/packages/bot/src/transformers/application.ts
T
2025-06-13 18:47:41 +05:30

77 lines
4.1 KiB
TypeScript

import {
type Application,
type Bot,
type DiscordApplication,
DiscordApplicationIntegrationType,
type DiscordUser,
iconHashToBigInt,
} from '../index.js'
export function transformApplication(bot: Bot, payload: { application: DiscordApplication; shardId: number }): Application {
const application = {
name: payload.application.name,
description: payload.application.description,
rpcOrigins: payload.application.rpc_origins,
botPublic: payload.application.bot_public,
botRequireCodeGrant: payload.application.bot_require_code_grant,
termsOfServiceUrl: payload.application.terms_of_service_url,
privacyPolicyUrl: payload.application.privacy_policy_url,
verifyKey: payload.application.verify_key,
primarySkuId: payload.application.primary_sku_id,
slug: payload.application.slug,
coverImage: payload.application.cover_image ? iconHashToBigInt(payload.application.cover_image) : undefined,
flags: payload.application.flags,
id: bot.transformers.snowflake(payload.application.id),
icon: payload.application.icon ? iconHashToBigInt(payload.application.icon) : undefined,
owner: payload.application.owner
? // @ts-expect-error the partial here wont break anything
bot.transformers.user(bot, payload.application.owner)
: undefined,
team: payload.application.team ? bot.transformers.team(bot, payload.application.team) : undefined,
guildId: payload.application.guild_id ? bot.transformers.snowflake(payload.application.guild_id) : undefined,
customInstallUrl: payload.application.custom_install_url,
// @ts-expect-error the partial here wont break anything
guild: payload.application.guild ? bot.transformers.guild(bot, { guild: payload.application.guild, shardId: payload.shardId }) : undefined,
approximateGuildCount: payload.application.approximate_guild_count,
approximateUserInstallCount: payload.application.approximate_user_install_count,
approximateUserAuthorizationCount: payload.application.approximate_user_authorization_count,
bot: payload.application.bot ? bot.transformers.user(bot, payload.application.bot as DiscordUser) : undefined,
interactionsEndpointUrl: payload.application.interactions_endpoint_url ? payload.application.interactions_endpoint_url : undefined,
redirectUris: payload.application.redirect_uris,
roleConnectionsVerificationUrl: payload.application.role_connections_verification_url,
tags: payload.application.tags,
installParams: payload.application.install_params
? {
scopes: payload.application.install_params.scopes,
permissions: bot.transformers.snowflake(payload.application.install_params.permissions),
}
: undefined,
integrationTypesConfig: payload.application.integration_types_config
? {
[DiscordApplicationIntegrationType.GuildInstall]: payload.application.integration_types_config['0']?.oauth2_install_params
? {
oauth2InstallParams: {
scopes: payload.application.integration_types_config['0'].oauth2_install_params.scopes,
permissions: bot.transformers.snowflake(payload.application.integration_types_config['0'].oauth2_install_params.permissions),
},
}
: undefined,
[DiscordApplicationIntegrationType.UserInstall]: payload.application.integration_types_config['1']?.oauth2_install_params
? {
oauth2InstallParams: {
scopes: payload.application.integration_types_config['1'].oauth2_install_params.scopes,
permissions: bot.transformers.snowflake(payload.application.integration_types_config['1'].oauth2_install_params.permissions),
},
}
: undefined,
}
: undefined,
eventWebhooksUrl: payload.application.event_webhooks_url,
eventWebhooksStatus: payload.application.event_webhooks_status,
eventWebhooksTypes: payload.application.event_webhooks_types,
} as Application
return bot.transformers.customizers.application(bot, payload.application, application)
}