feat: refactor full reset confirmation panel to use plain objects for improved structure

This commit is contained in:
2025-10-03 22:38:11 -05:00
parent b0f453c47f
commit 4244f955c8

View File

@@ -1,13 +1,13 @@
import logger from "../../core/lib/logger";
import { ButtonInteraction, MessageFlags, ContainerBuilder, TextDisplayBuilder, SectionBuilder, ButtonBuilder, ButtonStyle } from 'discord.js';
import { ButtonInteraction, MessageFlags } from 'discord.js';
import { ComponentType, ButtonStyle } from 'discord-api-types/v10';
import { aiService } from '../../core/services/AIService';
const OWNER_ID = '327207082203938818'; // Solo el dueño puede hacer reset completo
const OWNER_ID = '327207082203938818';
export default {
customId: 'ai_full_reset',
run: async (interaction: ButtonInteraction) => {
// Verificar que sea el dueño del bot (reset completo es CRÍTICO)
if (interaction.user.id !== OWNER_ID) {
return interaction.reply({
content: '❌ Solo el dueño del bot puede realizar un reset completo del sistema de IA.',
@@ -18,24 +18,22 @@ export default {
try {
await interaction.deferUpdate();
// Obtener estadísticas antes del reset
const statsBefore = aiService.getStats();
const conversationsCleared = statsBefore.activeConversations;
const requestsCleared = statsBefore.queueLength;
// Aquí irían las funciones reales de reset del servicio:
// aiService.fullReset();
// aiService.clearAllConversations();
// aiService.clearRequestQueue();
// aiService.resetStatistics();
const resetTimestamp = new Date().toISOString().replace('T', ' ').split('.')[0];
// Panel de confirmación de reset completo usando la API real
const resetCompleteContainer = new ContainerBuilder()
.addTextDisplayComponents(
new TextDisplayBuilder()
.setContent(`## ⚠️ RESET COMPLETO EJECUTADO
// Panel de confirmación usando objetos planos
const resetPanel = {
type: ComponentType.Container,
components: [
{
type: ComponentType.TextDisplay,
content: `## ⚠️ RESET COMPLETO EJECUTADO
-# El sistema de IA ha sido completamente reiniciado.
## 🔄 Resumen del Reset
@@ -69,47 +67,54 @@ El sistema de IA ha vuelto a su estado inicial:
• **Configuración default** - Valores originales
• **Cache limpio** - Memoria optimizada
El sistema está listo para recibir nuevas consultas.`)
)
.addSectionComponents(
new SectionBuilder()
.addTextDisplayComponents(
new TextDisplayBuilder()
.setContent("🔙 Volver al panel principal (con datos reset)")
)
.setButtonAccessory(
new ButtonBuilder()
.setCustomId('ai_refresh_stats')
.setLabel('Volver al Panel')
.setEmoji('🔙')
.setStyle(ButtonStyle.Primary)
),
new SectionBuilder()
.addTextDisplayComponents(
new TextDisplayBuilder()
.setContent("⚠️ **REALIZAR OTRO RESET** (solo si es necesario)")
)
.setButtonAccessory(
new ButtonBuilder()
.setCustomId('ai_full_reset')
.setLabel('Reset Nuevamente')
.setEmoji('⚠️')
.setStyle(ButtonStyle.Danger)
)
);
El sistema está listo para recibir nuevas consultas.`
},
{
type: ComponentType.Section,
components: [
{
type: ComponentType.TextDisplay,
content: "🔙 Volver al panel principal (con datos reset)"
}
],
accessory: {
type: ComponentType.Button,
custom_id: 'ai_refresh_stats',
label: 'Volver al Panel',
emoji: { name: '🔙' },
style: ButtonStyle.Primary
}
},
{
type: ComponentType.Section,
components: [
{
type: ComponentType.TextDisplay,
content: "⚠️ **REALIZAR OTRO RESET** (solo si es necesario)"
}
],
accessory: {
type: ComponentType.Button,
custom_id: 'ai_full_reset',
label: 'Reset Nuevamente',
emoji: { name: '⚠️' },
style: ButtonStyle.Danger
}
}
]
};
await interaction.message.edit({
components: [resetCompleteContainer],
flags: MessageFlags.IsComponentsV2
// @ts-ignore - Flag de componentes V2
flags: 32768,
components: [resetPanel]
});
// Log crítico del reset completo
logger.warn(`🚨 RESET COMPLETO DE IA ejecutado por el dueño ${interaction.user.username} (${interaction.user.id})`);
logger.info(`Reset stats - Conversaciones: ${conversationsCleared}, Queue: ${requestsCleared}, Timestamp: ${resetTimestamp}`);
} catch (error) {
//@ts-ignore
logger.error('Error ejecutando reset completo de IA:', error);
logger.error({ err: error }, 'Error ejecutando reset completo de IA');
if (!interaction.deferred && !interaction.replied) {
await interaction.reply({
content: '❌ Error crítico ejecutando el reset completo del sistema de IA.',