From 82378fc2e8f4fd7e56b5a80eb6a6d3a8315e388e Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Sun, 13 Jul 2025 21:32:22 +0100 Subject: [PATCH] refactor: Deprecate `ready` event in favor of `clientReady` (#10969) * refactor: deprecate ready event * refactor: tweak message Co-Authored-By: Vlad Frangu * Update packages/discord.js/src/client/websocket/WebSocketManager.js Co-authored-by: Qjuh <76154676+Qjuh@users.noreply.github.com> * chore: disable max-len --------- Co-authored-by: Vlad Frangu Co-authored-by: Qjuh <76154676+Qjuh@users.noreply.github.com> --- .../src/client/websocket/WebSocketManager.js | 17 +++++++++++++++++ packages/discord.js/src/util/Events.js | 4 ++-- packages/discord.js/typings/index.d.ts | 4 +++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/discord.js/src/client/websocket/WebSocketManager.js b/packages/discord.js/src/client/websocket/WebSocketManager.js index 8a9e0261a..360715bd3 100644 --- a/packages/discord.js/src/client/websocket/WebSocketManager.js +++ b/packages/discord.js/src/client/websocket/WebSocketManager.js @@ -19,6 +19,7 @@ const Status = require('../../util/Status'); const WebSocketShardEvents = require('../../util/WebSocketShardEvents'); let zlib; +let deprecationEmitted = false; try { zlib = require('zlib-sync'); @@ -379,6 +380,22 @@ class WebSocketManager extends EventEmitter { /** * Emitted when the client becomes ready to start working. * @event Client#ready + * @deprecated Use {@link Client#event:clientReady} instead. + * @param {Client} client The client + */ + if (this.client.emit('ready', this.client) && !deprecationEmitted) { + deprecationEmitted = true; + + process.emitWarning( + // eslint-disable-next-line max-len + 'The ready event has been renamed to clientReady to distinguish it from the gateway READY event and will only emit under that name in v15. Please use clientReady instead.', + 'DeprecationWarning', + ); + } + + /** + * Emitted when the client becomes ready to start working. + * @event Client#clientReady * @param {Client} client The client */ this.client.emit(Events.ClientReady, this.client); diff --git a/packages/discord.js/src/util/Events.js b/packages/discord.js/src/util/Events.js index a1999bf76..ac01707ef 100644 --- a/packages/discord.js/src/util/Events.js +++ b/packages/discord.js/src/util/Events.js @@ -12,7 +12,7 @@ * @property {string} ChannelDelete channelDelete * @property {string} ChannelPinsUpdate channelPinsUpdate * @property {string} ChannelUpdate channelUpdate - * @property {string} ClientReady ready + * @property {string} ClientReady clientReady * @property {string} Debug debug * @property {string} EntitlementCreate entitlementCreate * @property {string} EntitlementUpdate entitlementUpdate @@ -108,7 +108,7 @@ module.exports = { ChannelDelete: 'channelDelete', ChannelPinsUpdate: 'channelPinsUpdate', ChannelUpdate: 'channelUpdate', - ClientReady: 'ready', + ClientReady: 'clientReady', Debug: 'debug', EntitlementCreate: 'entitlementCreate', EntitlementUpdate: 'entitlementUpdate', diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 7e67ecb1f..acee26ddb 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -5790,6 +5790,7 @@ export interface ClientEvents { oldChannel: DMChannel | NonThreadGuildBasedChannel, newChannel: DMChannel | NonThreadGuildBasedChannel, ]; + clientReady: [client: Client]; debug: [message: string]; warn: [message: string]; emojiCreate: [emoji: GuildEmoji]; @@ -5850,6 +5851,7 @@ export interface ClientEvents { newMessage: OmitPartialGroupDMChannel, ]; presenceUpdate: [oldPresence: Presence | null, newPresence: Presence]; + /** @deprecated Use {@link ClientEvents.ClientReady} instead. */ ready: [client: Client]; invalidated: []; roleCreate: [role: Role]; @@ -6035,7 +6037,7 @@ export enum Events { AutoModerationRuleCreate = 'autoModerationRuleCreate', AutoModerationRuleDelete = 'autoModerationRuleDelete', AutoModerationRuleUpdate = 'autoModerationRuleUpdate', - ClientReady = 'ready', + ClientReady = 'clientReady', EntitlementCreate = 'entitlementCreate', EntitlementDelete = 'entitlementDelete', EntitlementUpdate = 'entitlementUpdate',