// handlers.js import { respuestaMCP } from './respuestas/respuestaMCP.js'; // <- NUEVA IMPORTACIÓN import fs from 'fs/promises'; import { log } from './logger.js'; // Ya no se necesitan: sendText, fetchChatMessages, setTypingStatus, askGemini aquí import { processMessage } from './utils/processMessage.js'; import { saveMedia } from './utils/saveMedia.js'; import { respuestaNormal } from './respuestas/respuestaNormal.js'; // <- NUEVA IMPORTACIÓN import { respuestaBrave } from './respuestas/respuestaBrave.js'; // <- NUEVA IMPORTACIÓN import { sendText } from './whatsapp.js'; // <- NUEVA IMPORTACIÓN /* carpeta raíz donde saveMedia deja todo */ const MEDIA_DIR = '/media'; await fs.mkdir(MEDIA_DIR, { recursive: true }); // La función cleanForGemini se movió a respuestaNormal.js export async function processIncoming(raw) { // Guarda media si no es un mensaje de texto plano if (raw.type !== 'chat') { try { // Nota: saveMedia podría necesitar acceso a MEDIA_DIR si no está codificado internamente await saveMedia(raw /*, MEDIA_DIR */); // Podrías necesitar pasar MEDIA_DIR si saveMedia lo requiere } catch (error) { log('error', 'Error guardando media:', error); } } const msg = processMessage(raw); const text = msg.text || ''; /* ----- comando @nucleo ----- */ if (/^@nucleo(\s|$)/i.test(text)) { // Llama a la función importada // await respuestaNormal(msg); // <- LLAMADA A LA FUNCIÓN EXTERNA await respuestaMCP(msg); // <- LLAMADA A LA FUNCIÓN EXTERNA } else { // Lógica para otros mensajes (si aplica) // log('debug', 'Mensaje recibido no es comando @nucleo:', text); } if (/^@nucleo.(\s|$)/i.test(text)) { log('info', '🧠 Generando respuesta para @nucleo...'); const respuestaObjMCP = await respuestaBrave(msg); // <- LLAMADA A LA FUNCIÓN EXTERNA log('info', 'Respuesta de MCP:', respuestaObjMCP); sendText(msg.chatId, respuestaObjMCP); } else { // Lógica para otros mensajes (si aplica) // log('debug', 'Mensaje recibido no es comando @nucleo:', text); } }