From 3447ae64d5c5f4ee5e25bbf64888c6634638672b Mon Sep 17 00:00:00 2001 From: shnimlz Date: Sat, 11 Oct 2025 19:50:36 -0500 Subject: [PATCH] =?UTF-8?q?Refactor=20la=20carga=20del=20m=C3=B3dulo=20Mod?= =?UTF-8?q?alSubmitInteraction=20para=20mejorar=20la=20compatibilidad=20y?= =?UTF-8?q?=20la=20gesti=C3=B3n=20de=20errores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++ src/core/patches/discordModalPatch.ts | 63 ++++++++++++++++++++------- 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 0732000..a567e72 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ qodana.yaml # Generados /src/generated/prisma/ + +# Binarios +amayo diff --git a/src/core/patches/discordModalPatch.ts b/src/core/patches/discordModalPatch.ts index c033a33..54bc9e3 100644 --- a/src/core/patches/discordModalPatch.ts +++ b/src/core/patches/discordModalPatch.ts @@ -5,13 +5,32 @@ Source of truth: node_modules/discord.js/src/structures/ModalSubmitInteraction.js */ // eslint-disable-next-line @typescript-eslint/no-var-requires -const { Collection } = require('@discordjs/collection'); +const { Collection } = require("@discordjs/collection"); // eslint-disable-next-line @typescript-eslint/no-var-requires -const ModalModule = require('../../../node_modules/discord.js/src/structures/ModalSubmitInteraction.js'); +const ModalModule = (() => { + try { + const djs = require("discord.js"); + if (djs.ModalSubmitInteraction) + return { ModalSubmitInteraction: djs.ModalSubmitInteraction }; + if (djs.structures && djs.structures.ModalSubmitInteraction) + return { ModalSubmitInteraction: djs.structures.ModalSubmitInteraction }; + // Try to resolve internal path at runtime without static import + return require(require.resolve( + "discord.js/src/structures/ModalSubmitInteraction.js" + )); + } catch { + try { + // Fallback to node_modules relative path if needed + return require("../../../node_modules/discord.js/src/structures/ModalSubmitInteraction.js"); + } catch { + return null; + } + } +})(); export function applyModalSubmitInteractionPatch() { const ModalSubmitInteraction = ModalModule?.ModalSubmitInteraction; - if (!ModalSubmitInteraction || typeof ModalSubmitInteraction !== 'function') { + if (!ModalSubmitInteraction || typeof ModalSubmitInteraction !== "function") { return; // Nothing to patch } @@ -19,16 +38,21 @@ export function applyModalSubmitInteractionPatch() { // Override with a safer version // eslint-disable-next-line func-names - ModalSubmitInteraction.prototype.transformComponent = function (rawComponent: any, resolved: any) { - if ('components' in rawComponent) { + ModalSubmitInteraction.prototype.transformComponent = function ( + rawComponent: any, + resolved: any + ) { + if ("components" in rawComponent) { return { type: rawComponent.type, id: rawComponent.id, - components: rawComponent.components.map((component: any) => this.transformComponent(component, resolved)), + components: rawComponent.components.map((component: any) => + this.transformComponent(component, resolved) + ), }; } - if ('component' in rawComponent) { + if ("component" in rawComponent) { return { type: rawComponent.type, id: rawComponent.id, @@ -41,14 +65,17 @@ export function applyModalSubmitInteractionPatch() { id: rawComponent.id, }; - if ('custom_id' in rawComponent) data.customId = rawComponent.custom_id; - if ('value' in rawComponent) data.value = rawComponent.value; + if ("custom_id" in rawComponent) data.customId = rawComponent.custom_id; + if ("value" in rawComponent) data.value = rawComponent.value; if (rawComponent.values) { data.values = rawComponent.values; if (resolved) { - const collect = (resolvedData: any, resolver: (val: any, id: string) => any) => { + const collect = ( + resolvedData: any, + resolver: (val: any, id: string) => any + ) => { const collection = new Collection(); for (const value of data.values as string[]) { if (resolvedData?.[value]) { @@ -59,12 +86,15 @@ export function applyModalSubmitInteractionPatch() { return collection.size ? collection : null; }; - const users = collect(resolved.users, (user: any) => this.client.users._add(user)); + const users = collect(resolved.users, (user: any) => + this.client.users._add(user) + ); if (users) data.users = users; const channels = collect( resolved.channels, - (channel: any) => this.client.channels._add(channel, this.guild) ?? channel, + (channel: any) => + this.client.channels._add(channel, this.guild) ?? channel ); if (channels) data.channels = channels; @@ -83,7 +113,10 @@ export function applyModalSubmitInteractionPatch() { }); if (members) data.members = members; - const roles = collect(resolved.roles, (role: any) => this.guild?.roles._add(role) ?? role); + const roles = collect( + resolved.roles, + (role: any) => this.guild?.roles._add(role) ?? role + ); if (roles) data.roles = roles; } } @@ -92,6 +125,6 @@ export function applyModalSubmitInteractionPatch() { }; // Keep a reference in case we need to restore - (ModalSubmitInteraction.prototype as any).__originalTransformComponent = original; + (ModalSubmitInteraction.prototype as any).__originalTransformComponent = + original; } -