Skip to content

Commit 16d5bbf

Browse files
committed
chore: add deprecations
1 parent 4728973 commit 16d5bbf

File tree

3 files changed

+40
-12
lines changed

3 files changed

+40
-12
lines changed

packages/discord.js/src/managers/RoleManager.js

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ const PermissionsBitField = require('../util/PermissionsBitField');
1212
const { setPosition, resolveColor } = require('../util/Util');
1313

1414
let cacheWarningEmitted = false;
15+
let deprecationEmittedForCreate = false;
16+
let deprecationEmittedForEdit = false;
1517

1618
/**
1719
* Manages API methods for roles and stores their cache.
@@ -128,6 +130,7 @@ class RoleManager extends CachedManager {
128130
* @typedef {Object} RoleCreateOptions
129131
* @property {string} [name] The name of the new role
130132
* @property {ColorResolvable} [color] The data to create the role with
133+
* <warn>This property is deprecated. Use `colors` instead.</warn>
131134
* @property {RoleColorsResolvable} [colors] The colors to create the role with
132135
* @property {boolean} [hoist] Whether or not the new role should be hoisted
133136
* @property {PermissionResolvable} [permissions] The permissions for the new role
@@ -176,23 +179,35 @@ class RoleManager extends CachedManager {
176179
* .catch(console.error);
177180
*/
178181
async create(options = {}) {
179-
let { permissions, color, icon } = options;
180-
const { name, hoist, position, mentionable, reason, unicodeEmoji } = options;
182+
let { permissions, icon } = options;
183+
const { name, color, hoist, position, mentionable, reason, unicodeEmoji } = options;
181184
if (permissions !== undefined) permissions = new PermissionsBitField(permissions);
182185
if (icon) {
183186
const guildEmojiURL = this.guild.emojis.resolve(icon)?.imageURL();
184187
icon = guildEmojiURL ? await resolveImage(guildEmojiURL) : await resolveImage(icon);
185188
if (typeof icon !== 'string') icon = undefined;
186189
}
187190

188-
color &&= resolveColor(color);
189-
190-
const colors = options.colors && {
191+
let colors = options.colors && {
191192
primary_color: resolveColor(options.colors.primaryColor),
192193
secondary_color: options.colors.secondaryColor && resolveColor(options.colors.secondaryColor),
193194
tertiary_color: options.colors.tertiaryColor && resolveColor(options.colors.tertiaryColor),
194195
};
195196

197+
if (color !== undefined) {
198+
if (!deprecationEmittedForCreate) {
199+
process.emitWarning(`Passing "color" to RoleManager#create() is deprecated. Use "colors" instead.`);
200+
}
201+
202+
deprecationEmittedForCreate = true;
203+
204+
colors = {
205+
primary_color: resolveColor(color),
206+
secondary_color: null,
207+
tertiary_color: null,
208+
};
209+
}
210+
196211
const data = await this.client.rest.post(Routes.guildRoles(this.guild.id), {
197212
body: {
198213
name,
@@ -245,15 +260,28 @@ class RoleManager extends CachedManager {
245260
if (typeof icon !== 'string') icon = undefined;
246261
}
247262

248-
const colors = options.colors && {
263+
let colors = options.colors && {
249264
primary_color: resolveColor(options.colors.primaryColor),
250265
secondary_color: options.colors.secondaryColor && resolveColor(options.colors.secondaryColor),
251266
tertiary_color: options.colors.tertiaryColor && resolveColor(options.colors.tertiaryColor),
252267
};
253268

269+
if (options.color !== undefined) {
270+
if (!deprecationEmittedForEdit) {
271+
process.emitWarning(`Passing "color" to RoleManager#edit() is deprecated. Use "colors" instead.`);
272+
}
273+
274+
deprecationEmittedForEdit = true;
275+
276+
colors = {
277+
primary_color: resolveColor(options.color),
278+
secondary_color: null,
279+
tertiary_color: null,
280+
};
281+
}
282+
254283
const body = {
255284
name: options.name,
256-
color: options.color === undefined ? undefined : resolveColor(options.color),
257285
colors,
258286
hoist: options.hoist,
259287
permissions: options.permissions === undefined ? undefined : new PermissionsBitField(options.permissions),

packages/discord.js/src/structures/Role.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class Role extends Base {
5656
* The base 10 color of the role
5757
*
5858
* @type {number}
59+
* @deprecated Use {@link Role#colors} instead.
5960
*/
6061
this.color = data.color;
6162
}
@@ -256,6 +257,7 @@ class Role extends Base {
256257
* @typedef {Object} RoleData
257258
* @property {string} [name] The name of the role
258259
* @property {ColorResolvable} [color] The color of the role, either a hex string or a base 10 number
260+
* <warn>This property is deprecated. Use `colors` instead.</warn>
259261
* @property {RoleColorsResolvable} [colors] The colors of the role
260262
* @property {boolean} [hoist] Whether or not the role should be hoisted
261263
* @property {number} [position] The position of the role
@@ -316,11 +318,7 @@ class Role extends Base {
316318
* @param {ColorResolvable} color The color of the role
317319
* @param {string} [reason] Reason for changing the role's color
318320
* @returns {Promise<Role>}
319-
* @example
320-
* // Set the color of a role
321-
* role.setColor('#FF0000')
322-
* .then(updated => console.log(`Set color of role to ${updated.color}`))
323-
* .catch(console.error);
321+
* @deprecated Use {@link Role#setColors} instead.
324322
*/
325323
async setColor(color, reason) {
326324
return this.edit({ color, reason });

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3123,6 +3123,7 @@ export class Role extends Base {
31233123
channel: NonThreadGuildBasedChannel | Snowflake,
31243124
checkAdmin?: boolean,
31253125
): Readonly<PermissionsBitField>;
3126+
/** @deprecated Use {@link Role.setColors} instead. */
31263127
public setColor(color: ColorResolvable, reason?: string): Promise<Role>;
31273128
public setColors(colors: RoleColorsResolvable, reason?: string): Promise<Role>;
31283129
public setHoist(hoist?: boolean, reason?: string): Promise<Role>;
@@ -7391,6 +7392,7 @@ export interface ResolvedOverwriteOptions {
73917392

73927393
export interface RoleData {
73937394
name?: string;
7395+
/** @deprecated Use {@link RoleData.colors} instead. */
73947396
color?: ColorResolvable;
73957397
colors?: RoleColorsResolvable;
73967398
hoist?: boolean;

0 commit comments

Comments
 (0)