refactor(ActionsManager): Register actions without using class name (#11080)

* refactor: register actions without using class name

* fix: this is `module.exports`
This commit is contained in:
Jiralite
2025-09-02 13:28:15 +04:00
committed by GitHub
parent 79d999e4c1
commit 0dff969e16
3 changed files with 76 additions and 74 deletions

View File

@@ -36,12 +36,14 @@ async function writeClientActionImports() {
for (const file of (await readdir(actionsDirectory)).sort()) { for (const file of (await readdir(actionsDirectory)).sort()) {
if (file === 'Action.js' || file === 'ActionsManager.js') continue; 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(' }\n');
lines.push(' register(Action) {'); lines.push(' load(Action) {');
lines.push(" this[Action.name.replace(/Action$/, '')] = new Action(this.client);"); lines.push(' return new Action(this.client);');
lines.push(' }'); lines.push(' }');
lines.push('}\n'); lines.push('}\n');
lines.push('module.exports = ActionsManager;\n'); lines.push('module.exports = ActionsManager;\n');

View File

@@ -11,74 +11,74 @@ class ActionsManager {
constructor(client) { constructor(client) {
this.client = client; this.client = client;
this.register(require('./ApplicationCommandPermissionsUpdate')); this.ApplicationCommandPermissionsUpdate = this.load(require('./ApplicationCommandPermissionsUpdate.js'));
this.register(require('./AutoModerationActionExecution')); this.AutoModerationActionExecution = this.load(require('./AutoModerationActionExecution.js'));
this.register(require('./AutoModerationRuleCreate')); this.AutoModerationRuleCreate = this.load(require('./AutoModerationRuleCreate.js'));
this.register(require('./AutoModerationRuleDelete')); this.AutoModerationRuleDelete = this.load(require('./AutoModerationRuleDelete.js'));
this.register(require('./AutoModerationRuleUpdate')); this.AutoModerationRuleUpdate = this.load(require('./AutoModerationRuleUpdate.js'));
this.register(require('./ChannelCreate')); this.ChannelCreate = this.load(require('./ChannelCreate.js'));
this.register(require('./ChannelDelete')); this.ChannelDelete = this.load(require('./ChannelDelete.js'));
this.register(require('./ChannelUpdate')); this.ChannelUpdate = this.load(require('./ChannelUpdate.js'));
this.register(require('./EntitlementCreate')); this.EntitlementCreate = this.load(require('./EntitlementCreate.js'));
this.register(require('./EntitlementDelete')); this.EntitlementDelete = this.load(require('./EntitlementDelete.js'));
this.register(require('./EntitlementUpdate')); this.EntitlementUpdate = this.load(require('./EntitlementUpdate.js'));
this.register(require('./GuildAuditLogEntryCreate')); this.GuildAuditLogEntryCreate = this.load(require('./GuildAuditLogEntryCreate.js'));
this.register(require('./GuildBanAdd')); this.GuildBanAdd = this.load(require('./GuildBanAdd.js'));
this.register(require('./GuildBanRemove')); this.GuildBanRemove = this.load(require('./GuildBanRemove.js'));
this.register(require('./GuildChannelsPositionUpdate')); this.GuildChannelsPositionUpdate = this.load(require('./GuildChannelsPositionUpdate.js'));
this.register(require('./GuildDelete')); this.GuildDelete = this.load(require('./GuildDelete.js'));
this.register(require('./GuildEmojiCreate')); this.GuildEmojiCreate = this.load(require('./GuildEmojiCreate.js'));
this.register(require('./GuildEmojiDelete')); this.GuildEmojiDelete = this.load(require('./GuildEmojiDelete.js'));
this.register(require('./GuildEmojiUpdate')); this.GuildEmojiUpdate = this.load(require('./GuildEmojiUpdate.js'));
this.register(require('./GuildEmojisUpdate')); this.GuildEmojisUpdate = this.load(require('./GuildEmojisUpdate.js'));
this.register(require('./GuildIntegrationsUpdate')); this.GuildIntegrationsUpdate = this.load(require('./GuildIntegrationsUpdate.js'));
this.register(require('./GuildMemberRemove')); this.GuildMemberRemove = this.load(require('./GuildMemberRemove.js'));
this.register(require('./GuildMemberUpdate')); this.GuildMemberUpdate = this.load(require('./GuildMemberUpdate.js'));
this.register(require('./GuildRoleCreate')); this.GuildRoleCreate = this.load(require('./GuildRoleCreate.js'));
this.register(require('./GuildRoleDelete')); this.GuildRoleDelete = this.load(require('./GuildRoleDelete.js'));
this.register(require('./GuildRoleUpdate')); this.GuildRoleUpdate = this.load(require('./GuildRoleUpdate.js'));
this.register(require('./GuildRolesPositionUpdate')); this.GuildRolesPositionUpdate = this.load(require('./GuildRolesPositionUpdate.js'));
this.register(require('./GuildScheduledEventCreate')); this.GuildScheduledEventCreate = this.load(require('./GuildScheduledEventCreate.js'));
this.register(require('./GuildScheduledEventDelete')); this.GuildScheduledEventDelete = this.load(require('./GuildScheduledEventDelete.js'));
this.register(require('./GuildScheduledEventUpdate')); this.GuildScheduledEventUpdate = this.load(require('./GuildScheduledEventUpdate.js'));
this.register(require('./GuildScheduledEventUserAdd')); this.GuildScheduledEventUserAdd = this.load(require('./GuildScheduledEventUserAdd.js'));
this.register(require('./GuildScheduledEventUserRemove')); this.GuildScheduledEventUserRemove = this.load(require('./GuildScheduledEventUserRemove.js'));
this.register(require('./GuildSoundboardSoundDelete.js')); this.GuildSoundboardSoundDelete = this.load(require('./GuildSoundboardSoundDelete.js'));
this.register(require('./GuildStickerCreate')); this.GuildStickerCreate = this.load(require('./GuildStickerCreate.js'));
this.register(require('./GuildStickerDelete')); this.GuildStickerDelete = this.load(require('./GuildStickerDelete.js'));
this.register(require('./GuildStickerUpdate')); this.GuildStickerUpdate = this.load(require('./GuildStickerUpdate.js'));
this.register(require('./GuildStickersUpdate')); this.GuildStickersUpdate = this.load(require('./GuildStickersUpdate.js'));
this.register(require('./GuildUpdate')); this.GuildUpdate = this.load(require('./GuildUpdate.js'));
this.register(require('./InteractionCreate')); this.InteractionCreate = this.load(require('./InteractionCreate.js'));
this.register(require('./InviteCreate')); this.InviteCreate = this.load(require('./InviteCreate.js'));
this.register(require('./InviteDelete')); this.InviteDelete = this.load(require('./InviteDelete.js'));
this.register(require('./MessageCreate')); this.MessageCreate = this.load(require('./MessageCreate.js'));
this.register(require('./MessageDelete')); this.MessageDelete = this.load(require('./MessageDelete.js'));
this.register(require('./MessageDeleteBulk')); this.MessageDeleteBulk = this.load(require('./MessageDeleteBulk.js'));
this.register(require('./MessagePollVoteAdd')); this.MessagePollVoteAdd = this.load(require('./MessagePollVoteAdd.js'));
this.register(require('./MessagePollVoteRemove')); this.MessagePollVoteRemove = this.load(require('./MessagePollVoteRemove.js'));
this.register(require('./MessageReactionAdd')); this.MessageReactionAdd = this.load(require('./MessageReactionAdd.js'));
this.register(require('./MessageReactionRemove')); this.MessageReactionRemove = this.load(require('./MessageReactionRemove.js'));
this.register(require('./MessageReactionRemoveAll')); this.MessageReactionRemoveAll = this.load(require('./MessageReactionRemoveAll.js'));
this.register(require('./MessageReactionRemoveEmoji')); this.MessageReactionRemoveEmoji = this.load(require('./MessageReactionRemoveEmoji.js'));
this.register(require('./MessageUpdate')); this.MessageUpdate = this.load(require('./MessageUpdate.js'));
this.register(require('./PresenceUpdate')); this.PresenceUpdate = this.load(require('./PresenceUpdate.js'));
this.register(require('./StageInstanceCreate')); this.StageInstanceCreate = this.load(require('./StageInstanceCreate.js'));
this.register(require('./StageInstanceDelete')); this.StageInstanceDelete = this.load(require('./StageInstanceDelete.js'));
this.register(require('./StageInstanceUpdate')); this.StageInstanceUpdate = this.load(require('./StageInstanceUpdate.js'));
this.register(require('./ThreadCreate')); this.ThreadCreate = this.load(require('./ThreadCreate.js'));
this.register(require('./ThreadDelete')); this.ThreadDelete = this.load(require('./ThreadDelete.js'));
this.register(require('./ThreadListSync')); this.ThreadListSync = this.load(require('./ThreadListSync.js'));
this.register(require('./ThreadMemberUpdate')); this.ThreadMemberUpdate = this.load(require('./ThreadMemberUpdate.js'));
this.register(require('./ThreadMembersUpdate')); this.ThreadMembersUpdate = this.load(require('./ThreadMembersUpdate.js'));
this.register(require('./TypingStart')); this.TypingStart = this.load(require('./TypingStart.js'));
this.register(require('./UserUpdate')); this.UserUpdate = this.load(require('./UserUpdate.js'));
this.register(require('./VoiceStateUpdate')); this.VoiceStateUpdate = this.load(require('./VoiceStateUpdate.js'));
this.register(require('./WebhooksUpdate')); this.WebhooksUpdate = this.load(require('./WebhooksUpdate.js'));
} }
register(Action) { load(Action) {
this[Action.name.replace(/Action$/, '')] = new Action(this.client); return new Action(this.client);
} }
} }

View File

@@ -32,10 +32,10 @@ const handlers = Object.fromEntries([
['GUILD_SCHEDULED_EVENT_UPDATE', require('./GUILD_SCHEDULED_EVENT_UPDATE')], ['GUILD_SCHEDULED_EVENT_UPDATE', require('./GUILD_SCHEDULED_EVENT_UPDATE')],
['GUILD_SCHEDULED_EVENT_USER_ADD', require('./GUILD_SCHEDULED_EVENT_USER_ADD')], ['GUILD_SCHEDULED_EVENT_USER_ADD', require('./GUILD_SCHEDULED_EVENT_USER_ADD')],
['GUILD_SCHEDULED_EVENT_USER_REMOVE', require('./GUILD_SCHEDULED_EVENT_USER_REMOVE')], ['GUILD_SCHEDULED_EVENT_USER_REMOVE', require('./GUILD_SCHEDULED_EVENT_USER_REMOVE')],
['GUILD_SOUNDBOARD_SOUNDS_UPDATE', require('./GUILD_SOUNDBOARD_SOUNDS_UPDATE.js')], ['GUILD_SOUNDBOARD_SOUNDS_UPDATE', require('./GUILD_SOUNDBOARD_SOUNDS_UPDATE')],
['GUILD_SOUNDBOARD_SOUND_CREATE', require('./GUILD_SOUNDBOARD_SOUND_CREATE.js')], ['GUILD_SOUNDBOARD_SOUND_CREATE', require('./GUILD_SOUNDBOARD_SOUND_CREATE')],
['GUILD_SOUNDBOARD_SOUND_DELETE', require('./GUILD_SOUNDBOARD_SOUND_DELETE.js')], ['GUILD_SOUNDBOARD_SOUND_DELETE', require('./GUILD_SOUNDBOARD_SOUND_DELETE')],
['GUILD_SOUNDBOARD_SOUND_UPDATE', require('./GUILD_SOUNDBOARD_SOUND_UPDATE.js')], ['GUILD_SOUNDBOARD_SOUND_UPDATE', require('./GUILD_SOUNDBOARD_SOUND_UPDATE')],
['GUILD_STICKERS_UPDATE', require('./GUILD_STICKERS_UPDATE')], ['GUILD_STICKERS_UPDATE', require('./GUILD_STICKERS_UPDATE')],
['GUILD_UPDATE', require('./GUILD_UPDATE')], ['GUILD_UPDATE', require('./GUILD_UPDATE')],
['INTERACTION_CREATE', require('./INTERACTION_CREATE')], ['INTERACTION_CREATE', require('./INTERACTION_CREATE')],
@@ -54,7 +54,7 @@ const handlers = Object.fromEntries([
['PRESENCE_UPDATE', require('./PRESENCE_UPDATE')], ['PRESENCE_UPDATE', require('./PRESENCE_UPDATE')],
['READY', require('./READY')], ['READY', require('./READY')],
['RESUMED', require('./RESUMED')], ['RESUMED', require('./RESUMED')],
['SOUNDBOARD_SOUNDS', require('./SOUNDBOARD_SOUNDS.js')], ['SOUNDBOARD_SOUNDS', require('./SOUNDBOARD_SOUNDS')],
['STAGE_INSTANCE_CREATE', require('./STAGE_INSTANCE_CREATE')], ['STAGE_INSTANCE_CREATE', require('./STAGE_INSTANCE_CREATE')],
['STAGE_INSTANCE_DELETE', require('./STAGE_INSTANCE_DELETE')], ['STAGE_INSTANCE_DELETE', require('./STAGE_INSTANCE_DELETE')],
['STAGE_INSTANCE_UPDATE', require('./STAGE_INSTANCE_UPDATE')], ['STAGE_INSTANCE_UPDATE', require('./STAGE_INSTANCE_UPDATE')],