builderbot-provider-baileys-mod
v1.0.3
Published
Advanced WhatsApp chatbot provider for BuilderBot using baileys-mod with newsletter management, interactive messages, AI integration, and custom pairing codes
Maintainers
Readme
BuilderBot + Baileys Custom Provider Example
Ejemplo completo de integración de BuilderBot con un proveedor personalizado basado en Baileys para crear un chatbot de WhatsApp con flows avanzados, botones interactivos, multimedia y funcionalidades exclusivas de baileys-mod.
🚀 Características
- 🤖 Flows Interactivos: Sistema completo de conversaciones con BuilderBot
- 🔘 Botones Interactivos: Botones de confirmación, procesamiento y cancelación
- 📝 Listas Interactivas: Menús organizados con múltiples opciones y secciones
- 🖼️ Envío de Multimedia: Soporte para imágenes, videos y documentos
- ⚡ Quick Reply Buttons: Botones de respuesta rápida exclusivos de baileys-mod
- 📋 Copy Code Buttons: Botones para copiar código directamente
- 📞 Call Buttons: Botones de llamada directa desde WhatsApp
- 🌐 URL Buttons: Botones de enlace web integrados
- 🤖 Mensajes con IA: Iconos personalizados para mensajes de inteligencia artificial
- 📰 Newsletter Management: Creación y gestión de newsletters de WhatsApp
- 🔗 Pairing Codes: Códigos de emparejamiento personalizados
- 🔄 Reconexión Automática: Manejo inteligente de desconexiones
- 📊 Gestión de Estado: Monitoreo en tiempo real del estado del bot
📦 Instalación
# Instalar BuilderBot y el proveedor personalizado
npm install @builderbot/bot builderbot-provider-baileys-mod
# Instalar dependencias adicionales
npm install baileys qrcode-terminal
# Para desarrollo con TypeScript
npm install -D typescript ts-node @types/node🏁 Configuración Inicial
Estructura del Proyecto
proyecto/
├── node_modules/
│ └── builderbot-provider-baileys-mod/ # Librería instalada desde npm
├── builderbot-example.ts # Ejemplo completo de implementación
├── package.json # Dependencias del proyecto
├── tsconfig.json # Configuración de TypeScript
└── auth_builderbot-session/ # Sesión de WhatsApp (generada automáticamente)Configuración Básica del Bot
import { createBot, createFlow, addKeyword, EVENTS, MemoryDB } from '@builderbot/bot';
import { BuilderBotProvider } from 'builderbot-provider-baileys-mod';
import { BotConfig } from 'builderbot-provider-baileys-mod';
// Configuración del proveedor
const providerConfig: BotConfig = {
sessionId: 'builderbot-custom-session',
printQRInTerminal: false,
onQR: (qr) => {
// QR disponible en interfaz web
},
onConnected: () => {
console.log('🤖 El bot está listo para recibir mensajes');
},
onDisconnected: (reason) => {
console.log(`❌ Desconexión: ${reason}`);
}
};
// Crear el proveedor personalizado
const customProvider = new BuilderBotProvider(providerConfig);📚 Flows Implementados
Flow de Bienvenida
Punto de entrada principal del bot con múltiples opciones.
Activadores: hola, hi, hello, /start
const welcomeFlow = addKeyword(['hola', 'hi', 'hello', '/start'])
.addAnswer('🤖 ¡Hola! Bienvenido al bot con BuilderBot y Baileys-mod personalizado')
.addAnswer('📋 Escribe *menu* - Menú principal')
.addAnswer('🔘 Escribe *botones* - Ejemplo de botones interactivos')
.addAnswer('📝 Escribe *lista* - Ejemplo de lista interactiva');Flow de Botones Interactivos
Demuestra el uso de botones de confirmación, procesamiento y cancelación.
Activadores: botones, buttons
const buttonsFlow = addKeyword(['botones', 'buttons'])
.addAnswer('🔘 **EJEMPLO DE BOTONES INTERACTIVOS**')
.addAction(async (ctx, { provider }) => {
const buttons = [
{ body: '✅ Confirmar', id: 'btn_1' },
{ body: '🔄 Procesar', id: 'btn_2' },
{ body: '❌ Cancelar', id: 'btn_cancel' }
];
await (provider as BuilderBotProvider).sendButtons(
ctx.from,
'💡 Los botones son más fáciles de usar que escribir comandos',
buttons
);
});Flow de Listas Interactivas
Demuestra el uso de listas organizadas con múltiples secciones.
Activadores: lista, list
const listFlow = addKeyword(['lista', 'list'])
.addAnswer('📝 **EJEMPLO DE LISTA INTERACTIVA**')
.addAction(async (ctx, { provider }) => {
const sections = [
{
title: '🎯 Opciones Principales',
rows: [
{
id: 'option_1',
title: '🚀 Opción Premium',
description: 'Acceso completo a todas las funcionalidades'
},
{
id: 'option_2',
title: '⭐ Opción Estándar',
description: 'Funcionalidades básicas y esenciales'
}
]
}
];
await (provider as BuilderBotProvider).sendList(
ctx.from,
'Elige una de las siguientes opciones disponibles:',
'📋 Ver opciones',
sections
);
});Flow de Multimedia
Envío de imágenes, videos y documentos.
Activadores: imagen, video, documento
const imageFlow = addKeyword(['imagen', 'image', 'foto'])
.addAnswer('🖼️ **EJEMPLO DE IMAGEN**')
.addAction(async (ctx, { provider }) => {
await (provider as BuilderBotProvider).sendMedia(
ctx.from,
'https://picsum.photos/800/600',
'📸 Imagen generada aleatoriamente'
);
});🚀 Funcionalidades Avanzadas de Baileys-Mod
Mensajes con IA
Mensajes con iconos personalizados de inteligencia artificial.
Activadores: ai, ia
const aiMessageFlow = addKeyword(['ai', 'ia'])
.addAnswer('🤖 **MENSAJES CON IA PERSONALIZADA**')
.addAction(async (ctx, { provider }) => {
const bot = provider.getInstance();
await bot.sendMessageWithAI(ctx.from, {
text: '¡Este mensaje tiene un icono de IA personalizado! 🤖'
}, {
aiConfig: {
aiIcon: true,
aiIconUrl: 'ai@newsletter'
}
});
});Botones de Respuesta Rápida
Botones más eficientes que las listas tradicionales.
Activadores: quick, rapida
const quickReplyFlow = addKeyword(['quick', 'rapida'])
.addAction(async (ctx, { provider }) => {
const bot = provider.getInstance();
await bot.sendQuickReply(ctx.from, '¿Cuál es tu color favorito?', [
{ id: 'color_rojo', text: '🔴 Rojo' },
{ id: 'color_azul', text: '🔵 Azul' },
{ id: 'color_verde', text: '🟢 Verde' },
{ id: 'color_amarillo', text: '🟡 Amarillo' }
]);
});Botón para Copiar Código
Perfecto para compartir comandos y snippets.
Activadores: copy, copiar, codigo
const copyCodeFlow = addKeyword(['copy', 'copiar', 'codigo'])
.addAction(async (ctx, { provider }) => {
const bot = provider.getInstance();
await bot.sendCopyCodeButton(
ctx.from,
'Aquí tienes el comando para instalar baileys-mod:',
'npm install baileys-mod',
'📋 Copiar Comando'
);
});Botón de Llamada Directa
Los usuarios pueden llamar directamente desde WhatsApp.
Activadores: call, llamar, telefono
const callButtonFlow = addKeyword(['call', 'llamar', 'telefono'])
.addAction(async (ctx, { provider }) => {
const bot = provider.getInstance();
await bot.sendCallButton(
ctx.from,
'Para soporte inmediato, puedes llamarnos directamente:',
'+1234567890',
'📞 Llamar Soporte'
);
});Botón de Enlace Web
Los enlaces se abren directamente en el navegador del usuario.
Activadores: url, enlace, web
const urlButtonFlow = addKeyword(['url', 'enlace', 'web'])
.addAction(async (ctx, { provider }) => {
const bot = provider.getInstance();
await bot.sendUrlButton(
ctx.from,
'Visita la documentación oficial de Baileys:',
'https://github.com/WhiskeySockets/Baileys',
'🌐 Abrir Documentación'
);
});🔄 Manejo de Eventos
Respuestas de Botones Interactivos
Manejo automático de respuestas cuando el usuario presiona botones.
const buttonResponseFlow = addKeyword(EVENTS.ACTION)
.addAction(async (ctx, { flowDynamic }) => {
const buttonId = ctx.body;
switch (buttonId) {
case 'btn_1':
await flowDynamic([
'✅ **CONFIRMACIÓN EXITOSA**',
'Has seleccionado la opción "Confirmar"'
]);
break;
case 'btn_2':
await flowDynamic([
'🔄 **PROCESANDO SOLICITUD**',
'Tu solicitud está siendo procesada...'
]);
break;
case 'btn_cancel':
await flowDynamic([
'❌ **OPERACIÓN CANCELADA**',
'Escribe *hola* para volver al menú principal'
]);
break;
}
});Respuestas de Listas Interactivas
Manejo de selecciones de listas con múltiples opciones.
const listResponseFlow = addKeyword(EVENTS.ACTION)
.addAction(async (ctx, { flowDynamic }) => {
const optionId = ctx.body;
switch (optionId) {
case 'option_1':
await flowDynamic([
'🚀 **OPCIÓN PREMIUM SELECCIONADA**',
'Características incluidas:',
'• Acceso completo a todas las funciones',
'• Soporte prioritario 24/7'
]);
break;
case 'option_2':
await flowDynamic([
'⭐ **OPCIÓN ESTÁNDAR SELECCIONADA**',
'Características incluidas:',
'• Funcionalidades básicas',
'• Soporte por email'
]);
break;
}
});Flow de Fallback
Manejo de comandos no reconocidos.
const fallbackFlow = addKeyword(EVENTS.WELCOME)
.addAction(async (ctx, { flowDynamic }) => {
const userMessage = ctx.body;
await flowDynamic([
'🤔 **COMANDO NO RECONOCIDO**',
`No entiendo el mensaje: "${userMessage}"`,
'📋 **OPCIONES DISPONIBLES:**',
'• 🏠 Escribe *hola* - Menú principal',
'• ❓ Escribe *ayuda* - Lista de comandos'
]);
});🛠️ Configuración Completa del Bot
Inicialización del Bot con Todos los Flows
const main = async () => {
// Crear todos los flows
const flows = createFlow([
welcomeFlow,
menuFlow,
buttonsFlow,
listFlow,
imageFlow,
videoFlow,
documentFlow,
helpFlow,
buttonResponseFlow,
listResponseFlow,
infoFlow,
restartFlow,
contactFlow,
fallbackFlow,
// Flows avanzados de baileys-mod
baileysAdvancedFlow,
aiMessageFlow,
quickReplyFlow,
copyCodeFlow,
callButtonFlow,
urlButtonFlow,
newsletterFlow,
pairingCodeFlow
]);
// Crear el bot con BuilderBot
const { handleCtx, httpServer } = await createBot({
flow: flows,
provider: customProvider,
database: new MemoryDB()
});
// Inicializar el proveedor
customProvider.initProvider();
customProvider.on('message', handleCtx);
console.log('🚀 Bot iniciado exitosamente');
console.log('📱 Escanea el código QR para conectar WhatsApp');
console.log('🌐 Interfaz web disponible en: http://localhost:3008');
};
main().catch(console.error);🚀 Cómo Ejecutar el Ejemplo
1. Clonar o Descargar el Proyecto
# Si tienes el proyecto en Git
git clone <repository-url>
cd custom-baileys
# O simplemente navega al directorio del proyecto
cd "c:\Users\Aurik3\Desktop\custom baileys"2. Instalar Dependencias
npm install3. Ejecutar el Ejemplo
# Ejecutar el ejemplo completo
npx ts-node builderbot-example.ts
# O compilar y ejecutar
npm run build
node dist/builderbot-example.js4. Conectar WhatsApp
- Escanear QR: Abre WhatsApp en tu teléfono y escanea el código QR que aparece en la terminal
- Interfaz Web: Visita
http://localhost:3008para ver la interfaz web con el QR - Conexión: Una vez conectado, el bot estará listo para recibir mensajes
5. Probar Funcionalidades
Envía estos comandos al bot para probar las diferentes funcionalidades:
Comandos Básicos:
hola- Menú de bienvenidamenu- Menú principalbotones- Ejemplo de botones interactivoslista- Ejemplo de lista interactivaimagen- Recibir una imagenvideo- Recibir un videodocumento- Recibir un documento
Funcionalidades Avanzadas (baileys-mod):
baileys- Ver todas las funcionalidades avanzadasquick- Botones de respuesta rápidacopy- Botón para copiar códigocall- Botón de llamada directaurl- Botón de enlace webai- Mensajes con IA personalizadanewsletter- Gestión de newsletterspairing- Código de emparejamiento
Comandos de Utilidad:
ayuda- Información de ayudaestado- Estado del botcontacto- Información de contactoreiniciar- Reiniciar conversación
🌐 Interfaz Web
El bot incluye una interfaz web integrada accesible en http://localhost:3008 que muestra:
- Código QR para emparejamiento de dispositivos
- Estado de conexión en tiempo real
- Información del bot y configuración
- Logs de actividad y mensajes
- Panel de control para gestión básica
📋 Comandos Disponibles
Comandos de Navegación
hola,hi,hello,/start- Menú de bienvenidamenu,menú- Menú principal estructuradoayuda,help,soporte- Información de ayudaestado,status,info- Estado actual del botcontacto,contact- Información de contactoreiniciar,restart,reset- Reiniciar conversación
Comandos de Interacción
botones,buttons- Demostración de botones interactivoslista,list- Demostración de listas interactivasimagen,image,foto- Envío de imagen de ejemplovideo- Envío de video de ejemplodocumento,document,pdf- Envío de documento de ejemplo
Comandos Avanzados (Baileys-Mod)
baileys,avanzado,demo,funcionalidades- Menú de funcionalidades avanzadasai,ia- Mensajes con iconos de IA personalizadosquick,rapida- Botones de respuesta rápidacopy,copiar,codigo- Botón para copiar códigocall,llamar,telefono- Botón de llamada directaurl,enlace,web- Botón de enlace webnewsletter,boletin- Gestión de newsletterspairing,emparejamiento- Código de emparejamiento personalizado
🔧 Development
Building the Project
# Install dependencies
npm install
# Build the project
npm run build
# Clean build artifacts
npm run clean
# Run example
npm run exampleProject Structure
builderbot-provider-baileys-mod/
├── dist/ # Compiled JavaScript output
│ ├── BuilderBotProvider.js # Main provider class
│ ├── WhatsAppBot.js # Core WhatsApp bot implementation
│ ├── types.js # TypeScript type definitions
│ ├── utils.js # Utility functions
│ └── index.js # Main entry point
├── src/ # Source TypeScript files
├── package.json # Package configuration
├── README.md # Documentation
└── *.d.ts # TypeScript declarations🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Built on top of baileys-mod for WhatsApp Web API
- Integrated with BuilderBot ecosystem
- Inspired by the WhatsApp Business API
📞 Support
If you have any questions or need help, please:
- Open an issue on GitHub
- Check the documentation
- Join our community discussions
Made with ❤️ by the BuilderBot Community
