diff --git a/packages/discord.js/src/structures/GuildOnboarding.js b/packages/discord.js/src/structures/GuildOnboarding.js index e4ed510884c45..7921719211265 100644 --- a/packages/discord.js/src/structures/GuildOnboarding.js +++ b/packages/discord.js/src/structures/GuildOnboarding.js @@ -1,5 +1,7 @@ 'use strict'; +const { _transformGuildOnboardingPrompt } = require('../util/Transformers'); + /** * Represents the onboarding data of a guild. */ @@ -15,7 +17,7 @@ class GuildOnboarding { * The prompts shown during onboarding * @type {GuildOnboardingPrompt[]} */ - this.prompts = data.prompts.map(prompt => this._transformPrompt(prompt)); + this.prompts = data.prompts.map(prompt => _transformGuildOnboardingPrompt(prompt)); /** * The ids of the channels that new members get opted into automatically @@ -42,24 +44,6 @@ class GuildOnboarding { * @property {GuildOnboardingPromptType} type The type of the prompt */ - /** - * Transforms a raw prompt object into a GuildOnboardingPrompt - * @param {Object} prompt The raw prompt object - * @returns {GuildOnboardingPrompt} - * @private - */ - _transformPrompt(prompt) { - return { - id: prompt.id, - options: prompt.options.map(option => this._transformPromptOption(option)), - title: prompt.title, - singleSelect: prompt.single_select, - required: prompt.required, - inOnboarding: prompt.in_onboarding, - type: prompt.type, - }; - } - /** * The data for an option of a guilds onboarding prompt * @typedef {Object} GuildOnboardingPromptOption @@ -77,26 +61,6 @@ class GuildOnboarding { * @property {?Snowflake} id The id of the emoji * @property {?string} name The name of the emoji */ - - /** - * Transforms a raw prompt option object into a GuildOnboardingPromptOption - * @param {Object} option The raw prompt option object - * @returns {GuildOnboardingPromptOption} - * @private - */ - _transformPromptOption(option) { - return { - id: option.id, - channelIds: option.channel_ids, - roleIds: option.role_ids, - emoji: { - id: option.emoji_id, - name: option.emoji_name, - }, - title: option.title, - description: option.description, - }; - } } exports.GuildOnboarding = GuildOnboarding; diff --git a/packages/discord.js/src/util/APITypes.js b/packages/discord.js/src/util/APITypes.js index 18af763d2ef46..35c7ee35ec649 100644 --- a/packages/discord.js/src/util/APITypes.js +++ b/packages/discord.js/src/util/APITypes.js @@ -273,6 +273,11 @@ * @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/GuildNSFWLevel} */ +/** + * @external GuildOnboardingPromptType + * @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/GuildOnboardingPromptType} + */ + /** * @external GuildPremiumTier * @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/GuildPremiumTier} diff --git a/packages/discord.js/src/util/Transformers.js b/packages/discord.js/src/util/Transformers.js index 6b096dfc9f9ec..0ce2dbf7c410c 100644 --- a/packages/discord.js/src/util/Transformers.js +++ b/packages/discord.js/src/util/Transformers.js @@ -16,4 +16,32 @@ function toSnakeCase(obj) { return Object.fromEntries(Object.entries(obj).map(([key, value]) => [snakeCase(key), toSnakeCase(value)])); } -module.exports = { toSnakeCase }; +/** + * Transforms a raw prompt object into a GuildOnboardingPrompt + * @param {Object} prompt The raw prompt object + * @returns {GuildOnboardingPrompt} + * @ignore + */ +function _transformGuildOnboardingPrompt(prompt) { + return { + id: prompt.id, + options: prompt.options.map(option => ({ + id: option.id, + channelIds: option.channel_ids, + roleIds: option.role_ids, + emoji: { + id: option.emoji_id, + name: option.emoji_name, + }, + title: option.title, + description: option.description, + })), + title: prompt.title, + singleSelect: prompt.single_select, + required: prompt.required, + inOnboarding: prompt.in_onboarding, + type: prompt.type, + }; +} + +module.exports = { toSnakeCase, _transformGuildOnboardingPrompt }; diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 7fff903096c2a..a630e8cdd551d 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -1523,9 +1523,6 @@ export class GuildMember extends PartialTextBasedChannel(Base) { export class GuildOnboarding { private constructor(data: any); - private _transformPrompt(prompt: any): GuildOnboardingPrompt; - private _transformPromptOption(option: any): GuildOnboardingPromptOption; - public guildId: Snowflake; public prompts: GuildOnboardingPrompt[]; public defaultChannelIds: Snowflake[];