import logger from "../../core/lib/logger";
import { ButtonInteraction, MessageFlags } from 'discord.js';
import { ComponentType, ButtonStyle } from 'discord-api-types/v10';
import { aiService } from '../../core/services/AIService';

const OWNER_ID = '327207082203938818';

export default {
  customId: 'ai_full_reset',
  run: async (interaction: ButtonInteraction) => {
    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.',  
        flags: MessageFlags.Ephemeral 
      });
    }

    try {
      await interaction.deferUpdate();
      
      const statsBefore = aiService.getStats();
      const conversationsCleared = statsBefore.activeConversations;
      const requestsCleared = statsBefore.queueLength;
      
      // Usar el nuevo método que mantiene memoria persistente
      aiService.fullReset();

      const resetTimestamp = new Date().toISOString().replace('T', ' ').split('.')[0];
      
      // 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
\`\`\`
┌─────────────────────────┬─────────────┐
│ Elemento Limpiado       │ Cantidad    │
├─────────────────────────┼─────────────┤
│ Conversaciones          │ ${conversationsCleared.toString().padEnd(11)} │
│ Requests en Cola        │ ${requestsCleared.toString().padEnd(11)} │
│ Cache de Memoria        │ ✅ Limpiado │
│ Estadísticas            │ ✅ Reset    │
│ Rate Limits             │ ✅ Reset    │
│ Configuración           │ ✅ Default  │
└─────────────────────────┴─────────────┘

🔄 Estado: Sistema completamente reiniciado
⏰ Timestamp: ${resetTimestamp} UTC
👤 Ejecutado por: ${interaction.user.username}
🆔 User ID: ${interaction.user.id}

⚠️ ADVERTENCIA: Todas las conversaciones activas 
   han sido eliminadas permanentemente.
\`\`\`

## ✅ Sistema Restaurado

El sistema de IA ha vuelto a su estado inicial:
• **Memoria limpia** - Sin conversaciones previas
• **Queue vacía** - Sin requests pendientes  
• **Rate limits reset** - Límites restablecidos
• **Configuración default** - Valores originales
• **Cache limpio** - Memoria optimizada

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({
        // @ts-ignore - Flag de componentes V2
        flags: 32768,
        components: [resetPanel]
      });

      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) {
      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.',  
          flags: MessageFlags.Ephemeral 
        });
      }
    }
  }
};
