feat: refactor full reset confirmation panel to use plain objects for improved structure
This commit is contained in:
@@ -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.',
|
||||
|
||||
Reference in New Issue
Block a user