From fc1f8ae3748354cb2fc847bbc3e631d1adb7b2e6 Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Tue, 30 Jan 2024 07:17:45 +0000 Subject: [PATCH] refactor(Messages): Improve `ColorConvert` error (#10108) * feat(Messages): improve `ColorConvert` error * style(Util): consistency --- packages/discord.js/src/errors/Messages.js | 2 +- packages/discord.js/src/util/Util.js | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/discord.js/src/errors/Messages.js b/packages/discord.js/src/errors/Messages.js index 5c6e3ac71fa9..2819f17f71b1 100644 --- a/packages/discord.js/src/errors/Messages.js +++ b/packages/discord.js/src/errors/Messages.js @@ -39,7 +39,7 @@ const Messages = { `Calculated invalid shard ${shard} for guild ${guild} with ${count} shards.`, [DjsErrorCodes.ColorRange]: 'Color must be within the range 0 - 16777215 (0xFFFFFF).', - [DjsErrorCodes.ColorConvert]: 'Unable to convert color to a number.', + [DjsErrorCodes.ColorConvert]: color => `Unable to convert "${color}" to a number.`, [DjsErrorCodes.InviteOptionsMissingChannel]: 'A valid guild channel must be provided when GuildScheduledEvent is EXTERNAL.', diff --git a/packages/discord.js/src/util/Util.js b/packages/discord.js/src/util/Util.js index b238a22c8834..38b0f7fbb8d1 100644 --- a/packages/discord.js/src/util/Util.js +++ b/packages/discord.js/src/util/Util.js @@ -278,19 +278,26 @@ function verifyString( * @returns {number} A color */ function resolveColor(color) { + let resolvedColor; + if (typeof color === 'string') { if (color === 'Random') return Math.floor(Math.random() * (0xffffff + 1)); if (color === 'Default') return 0; if (/^#?[\da-f]{6}$/i.test(color)) return parseInt(color.replace('#', ''), 16); - color = Colors[color]; + resolvedColor = Colors[color]; } else if (Array.isArray(color)) { - color = (color[0] << 16) + (color[1] << 8) + color[2]; + resolvedColor = (color[0] << 16) + (color[1] << 8) + color[2]; + } + + if (resolvedColor < 0 || resolvedColor > 0xffffff) { + throw new DiscordjsRangeError(ErrorCodes.ColorRange); } - if (color < 0 || color > 0xffffff) throw new DiscordjsRangeError(ErrorCodes.ColorRange); - if (typeof color !== 'number' || Number.isNaN(color)) throw new DiscordjsTypeError(ErrorCodes.ColorConvert); + if (typeof resolvedColor !== 'number' || Number.isNaN(resolvedColor)) { + throw new DiscordjsTypeError(ErrorCodes.ColorConvert, color); + } - return color; + return resolvedColor; } /**