feat: enhance block saving functionality and improve editor message handling

This commit is contained in:
2025-10-04 00:26:59 -05:00
parent 0fedf1549a
commit 49ac3a0d99
2 changed files with 35 additions and 23 deletions

View File

@@ -318,7 +318,7 @@ async function handleButtonInteraction(
break; break;
case "save_block": case "save_block":
await handleSaveBlock(interaction, client, blockName, blockState, originalMessage.guildId!); await handleSaveBlock(interaction, editorMessage, client, blockName, blockState, originalMessage.guildId!);
break; break;
case "cancel_block": case "cancel_block":
@@ -703,6 +703,7 @@ async function handleShowRaw(interaction: ButtonInteraction, blockState: BlockSt
async function handleSaveBlock( async function handleSaveBlock(
interaction: ButtonInteraction, interaction: ButtonInteraction,
editorMessage: Message,
client: Amayo, client: Amayo,
blockName: string, blockName: string,
blockState: BlockState, blockState: BlockState,
@@ -722,7 +723,8 @@ async function handleSaveBlock(
flags: MessageFlags.Ephemeral 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) { } catch (error) {
//@ts-ignore //@ts-ignore
logger.error("Error saving block:", error); logger.error("Error saving block:", error);

View File

@@ -181,7 +181,7 @@ export const command: CommandMessage = {
// @ts-ignore // @ts-ignore
await updateEditor(editorMessage, { await updateEditor(editorMessage, {
content: null, content: null,
flags: 32768, flags: MessageFlags.IsComponentsV2,
display: await renderPreview(blockState, message.member, message.guild), display: await renderPreview(blockState, message.member, message.guild),
components: btns(false) components: btns(false)
}); });
@@ -196,30 +196,40 @@ export const command: CommandMessage = {
if (i.isButton()) { if (i.isButton()) {
switch (i.customId) { switch (i.customId) {
case "save_block": { case "save_block": {
await i.deferUpdate(); try { await i.deferUpdate(); } catch {}
try {
await client.prisma.blockV2Config.update({ await client.prisma.blockV2Config.update({
where: { guildId_name: { guildId: message.guildId!, name: blockName } }, where: { guildId_name: { guildId: message.guildId!, name: blockName } },
//@ts-ignore //@ts-ignore
data: { config: blockState } 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 { try {
// @ts-ignore // @ts-ignore
await i.followUp({ flags: 64, content: `✅ Cambios de "${blockName}" guardados.` }); await i.followUp({ flags: MessageFlags.Ephemeral, content: `✅ Cambios de "${blockName}" guardados.` });
} catch {} } catch {}
// No detener el collector para permitir mover/eliminar después de guardar // 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; return;
} }
case "cancel_block": { case "cancel_block": {
await i.deferUpdate(); try { await i.deferUpdate(); } catch {}
await editorMessage.delete(); try { await editorMessage.delete(); } catch {}
collector.stop(); collector.stop('cancelled');
return; return;
} }
case "edit_title": { case "edit_title": {