refactor(embed): allow hex strings in setColor() (#7593)

This commit is contained in:
Suneet Tipirneni
2022-03-06 10:26:41 -05:00
committed by GitHub
parent 89073903a2
commit 79d6c0489c
3 changed files with 24 additions and 2 deletions

View File

@@ -2,11 +2,27 @@
const { Embed: BuildersEmbed } = require('@discordjs/builders'); const { Embed: BuildersEmbed } = require('@discordjs/builders');
const Transformers = require('../util/Transformers'); const Transformers = require('../util/Transformers');
const { Util } = require('../util/Util');
/**
* Represents an embed object
*/
class Embed extends BuildersEmbed { class Embed extends BuildersEmbed {
constructor(data) { constructor(data) {
super(Transformers.toSnakeCase(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; module.exports = Embed;

View File

@@ -542,6 +542,7 @@ export interface EmbedProviderData {
export class Embed extends BuildersEmbed { export class Embed extends BuildersEmbed {
public constructor(data?: EmbedData | APIEmbed); public constructor(data?: EmbedData | APIEmbed);
public override setColor(color: ColorResolvable | null): this;
} }
export interface MappedChannelCategoryTypes { export interface MappedChannelCategoryTypes {
@@ -3779,7 +3780,7 @@ export type ColorResolvable =
| 'DarkButNotBlack' | 'DarkButNotBlack'
| 'NotQuiteBlack' | 'NotQuiteBlack'
| 'Random' | 'Random'
| readonly [number, number, number] | readonly [red: number, green: number, blue: number]
| number | number
| HexColorString; | HexColorString;

View File

@@ -107,9 +107,9 @@ import {
CategoryChannelChildManager, CategoryChannelChildManager,
ActionRowData, ActionRowData,
MessageActionRowComponentData, MessageActionRowComponentData,
Embed,
} from '.'; } from '.';
import { expectAssignable, expectDeprecated, expectNotAssignable, expectNotType, expectType } from 'tsd'; import { expectAssignable, expectDeprecated, expectNotAssignable, expectNotType, expectType } from 'tsd';
import { Embed } from '@discordjs/builders';
// Test type transformation: // Test type transformation:
declare const serialize: <T>(value: T) => Serialized<T>; declare const serialize: <T>(value: T) => Serialized<T>;
@@ -1342,6 +1342,11 @@ new ButtonComponent({
style: ButtonStyle.Danger, style: ButtonStyle.Danger,
}); });
// @ts-expect-error
new Embed().setColor('abc');
new Embed().setColor('#ffffff');
expectNotAssignable<ActionRowData<MessageActionRowComponentData>>({ expectNotAssignable<ActionRowData<MessageActionRowComponentData>>({
type: ComponentType.ActionRow, type: ComponentType.ActionRow,
components: [ components: [