# WhatsApp Baileys

<p align="center">
  <img src="https://raw.githubusercontent.com/El-brayan502/dat1/main/uploads/e2ab66-1768094895465.jpg" alt="Thumbnail" />
</p>

WhatsApp Baileys es una biblioteca de código abierto diseñada para ayudar a los desarrolladores a crear soluciones de automatización e integraciones con WhatsApp de forma eficiente y directa. Utilizando tecnología websocket sin necesidad de un navegador, esta biblioteca admite una amplia gama de funciones, como la gestión de mensajes, la gestión de chats y la administración de grupos, así como mensajes interactivos y botones de acción para una experiencia de usuario más dinámica. 

Baileys, desarrollado y mantenido activamente, recibe actualizaciones constantes para mejorar la estabilidad y el rendimiento. Uno de los principales objetivos es mejorar los procesos de emparejamiento y autenticación para que sean más estables y seguros. Las funciones de emparejamiento se pueden personalizar con sus propios códigos, lo que aumenta la fiabilidad del proceso y reduce las interrupciones. 

Esta biblioteca es ideal para crear bots empresariales, sistemas de automatización de chat, soluciones de atención al cliente y otras aplicaciones de automatización de la comunicación que requieren alta estabilidad y funcionalidades completas. Gracias a su diseño ligero y modular, baileys se integra fácilmente en diferentes sistemas y plataformas. 

---

### Main Features and Advantages

- Admite procesos de emparejamiento automáticos y personalizados. 
- Corrige problemas de emparejamiento anteriores que a menudo causaban fallas o desconexiones. 
- Admite mensajes interactivos, botones de acción y menús dinámicos. 
- Gestión automática y eficiente de sesiones para un funcionamiento fiable 
- Compatible con las últimas funciones multidispositivo de WhatsApp 
- Ligero, estable y fácil de integrar en varios sistemas. 
- Adecuado para desarrollar bots, automatización y soluciones de comunicación completas. 
- Documentación completa y códigos de ejemplo para facilitar el desarrollo. 

---

## Getting Started

Empiece por instalar la biblioteca mediante su gestor de paquetes preferido y siga la guía de configuración proporcionada. También puede utilizar los códigos de ejemplo ya preparados para comprender el funcionamiento de las funciones. Utilice el almacenamiento de sesiones y las funciones de mensajería interactiva para crear soluciones completas y estables adaptadas a las necesidades de su negocio o proyecto. 

---

## Agregar función (código simple) 

### Comprobar canal de identificación 
Obtener canal de identificación  

```javascript
espera sock.newsletterId(url) 
```

### Verificar número prohibido 
Puedes ver el estado de los números bloqueados aquí  

```javascript
await sock.checkWhatsApp(jid)
```

---

## Documentación de SendMessage 

### Mensaje de grupo de estado V2 
Enviar estado de grupo con la versión 2  

```javascript
await sock.sendMessage(jid, {
     groupStatusMessage: {
          text: "Hello World"
     }
});
```

### Album Message (Multiple Images)
Enviar varias imágenes en un solo mensaje de álbum: 

```javascript
await sock.sendMessage(jid, { 
    albumMessage: [
        { image: cihuy, caption: "Foto pertama" },
        { image: { url: "URL IMAGE" }, caption: "Foto kedua" }
    ] 
}, { quoted: m });
```

### Event Message
Crea y envía invitaciones a eventos de WhatsApp: 

```javascript
await sock.sendMessage(jid, { 
    eventMessage: { 
        isCanceled: false, 
        name: "Hello World", 
        description: "yume native", 
        location: { 
            degreesLatitude: 0, 
            degreesLongitude: 0, 
            name: "rowrrrr" 
        }, 
        joinLink: "https://call.whatsapp.com/video/yumevtc", 
        startTime: "1763019000", 
        endTime: "1763026200", 
        extraGuestsAllowed: false 
    } 
}, { quoted: m });
```

### Mensaje de resultado de la encuesta 
Mostrar los resultados de la encuesta con el recuento de votos: 

```javascript
await sock.sendMessage(jid, { 
    pollResultMessage: { 
        name: "Hello World", 
        pollVotes: [
            {
                optionName: "TEST 1",
                optionVoteCount: "112233"
            },
            {
                optionName: "TEST 2",
                optionVoteCount: "1"
            }
        ] 
    } 
}, { quoted: m });
```

