Skip to content

Commit 99482ad

Browse files
committed
refactor: provide GuildEmoji or Emoji instance
1 parent 2b66cd1 commit 99482ad

File tree

5 files changed

+28
-19
lines changed

5 files changed

+28
-19
lines changed

packages/discord.js/src/structures/Guild.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,7 @@ class Guild extends AnonymousGuild {
916916
* The roles assigned to a member when the option is selected
917917
* @property {string} title The title of the option
918918
* @property {?string} [description] The description of the option
919-
* @property {?(EmojiIdentifierResolvable|GuildOnboardingPromptOptionEmoji)} [emoji] The emoji of the option
919+
* @property {?(EmojiIdentifierResolvable|Emoji)} [emoji] The emoji of the option
920920
*/
921921

922922
/**
@@ -939,8 +939,8 @@ class Guild extends AnonymousGuild {
939939
const emoji = resolvePartialEmoji(option.emoji);
940940

941941
return {
942-
channel_ids: option.channels?.map(c => this.channels.resolveId(c)),
943-
role_ids: option.roles?.map(r => this.roles.resolveId(r)),
942+
channel_ids: option.channels?.map(channel => this.channels.resolveId(channel)),
943+
role_ids: option.roles?.map(role => this.roles.resolveId(role)),
944944
title: option.title,
945945
description: option.description,
946946
emoji_animated: emoji?.animated,

packages/discord.js/src/structures/GuildOnboardingPromptOption.js

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
const { Collection } = require('@discordjs/collection');
44
const Base = require('./Base');
5-
const { resolvePartialEmoji } = require('../util/Util');
5+
const { Emoji } = require('./Emoji.js');
66

77
/**
88
* Represents the data of an option from a prompt of a guilds onboarding.
@@ -45,18 +45,11 @@ class GuildOnboardingPromptOption extends Base {
4545
);
4646

4747
/**
48-
* The data for an emoji of a guilds onboarding prompt option
49-
* @typedef {Object} GuildOnboardingPromptOptionEmoji
50-
* @property {?Snowflake} id The id of the emoji
51-
* @property {string} name The name of the emoji
52-
* @property {boolean} animated Whether the emoji is animated
48+
* The raw emoji of the option
49+
* @type {RawEmoji}
50+
* @private
5351
*/
54-
55-
/**
56-
* The emoji of the option
57-
* @type {?GuildOnboardingPromptOptionEmoji}
58-
*/
59-
this.emoji = resolvePartialEmoji(data.emoji);
52+
this._emoji = data.emoji;
6053

6154
/**
6255
* The title of the option
@@ -79,6 +72,15 @@ class GuildOnboardingPromptOption extends Base {
7972
get guild() {
8073
return this.client.guilds.cache.get(this.guildId);
8174
}
75+
76+
/**
77+
* The emoji of this onboarding prompt option
78+
* @type {GuildEmoji|Emoji}
79+
*/
80+
get emoji() {
81+
if (!this._emoji.id && !this._emoji.name) return null;
82+
return this.client.emojis.resolve(this._emoji.id) ?? new Emoji(this.client, this._emoji);
83+
}
8284
}
8385

8486
exports.GuildOnboardingPromptOption = GuildOnboardingPromptOption;

packages/discord.js/src/util/Util.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ function parseEmoji(text) {
9696

9797
/**
9898
* Resolves a partial emoji object from an {@link EmojiIdentifierResolvable}, without checking a Client.
99-
* @param {EmojiIdentifierResolvable} emoji Emoji identifier to resolve
99+
* @param {EmojiIdentifierResolvable|RawEmoji} emoji Emoji identifier to resolve
100100
* @returns {?RawEmoji}
101101
* @private
102102
*/

packages/discord.js/typings/index.d.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1616,12 +1616,14 @@ export class GuildOnboardingPrompt extends Base {
16161616

16171617
export class GuildOnboardingPromptOption extends Base {
16181618
private constructor(client: Client, data: APIGuildOnboardingPromptOption, guildId: Snowflake);
1619+
private _emoji: RawEmoji;
1620+
16191621
public id: Snowflake;
1622+
public get emoji(): Emoji | GuildEmoji | null;
16201623
public get guild(): Guild;
16211624
public guildId: Snowflake;
16221625
public channels: Collection<Snowflake, GuildChannel>;
16231626
public roles: Collection<Snowflake, Role>;
1624-
public emoji: GuildOnboardingPromptOptionEmoji | null;
16251627
public title: string;
16261628
public description: string | null;
16271629
}
@@ -5800,10 +5802,10 @@ export interface GuildOnboardingPromptOptionData {
58005802
roles?: readonly RoleResolvable[] | ReadonlyCollection<Snowflake, Role>;
58015803
title: string;
58025804
description?: string | null;
5803-
emoji?: EmojiIdentifierResolvable | GuildOnboardingPromptOptionEmoji | null;
5805+
emoji?: EmojiIdentifierResolvable | Emoji | null;
58045806
}
58055807

5806-
export interface GuildOnboardingPromptOptionEmoji {
5808+
export interface RawEmoji {
58075809
id: Snowflake | null;
58085810
name: string;
58095811
animated: boolean;

packages/discord.js/typings/index.test-d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ import {
177177
StringSelectMenuComponentData,
178178
ButtonComponentData,
179179
MediaChannel,
180+
Emoji,
180181
} from '.';
181182
import { expectAssignable, expectNotAssignable, expectNotType, expectType } from 'tsd';
182183
import type { ContextMenuCommandBuilder, SlashCommandBuilder } from '@discordjs/builders';
@@ -2319,6 +2320,8 @@ client.on('guildAuditLogEntryCreate', (auditLogEntry, guild) => {
23192320

23202321
expectType<Readonly<GuildMemberFlagsBitField>>(guildMember.flags);
23212322

2323+
declare const emojiResolvable: GuildEmoji | Emoji | string;
2324+
23222325
{
23232326
const onboarding = await guild.fetchOnboarding();
23242327
expectType<GuildOnboarding>(onboarding);
@@ -2337,4 +2340,6 @@ expectType<Readonly<GuildMemberFlagsBitField>>(guildMember.flags);
23372340

23382341
await guild.editOnboarding({ prompts: [prompt] });
23392342
await guild.editOnboarding({ prompts: [{ ...prompt, options: [option] }] });
2343+
2344+
await guild.editOnboarding({ prompts: [{ ...prompt, options: [{ ...option, emoji: emojiResolvable }] }] });
23402345
}

0 commit comments

Comments
 (0)