From 0faac04b69f1dda3dc860cd584af100e36a40917 Mon Sep 17 00:00:00 2001 From: Rodry <38259440+ImRodry@users.noreply.github.com> Date: Tue, 12 Apr 2022 11:19:27 -0400 Subject: [PATCH] feat: allow emoji strings to be passed through constructors (#7718) * feat: allow strings to be passed through constructors * fix: don't overwrite emoji with raw data --- packages/discord.js/src/structures/ButtonBuilder.js | 6 ++++-- .../discord.js/src/structures/SelectMenuBuilder.js | 13 +++++++++++-- packages/discord.js/typings/index.d.ts | 4 ++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/discord.js/src/structures/ButtonBuilder.js b/packages/discord.js/src/structures/ButtonBuilder.js index 986195b0f..2eab82803 100644 --- a/packages/discord.js/src/structures/ButtonBuilder.js +++ b/packages/discord.js/src/structures/ButtonBuilder.js @@ -5,8 +5,10 @@ const Transformers = require('../util/Transformers'); const Util = require('../util/Util'); class ButtonBuilder extends BuildersButtonComponent { - constructor(data) { - super(Transformers.toSnakeCase(data)); + constructor({ emoji, ...data }) { + super( + Transformers.toSnakeCase({ ...data, emoji: emoji && typeof emoji === 'string' ? Util.parseEmoji(emoji) : emoji }), + ); } /** diff --git a/packages/discord.js/src/structures/SelectMenuBuilder.js b/packages/discord.js/src/structures/SelectMenuBuilder.js index 649191de4..2cf0c1167 100644 --- a/packages/discord.js/src/structures/SelectMenuBuilder.js +++ b/packages/discord.js/src/structures/SelectMenuBuilder.js @@ -2,10 +2,19 @@ const { SelectMenuBuilder: BuildersSelectMenuComponent, isJSONEncodable } = require('@discordjs/builders'); const Transformers = require('../util/Transformers'); +const Util = require('../util/Util'); class SelectMenuBuilder extends BuildersSelectMenuComponent { - constructor(data) { - super(Transformers.toSnakeCase(data)); + constructor({ options, ...data }) { + super( + Transformers.toSnakeCase({ + options: options.map(({ emoji, ...option }) => ({ + ...option, + emoji: emoji && typeof emoji === 'string' ? Util.parseEmoji(emoji) : emoji, + })), + ...data, + }), + ); } /** diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 9440e2207..51db4d3af 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -4685,7 +4685,7 @@ export interface MessageActivity { export interface BaseButtonComponentData extends BaseComponentData { disabled?: boolean; - emoji?: APIMessageComponentEmoji; + emoji?: ComponentEmojiResolvable; label?: string; } @@ -4819,7 +4819,7 @@ export interface MessageSelectOption { export interface SelectMenuComponentOptionData { default?: boolean; description?: string; - emoji?: APIMessageComponentEmoji; + emoji?: ComponentEmojiResolvable; label: string; value: string; }