### Mensaje interactivo simple 
Envíe mensajes interactivos básicos con la funcionalidad del botón copiar: 

```javascript
await sock.sendMessage(jid, {
    interactiveMessage: {
        header: "Hello World",
        title: "Hello World",
        footer: "telegram: @yumevtc ",
        buttons: [
            {
                name: "cta_copy",
                buttonParamsJson: JSON.stringify({
                    display_text: "copy code",
                    id: "123456789",              
                    copy_code: "ABC123XYZ"
                })
            }
        ]
    }
}, { quoted: m });
```

### Mensaje interactivo con flujo nativo 
Envíe mensajes interactivos con botones, acciones de copia y funciones de flujo nativas: 

```javascript
await sock.sendMessage(jid, {    
    interactiveMessage: {      
        header: "Hello World",
        title: "Hello World",      
        footer: "telegram: @yumevtc",      
        image: { url: "https://example.com/image.jpg" },      
        nativeFlowMessage: {        
            messageParamsJson: JSON.stringify({          
                limited_time_offer: {            
                    text: "idk hummmm?",            
                    url: "https://t.me/yumevtc",            
                    copy_code: "yume",            
                    expiration_time: Date.now() * 999          
                },          
                bottom_sheet: {            
                    in_thread_buttons_limit: 2,            
                    divider_indices: [1, 2, 3, 4, 5, 999],            
                    list_title: "yume native",            
                    button_title: "yume native"          
                },          
                tap_target_configuration: {            
                    title: " X ",            
                    description: "bomboclard",            
                    canonical_url: "https://t.me/yumevtc",            
                    domain: "shop.example.com",            
                    button_index: 0          
                }        
            }),        
            buttons: [          
                {            
                    name: "single_select",            
                    buttonParamsJson: JSON.stringify({              
                        has_multiple_buttons: true            
                    })          
                },          
                {            
                    name: "call_permission_request",            
                    buttonParamsJson: JSON.stringify({              
                        has_multiple_buttons: true            
                    })          
                },          
                {            
                    name: "single_select",            
                    buttonParamsJson: JSON.stringify({              
                        title: "Hello World",              
                        sections: [                
                            {                  
                                title: "title",                  
                                highlight_label: "label",                  
                                rows: [                    
                                    {                      
                                        title: "@yumevtc",                      
                                        description: "love you",                      
                                        id: "row_2"                    
                                    }                  
                                ]                
                            }              
                        ],              
                        has_multiple_buttons: true            
                    })          
                },          
                {            
                    name: "cta_copy",            
                    buttonParamsJson: JSON.stringify({              
                        display_text: "copy code",              
                        id: "123456789",              
                        copy_code: "ABC123XYZ"            
                    })          
                }        
            ]      
        }    
    }  
}, { quoted: m });
```

### Mensaje interactivo con miniatura 
Envía mensajes interactivos con imagen en miniatura y botón para copiar: 

```javascript
await sock.sendMessage(jid, {
    interactiveMessage: {
        header: "Hello World",
        title: "Hello World",
        footer: "telegram: @yumevtc",
        image: { url: "https://example.com/image.jpg" },
        buttons: [
            {
                name: "cta_copy",
                buttonParamsJson: JSON.stringify({
                    display_text: "copy code",
                    id: "123456789",
                    copy_code: "ABC123XYZ"
                })
            }
        ]
    }
}, { quoted: m });
```

### Mensaje del producto 
Envíe mensajes de catálogo de productos con botones e información del comerciante:      

```javascript
await sock.sendMessage(jid, {
    productMessage: {
        title: "Produk Contoh",
        description: "Ini adalah deskripsi produk",
        thumbnail: { url: "https://example.com/image.jpg" },
        productId: "PROD001",
        retailerId: "RETAIL001",
        url: "https://example.com/product",
        body: "Detail produk",
        footer: "Harga spesial",
        priceAmount1000: 50000,
        currencyCode: "USD",
        buttons: [
            {
                name: "cta_url",
                buttonParamsJson: JSON.stringify({
                    display_text: "Beli Sekarang",
                    url: "https://example.com/buy"
                })
            }
        ]
    }
}, { quoted: m });
```

