From 0dff969e16a8879a0fc889567bd540cb1b82a682 Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Tue, 2 Sep 2025 13:28:15 +0400 Subject: [PATCH] refactor(ActionsManager): Register actions without using class name (#11080) * refactor: register actions without using class name * fix: this is `module.exports` --- .../discord.js/scripts/generateRequires.mjs | 8 +- .../src/client/actions/ActionsManager.js | 132 +++++++++--------- .../src/client/websocket/handlers/index.js | 10 +- 3 files changed, 76 insertions(+), 74 deletions(-) diff --git a/packages/discord.js/scripts/generateRequires.mjs b/packages/discord.js/scripts/generateRequires.mjs index b6e28db8a..4f46d95e4 100644 --- a/packages/discord.js/scripts/generateRequires.mjs +++ b/packages/discord.js/scripts/generateRequires.mjs @@ -36,12 +36,14 @@ async function writeClientActionImports() { for (const file of (await readdir(actionsDirectory)).sort()) { if (file === 'Action.js' || file === 'ActionsManager.js') continue; - lines.push(` this.register(require('./${file.slice(0, -3)}'));`); + const actionName = file.slice(0, -3); + + lines.push(` this.${actionName} = this.load(require('./${file}'));`); } lines.push(' }\n'); - lines.push(' register(Action) {'); - lines.push(" this[Action.name.replace(/Action$/, '')] = new Action(this.client);"); + lines.push(' load(Action) {'); + lines.push(' return new Action(this.client);'); lines.push(' }'); lines.push('}\n'); lines.push('module.exports = ActionsManager;\n'); diff --git a/packages/discord.js/src/client/actions/ActionsManager.js b/packages/discord.js/src/client/actions/ActionsManager.js index ab9429349..f76ee3427 100644 --- a/packages/discord.js/src/client/actions/ActionsManager.js +++ b/packages/discord.js/src/client/actions/ActionsManager.js @@ -11,74 +11,74 @@ class ActionsManager { constructor(client) { this.client = client; - this.register(require('./ApplicationCommandPermissionsUpdate')); - this.register(require('./AutoModerationActionExecution')); - this.register(require('./AutoModerationRuleCreate')); - this.register(require('./AutoModerationRuleDelete')); - this.register(require('./AutoModerationRuleUpdate')); - this.register(require('./ChannelCreate')); - this.register(require('./ChannelDelete')); - this.register(require('./ChannelUpdate')); - this.register(require('./EntitlementCreate')); - this.register(require('./EntitlementDelete')); - this.register(require('./EntitlementUpdate')); - this.register(require('./GuildAuditLogEntryCreate')); - this.register(require('./GuildBanAdd')); - this.register(require('./GuildBanRemove')); - this.register(require('./GuildChannelsPositionUpdate')); - this.register(require('./GuildDelete')); - this.register(require('./GuildEmojiCreate')); - this.register(require('./GuildEmojiDelete')); - this.register(require('./GuildEmojiUpdate')); - this.register(require('./GuildEmojisUpdate')); - this.register(require('./GuildIntegrationsUpdate')); - this.register(require('./GuildMemberRemove')); - this.register(require('./GuildMemberUpdate')); - this.register(require('./GuildRoleCreate')); - this.register(require('./GuildRoleDelete')); - this.register(require('./GuildRoleUpdate')); - this.register(require('./GuildRolesPositionUpdate')); - this.register(require('./GuildScheduledEventCreate')); - this.register(require('./GuildScheduledEventDelete')); - this.register(require('./GuildScheduledEventUpdate')); - this.register(require('./GuildScheduledEventUserAdd')); - this.register(require('./GuildScheduledEventUserRemove')); - this.register(require('./GuildSoundboardSoundDelete.js')); - this.register(require('./GuildStickerCreate')); - this.register(require('./GuildStickerDelete')); - this.register(require('./GuildStickerUpdate')); - this.register(require('./GuildStickersUpdate')); - this.register(require('./GuildUpdate')); - this.register(require('./InteractionCreate')); - this.register(require('./InviteCreate')); - this.register(require('./InviteDelete')); - this.register(require('./MessageCreate')); - this.register(require('./MessageDelete')); - this.register(require('./MessageDeleteBulk')); - this.register(require('./MessagePollVoteAdd')); - this.register(require('./MessagePollVoteRemove')); - this.register(require('./MessageReactionAdd')); - this.register(require('./MessageReactionRemove')); - this.register(require('./MessageReactionRemoveAll')); - this.register(require('./MessageReactionRemoveEmoji')); - this.register(require('./MessageUpdate')); - this.register(require('./PresenceUpdate')); - this.register(require('./StageInstanceCreate')); - this.register(require('./StageInstanceDelete')); - this.register(require('./StageInstanceUpdate')); - this.register(require('./ThreadCreate')); - this.register(require('./ThreadDelete')); - this.register(require('./ThreadListSync')); - this.register(require('./ThreadMemberUpdate')); - this.register(require('./ThreadMembersUpdate')); - this.register(require('./TypingStart')); - this.register(require('./UserUpdate')); - this.register(require('./VoiceStateUpdate')); - this.register(require('./WebhooksUpdate')); + this.ApplicationCommandPermissionsUpdate = this.load(require('./ApplicationCommandPermissionsUpdate.js')); + this.AutoModerationActionExecution = this.load(require('./AutoModerationActionExecution.js')); + this.AutoModerationRuleCreate = this.load(require('./AutoModerationRuleCreate.js')); + this.AutoModerationRuleDelete = this.load(require('./AutoModerationRuleDelete.js')); + this.AutoModerationRuleUpdate = this.load(require('./AutoModerationRuleUpdate.js')); + this.ChannelCreate = this.load(require('./ChannelCreate.js')); + this.ChannelDelete = this.load(require('./ChannelDelete.js')); + this.ChannelUpdate = this.load(require('./ChannelUpdate.js')); + this.EntitlementCreate = this.load(require('./EntitlementCreate.js')); + this.EntitlementDelete = this.load(require('./EntitlementDelete.js')); + this.EntitlementUpdate = this.load(require('./EntitlementUpdate.js')); + this.GuildAuditLogEntryCreate = this.load(require('./GuildAuditLogEntryCreate.js')); + this.GuildBanAdd = this.load(require('./GuildBanAdd.js')); + this.GuildBanRemove = this.load(require('./GuildBanRemove.js')); + this.GuildChannelsPositionUpdate = this.load(require('./GuildChannelsPositionUpdate.js')); + this.GuildDelete = this.load(require('./GuildDelete.js')); + this.GuildEmojiCreate = this.load(require('./GuildEmojiCreate.js')); + this.GuildEmojiDelete = this.load(require('./GuildEmojiDelete.js')); + this.GuildEmojiUpdate = this.load(require('./GuildEmojiUpdate.js')); + this.GuildEmojisUpdate = this.load(require('./GuildEmojisUpdate.js')); + this.GuildIntegrationsUpdate = this.load(require('./GuildIntegrationsUpdate.js')); + this.GuildMemberRemove = this.load(require('./GuildMemberRemove.js')); + this.GuildMemberUpdate = this.load(require('./GuildMemberUpdate.js')); + this.GuildRoleCreate = this.load(require('./GuildRoleCreate.js')); + this.GuildRoleDelete = this.load(require('./GuildRoleDelete.js')); + this.GuildRoleUpdate = this.load(require('./GuildRoleUpdate.js')); + this.GuildRolesPositionUpdate = this.load(require('./GuildRolesPositionUpdate.js')); + this.GuildScheduledEventCreate = this.load(require('./GuildScheduledEventCreate.js')); + this.GuildScheduledEventDelete = this.load(require('./GuildScheduledEventDelete.js')); + this.GuildScheduledEventUpdate = this.load(require('./GuildScheduledEventUpdate.js')); + this.GuildScheduledEventUserAdd = this.load(require('./GuildScheduledEventUserAdd.js')); + this.GuildScheduledEventUserRemove = this.load(require('./GuildScheduledEventUserRemove.js')); + this.GuildSoundboardSoundDelete = this.load(require('./GuildSoundboardSoundDelete.js')); + this.GuildStickerCreate = this.load(require('./GuildStickerCreate.js')); + this.GuildStickerDelete = this.load(require('./GuildStickerDelete.js')); + this.GuildStickerUpdate = this.load(require('./GuildStickerUpdate.js')); + this.GuildStickersUpdate = this.load(require('./GuildStickersUpdate.js')); + this.GuildUpdate = this.load(require('./GuildUpdate.js')); + this.InteractionCreate = this.load(require('./InteractionCreate.js')); + this.InviteCreate = this.load(require('./InviteCreate.js')); + this.InviteDelete = this.load(require('./InviteDelete.js')); + this.MessageCreate = this.load(require('./MessageCreate.js')); + this.MessageDelete = this.load(require('./MessageDelete.js')); + this.MessageDeleteBulk = this.load(require('./MessageDeleteBulk.js')); + this.MessagePollVoteAdd = this.load(require('./MessagePollVoteAdd.js')); + this.MessagePollVoteRemove = this.load(require('./MessagePollVoteRemove.js')); + this.MessageReactionAdd = this.load(require('./MessageReactionAdd.js')); + this.MessageReactionRemove = this.load(require('./MessageReactionRemove.js')); + this.MessageReactionRemoveAll = this.load(require('./MessageReactionRemoveAll.js')); + this.MessageReactionRemoveEmoji = this.load(require('./MessageReactionRemoveEmoji.js')); + this.MessageUpdate = this.load(require('./MessageUpdate.js')); + this.PresenceUpdate = this.load(require('./PresenceUpdate.js')); + this.StageInstanceCreate = this.load(require('./StageInstanceCreate.js')); + this.StageInstanceDelete = this.load(require('./StageInstanceDelete.js')); + this.StageInstanceUpdate = this.load(require('./StageInstanceUpdate.js')); + this.ThreadCreate = this.load(require('./ThreadCreate.js')); + this.ThreadDelete = this.load(require('./ThreadDelete.js')); + this.ThreadListSync = this.load(require('./ThreadListSync.js')); + this.ThreadMemberUpdate = this.load(require('./ThreadMemberUpdate.js')); + this.ThreadMembersUpdate = this.load(require('./ThreadMembersUpdate.js')); + this.TypingStart = this.load(require('./TypingStart.js')); + this.UserUpdate = this.load(require('./UserUpdate.js')); + this.VoiceStateUpdate = this.load(require('./VoiceStateUpdate.js')); + this.WebhooksUpdate = this.load(require('./WebhooksUpdate.js')); } - register(Action) { - this[Action.name.replace(/Action$/, '')] = new Action(this.client); + load(Action) { + return new Action(this.client); } } diff --git a/packages/discord.js/src/client/websocket/handlers/index.js b/packages/discord.js/src/client/websocket/handlers/index.js index c85d10ffc..62315be2d 100644 --- a/packages/discord.js/src/client/websocket/handlers/index.js +++ b/packages/discord.js/src/client/websocket/handlers/index.js @@ -32,10 +32,10 @@ const handlers = Object.fromEntries([ ['GUILD_SCHEDULED_EVENT_UPDATE', require('./GUILD_SCHEDULED_EVENT_UPDATE')], ['GUILD_SCHEDULED_EVENT_USER_ADD', require('./GUILD_SCHEDULED_EVENT_USER_ADD')], ['GUILD_SCHEDULED_EVENT_USER_REMOVE', require('./GUILD_SCHEDULED_EVENT_USER_REMOVE')], - ['GUILD_SOUNDBOARD_SOUNDS_UPDATE', require('./GUILD_SOUNDBOARD_SOUNDS_UPDATE.js')], - ['GUILD_SOUNDBOARD_SOUND_CREATE', require('./GUILD_SOUNDBOARD_SOUND_CREATE.js')], - ['GUILD_SOUNDBOARD_SOUND_DELETE', require('./GUILD_SOUNDBOARD_SOUND_DELETE.js')], - ['GUILD_SOUNDBOARD_SOUND_UPDATE', require('./GUILD_SOUNDBOARD_SOUND_UPDATE.js')], + ['GUILD_SOUNDBOARD_SOUNDS_UPDATE', require('./GUILD_SOUNDBOARD_SOUNDS_UPDATE')], + ['GUILD_SOUNDBOARD_SOUND_CREATE', require('./GUILD_SOUNDBOARD_SOUND_CREATE')], + ['GUILD_SOUNDBOARD_SOUND_DELETE', require('./GUILD_SOUNDBOARD_SOUND_DELETE')], + ['GUILD_SOUNDBOARD_SOUND_UPDATE', require('./GUILD_SOUNDBOARD_SOUND_UPDATE')], ['GUILD_STICKERS_UPDATE', require('./GUILD_STICKERS_UPDATE')], ['GUILD_UPDATE', require('./GUILD_UPDATE')], ['INTERACTION_CREATE', require('./INTERACTION_CREATE')], @@ -54,7 +54,7 @@ const handlers = Object.fromEntries([ ['PRESENCE_UPDATE', require('./PRESENCE_UPDATE')], ['READY', require('./READY')], ['RESUMED', require('./RESUMED')], - ['SOUNDBOARD_SOUNDS', require('./SOUNDBOARD_SOUNDS.js')], + ['SOUNDBOARD_SOUNDS', require('./SOUNDBOARD_SOUNDS')], ['STAGE_INSTANCE_CREATE', require('./STAGE_INSTANCE_CREATE')], ['STAGE_INSTANCE_DELETE', require('./STAGE_INSTANCE_DELETE')], ['STAGE_INSTANCE_UPDATE', require('./STAGE_INSTANCE_UPDATE')],