From 79d6c0489c3d563fdd05de63c4fcf93a6deefce1 Mon Sep 17 00:00:00 2001 From: Suneet Tipirneni <77477100+suneettipirneni@users.noreply.github.com> Date: Sun, 6 Mar 2022 10:26:41 -0500 Subject: [PATCH] refactor(embed): allow hex strings in `setColor()` (#7593) --- packages/discord.js/src/structures/Embed.js | 16 ++++++++++++++++ packages/discord.js/typings/index.d.ts | 3 ++- packages/discord.js/typings/index.test-d.ts | 7 ++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/discord.js/src/structures/Embed.js b/packages/discord.js/src/structures/Embed.js index b200237519ef..9025d566b492 100644 --- a/packages/discord.js/src/structures/Embed.js +++ b/packages/discord.js/src/structures/Embed.js @@ -2,11 +2,27 @@ const { Embed: BuildersEmbed } = require('@discordjs/builders'); const Transformers = require('../util/Transformers'); +const { Util } = require('../util/Util'); +/** + * Represents an embed object + */ class Embed extends BuildersEmbed { constructor(data) { super(Transformers.toSnakeCase(data)); } + + /** + * Sets the color of this embed + * @param {ColorResolvable} color The color of the embed + * @returns {Embed} + */ + setColor(color) { + if (color === null) { + return super.setColor(null); + } + return super.setColor(Util.resolveColor(color)); + } } module.exports = Embed; diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 3027bb644b4d..fccd5d39b985 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -542,6 +542,7 @@ export interface EmbedProviderData { export class Embed extends BuildersEmbed { public constructor(data?: EmbedData | APIEmbed); + public override setColor(color: ColorResolvable | null): this; } export interface MappedChannelCategoryTypes { @@ -3779,7 +3780,7 @@ export type ColorResolvable = | 'DarkButNotBlack' | 'NotQuiteBlack' | 'Random' - | readonly [number, number, number] + | readonly [red: number, green: number, blue: number] | number | HexColorString; diff --git a/packages/discord.js/typings/index.test-d.ts b/packages/discord.js/typings/index.test-d.ts index d922e8724dc4..d1fe99a1a205 100644 --- a/packages/discord.js/typings/index.test-d.ts +++ b/packages/discord.js/typings/index.test-d.ts @@ -107,9 +107,9 @@ import { CategoryChannelChildManager, ActionRowData, MessageActionRowComponentData, + Embed, } from '.'; import { expectAssignable, expectDeprecated, expectNotAssignable, expectNotType, expectType } from 'tsd'; -import { Embed } from '@discordjs/builders'; // Test type transformation: declare const serialize: (value: T) => Serialized; @@ -1342,6 +1342,11 @@ new ButtonComponent({ style: ButtonStyle.Danger, }); +// @ts-expect-error +new Embed().setColor('abc'); + +new Embed().setColor('#ffffff'); + expectNotAssignable>({ type: ComponentType.ActionRow, components: [