mirror of
https://github.com/discordeno/discordeno.git
synced 2026-09-17 08:47:22 +00:00
77 lines
4.1 KiB
TypeScript
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)
|
|
}
|