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;
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);

View File

@@ -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();
try { await i.deferUpdate(); } catch {}
try {
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 {
// @ts-ignore
await i.followUp({ flags: 64, content: `✅ Cambios de "${blockName}" guardados.` });
await i.followUp({ flags: MessageFlags.Ephemeral, content: `✅ Cambios de "${blockName}" guardados.` });
} 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;
}
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": {