mirror of
https://github.com/discordeno/discordeno.git
synced 2026-09-18 09:17:22 +00:00
feat: integration partial transformer
This commit is contained in:
@@ -40,6 +40,8 @@ import type {
|
||||
DiscordGuildWidget,
|
||||
DiscordGuildWidgetSettings,
|
||||
DiscordIncidentsData,
|
||||
DiscordIntegrationAccount,
|
||||
DiscordIntegrationApplication,
|
||||
DiscordIntegrationCreateUpdate,
|
||||
DiscordInteraction,
|
||||
DiscordInteractionCallback,
|
||||
@@ -129,7 +131,7 @@ import { transformEntitlement } from './transformers/entitlement.js';
|
||||
import { transformGatewayBot, transformSessionStartLimit } from './transformers/gatewayBot.js';
|
||||
import { transformGuild } from './transformers/guild.js';
|
||||
import { transformIncidentsData } from './transformers/incidentsData.js';
|
||||
import { transformIntegration } from './transformers/integration.js';
|
||||
import { transformIntegration, transformIntegrationAccount, transformIntegrationApplication } from './transformers/integration.js';
|
||||
import {
|
||||
transformInteraction,
|
||||
transformInteractionCallback,
|
||||
@@ -220,6 +222,8 @@ import type {
|
||||
GuildWidgetSettings,
|
||||
IncidentsData,
|
||||
Integration,
|
||||
IntegrationAccount,
|
||||
IntegrationApplication,
|
||||
Interaction,
|
||||
InteractionCallback,
|
||||
InteractionCallbackResponse,
|
||||
@@ -314,7 +318,9 @@ export type TransformerInformations = {
|
||||
guildOnboardingPrompt: TransformerInformation<DiscordGuildOnboardingPrompt, GuildOnboardingPrompt, true>;
|
||||
guildOnboardingPromptOption: TransformerInformation<DiscordGuildOnboardingPromptOption, GuildOnboardingPromptOption, true>;
|
||||
incidentsData: TransformerInformation<DiscordIncidentsData, IncidentsData, true>;
|
||||
integration: TransformerInformation<DiscordIntegrationCreateUpdate, Integration, false>;
|
||||
integration: TransformerInformation<DiscordIntegrationCreateUpdate, Integration, true>;
|
||||
integrationAccount: TransformerInformation<DiscordIntegrationAccount, IntegrationAccount, true>;
|
||||
integrationApplication: TransformerInformation<DiscordIntegrationApplication, IntegrationApplication, true>;
|
||||
interaction: TransformerInformation<DiscordInteraction, Interaction, true, { shardId?: number }>;
|
||||
interactionCallback: TransformerInformation<DiscordInteractionCallback, InteractionCallback, true>;
|
||||
interactionCallbackResponse: TransformerInformation<DiscordInteractionCallbackResponse, InteractionCallbackResponse, true, { shardId?: number }>;
|
||||
@@ -447,6 +453,8 @@ export function createTransformers<TProps extends TransformersDesiredProperties,
|
||||
guildOnboardingPromptOption: _options.customizers?.guildOnboardingPromptOption ?? defaultCustomizer,
|
||||
incidentsData: _options.customizers?.incidentsData ?? defaultCustomizer,
|
||||
integration: _options.customizers?.integration ?? defaultCustomizer,
|
||||
integrationAccount: _options.customizers?.integrationAccount ?? defaultCustomizer,
|
||||
integrationApplication: _options.customizers?.integrationApplication ?? defaultCustomizer,
|
||||
interaction: _options.customizers?.interaction ?? defaultCustomizer,
|
||||
interactionCallback: _options.customizers?.interactionCallback ?? defaultCustomizer,
|
||||
interactionCallbackResponse: _options.customizers?.interactionCallbackResponse ?? defaultCustomizer,
|
||||
@@ -557,6 +565,8 @@ export function createTransformers<TProps extends TransformersDesiredProperties,
|
||||
guildOnboardingPromptOption: _options.guildOnboardingPromptOption ?? transformGuildOnboardingPromptOption,
|
||||
incidentsData: _options.incidentsData ?? transformIncidentsData,
|
||||
integration: _options.integration ?? transformIntegration,
|
||||
integrationAccount: _options.integrationAccount ?? transformIntegrationAccount,
|
||||
integrationApplication: _options.integrationApplication ?? transformIntegrationApplication,
|
||||
interaction: _options.interaction ?? transformInteraction,
|
||||
interactionCallback: _options.interactionCallback ?? transformInteractionCallback,
|
||||
interactionCallbackResponse: _options.interactionCallbackResponse ?? transformInteractionCallbackResponse,
|
||||
|
||||
@@ -1,39 +1,57 @@
|
||||
import type { DiscordIntegrationCreateUpdate } from '@discordeno/types';
|
||||
import type { DiscordIntegrationAccount, DiscordIntegrationApplication, DiscordIntegrationCreateUpdate } from '@discordeno/types';
|
||||
import { iconHashToBigInt } from '@discordeno/utils';
|
||||
import type { Bot } from '../bot.js';
|
||||
import type { Integration } from './types.js';
|
||||
import type { DesiredPropertiesBehavior, SetupDesiredProps, TransformersDesiredProperties } from '../desiredProperties.js';
|
||||
import { callCustomizer } from '../transformers.js';
|
||||
import type { Integration, IntegrationAccount, IntegrationApplication } from './types.js';
|
||||
|
||||
export function transformIntegration(bot: Bot, payload: DiscordIntegrationCreateUpdate) {
|
||||
const integration = {
|
||||
guildId: bot.transformers.snowflake(payload.guild_id),
|
||||
id: bot.transformers.snowflake(payload.id),
|
||||
name: payload.name,
|
||||
type: payload.type,
|
||||
enabled: payload.enabled,
|
||||
syncing: payload.syncing,
|
||||
roleId: payload.role_id ? bot.transformers.snowflake(payload.role_id) : undefined,
|
||||
enableEmoticons: payload.enable_emoticons,
|
||||
expireBehavior: payload.expire_behavior,
|
||||
expireGracePeriod: payload.expire_grace_period,
|
||||
user: payload.user ? bot.transformers.user(bot, payload.user) : undefined,
|
||||
account: {
|
||||
id: bot.transformers.snowflake(payload.account.id),
|
||||
name: payload.account.name,
|
||||
},
|
||||
syncedAt: payload.synced_at ? Date.parse(payload.synced_at) : undefined,
|
||||
subscriberCount: payload.subscriber_count,
|
||||
revoked: payload.revoked,
|
||||
application: payload.application
|
||||
? {
|
||||
id: bot.transformers.snowflake(payload.application.id),
|
||||
name: payload.application.name,
|
||||
icon: payload.application.icon ? iconHashToBigInt(payload.application.icon) : undefined,
|
||||
description: payload.application.description,
|
||||
bot: payload.application.bot ? bot.transformers.user(bot, payload.application.bot) : undefined,
|
||||
}
|
||||
: undefined,
|
||||
scopes: payload.scopes,
|
||||
} as Integration;
|
||||
export function transformIntegration(bot: Bot, payload: Partial<DiscordIntegrationCreateUpdate>, extra?: { partial?: boolean }) {
|
||||
const integration = {} as SetupDesiredProps<Integration, TransformersDesiredProperties, DesiredPropertiesBehavior>;
|
||||
|
||||
return bot.transformers.customizers.integration(bot, payload, integration);
|
||||
if (payload.guild_id) integration.guildId = bot.transformers.snowflake(payload.guild_id);
|
||||
if (payload.id) integration.id = bot.transformers.snowflake(payload.id);
|
||||
if (payload.name) integration.name = payload.name;
|
||||
if (payload.type) integration.type = payload.type;
|
||||
if (payload.enabled) integration.enabled = payload.enabled;
|
||||
if (payload.syncing) integration.syncing = payload.syncing;
|
||||
if (payload.role_id) integration.roleId = bot.transformers.snowflake(payload.role_id);
|
||||
if (payload.enable_emoticons) integration.enableEmoticons = payload.enable_emoticons;
|
||||
if (payload.expire_behavior) integration.expireBehavior = payload.expire_behavior;
|
||||
if (payload.expire_grace_period) integration.expireGracePeriod = payload.expire_grace_period;
|
||||
if (payload.user) integration.user = bot.transformers.user(bot, payload.user);
|
||||
if (payload.account) integration.account = bot.transformers.integrationAccount(bot, payload.account);
|
||||
if (payload.synced_at) integration.syncedAt = Date.parse(payload.synced_at);
|
||||
if (payload.subscriber_count) integration.subscriberCount = payload.subscriber_count;
|
||||
if (payload.revoked) integration.revoked = payload.revoked;
|
||||
if (payload.application) integration.application = bot.transformers.integrationApplication(bot, payload.application);
|
||||
if (payload.scopes) integration.scopes = payload.scopes;
|
||||
|
||||
return callCustomizer('integration', bot, payload, integration, {
|
||||
partial: extra?.partial ?? false,
|
||||
});
|
||||
}
|
||||
|
||||
export function transformIntegrationAccount(bot: Bot, payload: Partial<DiscordIntegrationAccount>, extra?: { partial?: boolean }) {
|
||||
const integrationAccount = {} as SetupDesiredProps<IntegrationAccount, TransformersDesiredProperties, DesiredPropertiesBehavior>;
|
||||
|
||||
if (payload.id !== undefined) integrationAccount.id = bot.transformers.snowflake(payload.id);
|
||||
if (payload.name !== undefined) integrationAccount.name = payload.name;
|
||||
|
||||
return callCustomizer('integrationAccount', bot, payload, integrationAccount, {
|
||||
partial: extra?.partial ?? false,
|
||||
});
|
||||
}
|
||||
|
||||
export function transformIntegrationApplication(bot: Bot, payload: Partial<DiscordIntegrationApplication>, extra?: { partial?: boolean }) {
|
||||
const integrationApplication = {} as SetupDesiredProps<IntegrationApplication, TransformersDesiredProperties, DesiredPropertiesBehavior>;
|
||||
|
||||
if (payload.id !== undefined) integrationApplication.id = bot.transformers.snowflake(payload.id);
|
||||
if (payload.name !== undefined) integrationApplication.name = payload.name;
|
||||
if (payload.description !== undefined) integrationApplication.description = payload.description;
|
||||
if (payload.icon !== undefined) integrationApplication.icon = payload.icon ? iconHashToBigInt(payload.icon) : undefined;
|
||||
if (payload.bot !== undefined) integrationApplication.bot = bot.transformers.user(bot, payload.bot);
|
||||
|
||||
return callCustomizer('integrationApplication', bot, payload, integrationApplication, {
|
||||
partial: extra?.partial ?? false,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1048,7 +1048,7 @@ export interface Integration {
|
||||
id: bigint;
|
||||
name: string;
|
||||
guildId: bigint;
|
||||
type: 'twitch' | 'youtube' | 'discord';
|
||||
type: 'twitch' | 'youtube' | 'discord' | 'guild_subscription';
|
||||
account: IntegrationAccount;
|
||||
scopes: OAuth2Scope[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user