### Mensaje interactivo con búfer de documentos 
Enviar mensajes interactivos con documentos desde el buffer (sistema de archivos) - **Nota: Los documentos solo admiten buffer**: 

```javascript
await sock.sendMessage(jid, {
    interactiveMessage: {
        header: "Hello World",
        title: "Hello World",
        footer: "telegram: @yumevtc",
        document: fs.readFileSync("./package.json"),
        mimetype: "application/pdf",
        fileName: "yumevtc.pdf",
        jpegThumbnail: fs.readFileSync("./document.jpeg"),
        contextInfo: {
            mentionedJid: [jid],
            forwardingScore: 777,
            isForwarded: false
        },
        externalAdReply: {
            title: "shenń Bot",
            body: "anu team",
            mediaType: 3,
            thumbnailUrl: "https://example.com/image.jpg",
            mediaUrl: " X ",
            sourceUrl: "https://t.me/yumevtc",
            showAdAttribution: true,
            renderLargerThumbnail: false         
        },
        buttons: [
            {
                name: "cta_url",
                buttonParamsJson: JSON.stringify({
                    display_text: "Telegram",
                    url: "https://t.me/yumevtc",
                    merchant_url: "https://t.me/yumevtc"
                })
            }
        ]
    }
}, { quoted: m });
```

### Interactive Message with Document Buffer (Simple)Mensaje interactivo con búfer de documentos (simple) 
Enviar mensajes interactivos con documentos desde el búfer (sistema de archivos) sin contextInfo ni externalAdReply - **Nota: Los documentos solo admiten búfer**: 

```javascript
await sock.sendMessage(jid, {
    interactiveMessage: {
        header: "Hello World",
        title: "Hello World",
        footer: "telegram: @yumevtc",
        document: fs.readFileSync("./package.json"),
        mimetype: "application/pdf",
        fileName: "yumevtc.pdf",
        jpegThumbnail: fs.readFileSync("./document.jpeg"),
        buttons: [
            {
                name: "cta_url",
                buttonParamsJson: JSON.stringify({
                    display_text: "Telegram",
                    url: "https://t.me/yumevtc",
                    merchant_url: "https://t.me/yumevtc"
                })
            }
        ]
    }
}, { quoted: m });
```

### Request Payment Message
Envía mensajes de solicitud de pago con fondo y pegatina personalizados: 

```javascript
let quotedType = m.quoted?.mtype || '';
let quotedContent = JSON.stringify({ [quotedType]: m.quoted }, null, 2);

await sock.sendMessage(jid, {
    requestPaymentMessage: {
        currency: "IDR",
        amount: 10000000,
        from: m.sender,
        sticker: JSON.parse(quotedContent),
        background: {
            id: "100",
            fileLength: "0",
            width: 1000,
            height: 1000,
            mimetype: "image/webp",
            placeholderArgb: 0xFF00FFFF,
            textArgb: 0xFFFFFFFF,     
            subtextArgb: 0xFFAA00FF   
        }
    }
}, { quoted: m });
```

---

## Why Choose WhatsApp Baileys?

Esta biblioteca ofrece alta estabilidad, funcionalidades completas y un proceso de emparejamiento mejorado. Es ideal para desarrolladores que buscan crear soluciones de automatización de WhatsApp profesionales y seguras. La compatibilidad con las últimas funciones de WhatsApp garantiza la compatibilidad con las actualizaciones de la plataforma. 

---

### Technical Notes

- Supports custom pairing codes that are stable and secure
- Fixes previous issues related to pairing and authentication
- Features interactive messages and action buttons for dynamic menu creation
- Automatic and efficient session management for long-term stability
- Compatible with the latest multi-device features from WhatsApp
- Easy to integrate and customize based on your needs
- Perfect for developing bots, customer service automation, and other communication applications

---

Para obtener documentación completa, guías de instalación y ejemplos de implementación, visite el repositorio oficial y los foros de la comunidad. Actualizamos y mejoramos continuamente esta biblioteca para satisfacer las necesidades de los desarrolladores y usuarios de soluciones modernas de automatización de WhatsApp. 

**Gracias por elegir WhatsApp Baileys como su solución de automatización de WhatsApp!**
