From 49ac3a0d993503176f3a10405ccea46ffe602cb8 Mon Sep 17 00:00:00 2001 From: shni Date: Sat, 4 Oct 2025 00:26:59 -0500 Subject: [PATCH] feat: enhance block saving functionality and improve editor message handling --- .../alliaces/createDisplayComponent.ts | 6 ++- .../messages/alliaces/editDisplayComponent.ts | 52 +++++++++++-------- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/src/commands/messages/alliaces/createDisplayComponent.ts b/src/commands/messages/alliaces/createDisplayComponent.ts index 9488a78..6da476c 100644 --- a/src/commands/messages/alliaces/createDisplayComponent.ts +++ b/src/commands/messages/alliaces/createDisplayComponent.ts @@ -318,7 +318,7 @@ async function handleButtonInteraction( break; case "save_block": - await handleSaveBlock(interaction, client, blockName, blockState, originalMessage.guildId!); + await handleSaveBlock(interaction, editorMessage, client, blockName, blockState, originalMessage.guildId!); break; case "cancel_block": @@ -703,6 +703,7 @@ async function handleShowRaw(interaction: ButtonInteraction, blockState: BlockSt async function handleSaveBlock( interaction: ButtonInteraction, + editorMessage: Message, client: Amayo, blockName: string, blockState: BlockState, @@ -722,7 +723,8 @@ async function handleSaveBlock( flags: MessageFlags.Ephemeral }); - logger.info(`Block created: ${blockName} in guild ${guildId}`); + // Cerrar el editor eliminando el mensaje del editor + try { await editorMessage.delete(); } catch {} } catch (error) { //@ts-ignore logger.error("Error saving block:", error); diff --git a/src/commands/messages/alliaces/editDisplayComponent.ts b/src/commands/messages/alliaces/editDisplayComponent.ts index 8984c7b..3198962 100644 --- a/src/commands/messages/alliaces/editDisplayComponent.ts +++ b/src/commands/messages/alliaces/editDisplayComponent.ts @@ -181,7 +181,7 @@ export const command: CommandMessage = { // @ts-ignore await updateEditor(editorMessage, { content: null, - flags: 32768, + flags: MessageFlags.IsComponentsV2, display: await renderPreview(blockState, message.member, message.guild), components: btns(false) }); @@ -196,30 +196,40 @@ export const command: CommandMessage = { if (i.isButton()) { switch (i.customId) { case "save_block": { - await i.deferUpdate(); - await client.prisma.blockV2Config.update({ - where: { guildId_name: { guildId: message.guildId!, name: blockName } }, - //@ts-ignore - data: { config: blockState } - }); - // Mantener el editor activo y los botones funcionando - await updateEditor(editorMessage, { - // @ts-ignore - display: await renderPreview(blockState, message.member, message.guild), - components: btns(false) - }); - // Confirmación efímera + try { await i.deferUpdate(); } catch {} try { - // @ts-ignore - await i.followUp({ flags: 64, content: `✅ Cambios de "${blockName}" guardados.` }); - } catch {} - // No detener el collector para permitir mover/eliminar después de guardar + await client.prisma.blockV2Config.update({ + where: { guildId_name: { guildId: message.guildId!, name: blockName } }, + //@ts-ignore + data: { config: blockState } + }); + try { + // @ts-ignore + await i.followUp({ flags: MessageFlags.Ephemeral, content: `✅ Cambios de "${blockName}" guardados.` }); + } catch {} + // Intentar borrar el editor; si falla, deshabilitar componentes como fallback + try { await editorMessage.delete(); } + catch { + try { + await updateEditor(editorMessage, { + display: { type: 17, components: [ { type: 10, content: '✅ Guardado. Puedes cerrar este mensaje.' } ] }, + components: [] + }); + } catch {} + } + collector.stop('saved'); + } catch (err) { + try { + // @ts-ignore + await i.followUp({ flags: MessageFlags.Ephemeral, content: '❌ Error al guardar el bloque. Inténtalo de nuevo.' }); + } catch {} + } return; } case "cancel_block": { - await i.deferUpdate(); - await editorMessage.delete(); - collector.stop(); + try { await i.deferUpdate(); } catch {} + try { await editorMessage.delete(); } catch {} + collector.stop('cancelled'); return; } case "edit_title": {