import express from 'express';
import { createBot, createFlow, MemoryDB, addKeyword } from '@builderbot/bot';
import { WahaProvider } from '../src/WahaProvider';
import dotenv from 'dotenv';

// Cargar variables de entorno
dotenv.config();

// Crear aplicación Express
const app = express();
app.use(express.json());

/**
 * Ejemplo de uso del provider Waha para BuilderBot
 * Desarrollado por Juan Pablo (BigJuanPa) de SmartUY
 * 
 * Este ejemplo muestra cómo configurar un bot simple con flujos básicos
 * utilizando el provider de Waha para WhatsApp.
 */

// Flujo de bienvenida
const bienvenidaFlow = addKeyword(['hola', 'buenas', 'saludos'])
  .addAnswer('¡Hola! Bienvenido al bot de ejemplo de SmartUY.')
  .addAnswer('Este provider para Waha fue desarrollado por Juan Pablo (BigJuanPa) de SmartUY.')
  .addAnswer('Escribe *ayuda* para ver los comandos disponibles.');

// Flujo de ayuda
const ayudaFlow = addKeyword(['ayuda', 'help', 'comandos'])
  .addAnswer('*Comandos disponibles:*')
  .addAnswer('1. *hola* - Mensaje de bienvenida')
  .addAnswer('2. *ayuda* - Ver esta lista de comandos')
  .addAnswer('3. *info* - Información sobre SmartUY')
  .addAnswer('Desarrollado por Juan Pablo (BigJuanPa) de SmartUY');

// Flujo de información
const infoFlow = addKeyword(['info', 'información', 'empresa'])
  .addAnswer('*Sobre SmartUY*')
  .addAnswer('SmartUY es una empresa líder en soluciones tecnológicas en Uruguay.')
  .addAnswer('Nos especializamos en desarrollo de software, inteligencia artificial y automatización de procesos.')
  .addAnswer('Para más información, visita [smartuy.com](https://smartuy.com)');

// Función principal
const main = async () => {
  try {
    console.log('Iniciando bot de ejemplo de SmartUY...');
    
    // Configuración de Waha
    const wahaConfig = {
      url: process.env.WAHA_API_URL || 'https://tu-servidor-waha.com',
      token: process.env.WAHA_API_KEY || 'tu-api-key',
      session: process.env.WAHA_SESSION || 'default'
    };
    
    console.log('Usando configuración de Waha:', wahaConfig);
    
    // Crear provider
    const adapterProvider = new WahaProvider(wahaConfig);
    
    // Inicializar webhook
    adapterProvider.initWebhook(app);
    
    // Crear flows
    const adapterFlow = createFlow([
      bienvenidaFlow,
      ayudaFlow,
      infoFlow
    ]);
    
    // Crear base de datos
    const adapterDB = new MemoryDB();
    
    // Crear bot
    const bot = await createBot({
      flow: adapterFlow,
      provider: adapterProvider,
      database: adapterDB,
    });
    
    console.log('Bot creado exitosamente, ahora listo para recibir mensajes');
    
    // Iniciar servidor
    const PORT = process.env.PORT || 3000;
    app.listen(PORT, () => {
      console.log(`Servidor escuchando en puerto ${PORT}`);
      console.log(`URL del Webhook: /webhook/waha`);
      console.log('Bot de ejemplo de SmartUY desarrollado por BigJuanPa');
    });
    
  } catch (error) {
    console.error('Error al inicializar el bot:', error);
  }
};

// Iniciar bot
main();
