{"_id":"@dianabots/baileys","_rev":"2-0443da1eae1791309cdfd18070fbd696","name":"@dianabots/baileys","dist-tags":{"latest":"0.1.20"},"versions":{"0.1.19":{"name":"@dianabots/baileys","version":"0.1.19","keywords":["whatsapp","automation"],"author":{"url":"based on WhiskeySockets/Baileys","name":"dianabots"},"license":"MIT","_id":"@dianabots/baileys@0.1.19","maintainers":[{"name":"dianabots","email":"ggggvaca2@gmail.com"}],"homepage":"https://github.com/WhiskeySockets/Baileys/","bugs":{"url":"https://github.com/WhiskeySockets/Baileys/issues"},"dist":{"shasum":"1af635b3cd4b4fa30a5c58678bd177d1df761e84","tarball":"https://registry.npmjs.org/@dianabots/baileys/-/baileys-0.1.19.tgz","fileCount":436,"integrity":"sha512-MU9qW1aulBwyV/QO4v5V4O0SwR1PwcxR2q0QizJinpC6e/6uoaCDffpA2LQRQGqFpve1RMq4lVCyheLKH8yulw==","signatures":[{"sig":"MEUCIQDwAIp9BnuYkMEhl4W+MPfiuZBA5KCsl5KgJWdXL0OdbgIgKelVPWwkrC7BuMszZFPI/W3j14LW+XKulJRcbSuwoHg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8767948},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.json && tsc-esm-fix --tsconfig=tsconfig.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"","prepare":"","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"NODE_TLS_REJECT_UNAUTHORIZED=0 node --experimental-vm-modules ./node_modules/.bin/jest --runInBand --forceExit --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","update:version":"tsx ./scripts/update-version.ts","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"dianabots","email":"ggggvaca2@gmail.com"},"repository":{"url":"git+ssh://git@github.com/WhiskeySockets/Baileys.git"},"_npmVersion":"11.13.0","description":"Uma biblioteca WebSockets para interagir com o WhatsApp Web — dianabots.","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"24.16.0","dependencies":{"ws":"^8.13.0","pino":"^9.6","fflate":"^0.8.2","p-queue":"^9.0.0","libsignal":"^6.0.0","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.4","@cacheable/node-cache":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.1","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^20.0.1","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.1","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_0.1.19_1782301935348_0.9070530616429935","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@dianabots/baileys","type":"module","version":"0.1.20","description":"Uma biblioteca WebSockets para interagir com o WhatsApp Web — dianabots.","keywords":["whatsapp","automation"],"homepage":"https://github.com/WhiskeySockets/Baileys/","repository":{"url":"git+ssh://git@github.com/WhiskeySockets/Baileys.git"},"license":"MIT","author":{"name":"dianabots","url":"based on WhiskeySockets/Baileys"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build:all":"npm run build && npm run build:docs","build:docs":"typedoc","build":"tsc -P tsconfig.json && tsc-esm-fix --tsconfig=tsconfig.json --ext=.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:preview":"conventional-changelog -p angular -u","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","example":"tsx ./Example/example.ts","gen:protobuf":"sh WAProto/GenerateStatics.sh","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","lint":"tsc && eslint src --ext .js,.ts","lint:fix":"npm run format && npm run lint -- --fix","prepack":"","prepare":"","preinstall":"node ./engine-requirements.js","release":"release-it","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","test:e2e":"NODE_TLS_REJECT_UNAUTHORIZED=0 node --experimental-vm-modules ./node_modules/.bin/jest --runInBand --forceExit --testMatch '**/*.test-e2e.ts'","update:version":"tsx ./scripts/update-version.ts"},"dependencies":{"@cacheable/node-cache":"^1.4.0","@hapi/boom":"^9.1.3","async-mutex":"^0.5.0","fflate":"^0.8.2","libsignal":"^6.0.0","lru-cache":"^11.1.0","music-metadata":"^11.12.3","p-queue":"^9.0.0","pino":"^9.6","protobufjs":"^7.5.6","whatsapp-rust-bridge":"0.5.4","ws":"^8.13.0"},"devDependencies":{"@eslint/eslintrc":"^3.3.1","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","@types/node":"^20.9.0","@types/ws":"^8.0.0","@typescript-eslint/eslint-plugin":"^8","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog":"^7.1.1","conventional-changelog-angular":"^8.0.0","esbuild-register":"^3.6.0","eslint":"^9","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","jest":"^30.0.5","jimp":"^1.6.1","jiti":"^2.4.2","json":"^11.0.0","link-preview-js":"^3.0.0","lru-cache":"^11.1.0","open":"^8.4.2","pino-pretty":"^13.1.1","prettier":"^3.5.3","protobufjs-cli":"^1.1.3","release-it":"^20.0.1","ts-jest":"^29.4.0","tsc-esm-fix":"^3.1.2","tsx":"^4.20.3","typedoc":"^0.27.9","typedoc-plugin-markdown":"4.4.2","typescript":"^5.8.3"},"peerDependencies":{"audio-decode":"^2.1.3","jimp":"^1.6.1","link-preview-js":"^3.0.0","sharp":"*"},"resolutions":{"ajv@npm:^6.12.4":"^6.14.0","basic-ftp":"^5.2.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3","flatted":"^3.4.2","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","handlebars":"^4.7.9","ip-address":"^10.1.1","js-yaml@npm:^3.13.1":"^3.14.2","js-yaml@npm:^4.1.0":"^4.1.1","markdown-it":"^14.1.1","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","socks":"^2.8.8","tar":"^7.5.11","tmp":"^0.2.5","underscore":"^1.13.8","yaml@npm:^2.6.1":"^2.8.4"},"peerDependenciesMeta":{"audio-decode":{"optional":true},"jimp":{"optional":true},"link-preview-js":{"optional":true}},"packageManager":"yarn@4.9.2","engines":{"node":">=20.0.0"},"_id":"@dianabots/baileys@0.1.20","bugs":{"url":"https://github.com/WhiskeySockets/Baileys/issues"},"_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-GiCXuWnDhx4M0Zl4daobm+KbC5ru4XlFJ+g7da2vP2gS4HwJnTPXwdd0AqucAR01i3B/O3DcmxOf1DWHEBWNkg==","shasum":"aa0a114a362b0fbfecc101de664f93772943c0dd","tarball":"https://registry.npmjs.org/@dianabots/baileys/-/baileys-0.1.20.tgz","fileCount":436,"unpackedSize":8763868,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDSYgV233WganC7Z6oq89L3kCtxaV4OH8ekHVzk3XFrNwIhAOCFPXOPchAPiTjPB48wfBTP/0fk0c6O5S0aoop/Fvxw"}]},"_npmUser":{"name":"dianabots","email":"ggggvaca2@gmail.com"},"directories":{},"maintainers":[{"name":"dianabots","email":"ggggvaca2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/baileys_0.1.20_1782306836848_0.9326540300555368"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-24T11:52:15.179Z","modified":"2026-06-24T13:13:57.177Z","0.1.19":"2026-06-24T11:52:15.550Z","0.1.20":"2026-06-24T13:13:57.066Z"},"bugs":{"url":"https://github.com/WhiskeySockets/Baileys/issues"},"author":{"name":"dianabots","url":"based on WhiskeySockets/Baileys"},"license":"MIT","homepage":"https://github.com/WhiskeySockets/Baileys/","keywords":["whatsapp","automation"],"repository":{"url":"git+ssh://git@github.com/WhiskeySockets/Baileys.git"},"description":"Uma biblioteca WebSockets para interagir com o WhatsApp Web — dianabots.","maintainers":[{"name":"dianabots","email":"ggggvaca2@gmail.com"}],"readme":"<div align=\"center\">\n\n<br/>\n\n<h1>\n  <img src=\"https://readme-typing-svg.demolab.com?font=Fira+Code&size=28&duration=3000&pause=1000&color=F472B6&center=true&vCenter=true&width=500&lines=%40dianabots%2Fbaileys\" alt=\"@dianabots/baileys\"/>\n</h1>\n\n<p>\n  <b>O melhor e mais completo fork do Baileys para automação do WhatsApp</b><br/>\n  Baseado no <code>@whiskeysockets/baileys</code> v7.0.0-rc11, aprimorado e mantido com ❤️ por <b>dianabots</b>.\n</p>\n\n<p>\n  <img src=\"https://img.shields.io/badge/versão-0.1.19-ff69b4?style=for-the-badge&logo=npm&logoColor=white\" alt=\"version\"/>\n  <img src=\"https://img.shields.io/badge/licença-MIT-c084fc?style=for-the-badge\" alt=\"license\"/>\n  <img src=\"https://img.shields.io/badge/plataforma-Node.js-22c55e?style=for-the-badge&logo=nodedotjs&logoColor=white\" alt=\"platform\"/>\n  <img src=\"https://img.shields.io/badge/WhatsApp-API-25d366?style=for-the-badge&logo=whatsapp&logoColor=white\" alt=\"whatsapp\"/>\n</p>\n\n<br/>\n\n<img src=\"https://capsule-render.vercel.app/api?type=waving&color=F472B6&height=50&section=header\" width=\"100%\"/>\n\n</div>\n\n<br/>\n\n## 📋 Índice Geral\n\nPara facilitar a navegação por esta extensa documentação, os tópicos estão organizados por categorias. Clique nas seções para expandi-las:\n\n<details open>\n<summary><b>🔌 Conexão & Inicialização</b></summary>\n<br/>\n\n*   [📦 Instalação do Pacote](#-instalação)\n*   [📱 Conexão padrão via QR Code](#-conexão-qr-code)\n*   [🔑 Conexão via Pairing Code (Sem QR)](#-conexão-pairing-code)\n*   [🌐 Customizando a Identidade do Navegador](#-identidade-do-navegador)\n*   [⚙️ Visão Geral das Opções de Conexão](#-opções-de-conexão)\n</details>\n\n<details>\n<summary><b>📨 Eventos & Gerenciamento de Chats</b></summary>\n<br/>\n\n*   [📬 Monitoramento e Recepção de Mensagens](#-receber-mensagens)\n*   [👥 Administração e Eventos de Grupos](#-manipulação-de-grupos)\n</details>\n\n<details>\n<summary><b>📤 Envio de Mensagens Básicas & Mídias</b></summary>\n<br/>\n\n*   [💬 Mensagens de Texto e Menções](#-texto)\n*   [🖼️ Imagens (URL, Buffer e Local)](#%EF%B8%8F-imagem)\n*   [🎬 Vídeos e Notas de Vídeo (Bubbles)](#-vídeo)\n*   [🎙️ Áudios Simples e Notas de Voz (Gravações)](#%EF%B8%8F-áudio--notas-de-voz)\n*   [📄 Arquivos e Documentos Anexos](#-documento)\n*   [🎴 Envio de Figurinhas estáticas](#-figurinha)\n*   [📍 Localizações geográficas](#-localização)\n*   [👤 Envio de VCards de Contatos](#-contato)\n</details>\n\n<details>\n<summary><b>💬 Recursos de Interação & Enquetes</b></summary>\n<br/>\n\n*   [❤️ Reagir e remover reações a mensagens](#-reação)\n*   [📊 Criação de Enquetes e Quizzes](#-enquete)\n*   [📈 Manipulação de Resultados de Enquetes](#-resultado-da-enquete)\n*   [🔄 Atualização de Enquetes em tempo real](#-atualização-da-enquete)\n*   [↗️ Encaminhamento de Mensagens](#%EF%B8%8F-encaminhar)\n*   [🗑️ Revogação e Exclusão de Mensagens](#%EF%B8%8F-apagar-mensagem)\n*   [✏️ Edição de Mensagens enviadas](#%EF%B8%8F-editar-mensagem)\n*   [📌 Fixação e Desafixação de Mensagens no Chat](#-fixar-mensagem)\n</details>\n\n<details>\n<summary><b>✨ Elementos Avançados & Embaladores (Wrappers)</b></summary>\n<br/>\n\n*   [🗂️ Álbuns de Mídia combinados](#%EF%B8%8F-álbum)\n*   [📅 Criação de Eventos integrados](#-evento)\n*   [📖 Envio de Status / Stories para Grupos](#-status--story-de-grupo)\n*   [🏷️ Menções Ocultas em Status](#%EF%B8%8F-menção-no-status)\n*   [📡 Postagens em Canais (Newsletter)](#-canal-newsletter)\n*   [🔁 Respostas estruturadas de Fluxo (Flow)](#-resposta-de-fluxo-flow)\n*   [🔘 Respostas de Clique de Botão](#-resposta-de-botão)\n*   [📎 Fixação Permanente no Chat (Keep)](#-manter-no-chat)\n*   [📞 Agendamento de Chamadas de Voz/Vídeo](#-chamada-agendada)\n*   [🔗 Convites de Grupo em formato card](#-convite-de-grupo)\n*   [🛍️ Compartilhamento de Produtos](#%EF%B8%8F-produto)\n*   [👁️ Mensagens de Visualização Única (Foto/Vídeo)](#%EF%B8%8F-visualização-única)\n*   [👁️ Visualização Única V2 e Extensão](#%EF%B8%8F-visualização-única-v2)\n*   [⏳ Ativação de Chats Efêmeros](#-efêmero)\n*   [🙈 Mensagens Ocultas com Spoilers](#-spoiler)\n*   [🎭 Wrap Automático de Status de Grupo](#-wrap-de-status-de-grupo)\n*   [🎞️ Suporte a Figurinhas Lottie dinâmicas](#%EF%B8%8F-figurinha-lottie)\n*   [🤖 Marcação de Resposta Gerada por IA](#-ícone-de-ia)\n*   [🔒 Exibição da Etiqueta de Serviço Oficial Meta](#-etiqueta-secure-meta-service)\n</details>\n\n<details>\n<summary><b>🎛️ Mensagens Interativas & Botões</b></summary>\n<br/>\n\n*   [📍 Botões acoplados a Localização](#-botões-com-cabeçalho-de-localização)\n*   [🎛️ Quick Replies e Seções em botões](#%EF%B8%8F-botões)\n*   [📋 Estruturas de Mensagens de Lista](#-mensagem-de-lista)\n*   [🗃️ Botões de Modelo (Template Buttons)](#%EF%B8%8F-botões-de-modelo-template)\n*   [🌊 Estruturas avançadas com Native Flow](#-fluxo-nativo-native-flow)\n*   [🎠 Carrossel Interativo com Multi-Cards](#-carrossel)\n</details>\n\n<details>\n<summary><b>🔧 Recursos Especializados & Outros</b></summary>\n<br/>\n\n*   [📃 Envio de respostas de seleção de Lista](#-resposta-de-lista)\n*   [🎴 Upload de Pacotes Completos de Figurinhas](#-pacote-de-figurinhas)\n*   [📢 Respostas com Anúncios Externos (Ad Cards)](#-resposta-de-anúncio-externo)\n*   [💳 Solicitação de Transferência de Valores](#-solicitar-pagamento)\n*   [🧾 Envio de Faturas detalhadas (Invoices)](#-fatura-invoice)\n*   [📦 Envio de Confirmações de Pedidos (Orders)](#-pedido-order)\n*   [💨 Controle de Mensagens Temporárias por tempo](#-mensagens-temporárias)\n*   [⚡ Envio de Mensagens Brutas (Raw Proto)](#-mensagem-bruta-raw)\n</details>\n\n<details>\n<summary><b>🤖 Formatação Avançada de Respostas Ricas (IA)</b></summary>\n<br/>\n\n*   [✍️ Blocos textuais ricos (addText)](#-addtext)\n*   [💻 Blocos de códigos estruturados (addCode)](#-addcode)\n*   [📊 Tabelas dinâmicas ricas (addTable)](#-addtable)\n*   [🖼️ Imagens e Grades de Imagens (addImage)](#%EF%B8%8F-addimage)\n*   [🎬 Vídeos e listas de vídeo estruturadas (addVideo)](#-addvideo)\n*   [🔗 Links de referências bibliográficas (addSource)](#-addsource)\n*   [🎥 HScroll de Vídeos curtos (addReels)](#-addreels)\n*   [🛍️ Cards de produtos interativos (addProduct)](#%EF%B8%8F-addproduct)\n*   [📝 Postagens de redes sociais no chat (addPost)](#-addpost)\n*   [💡 Dicas e observações rápidas (addTip)](#-addtip)\n*   [🔮 Pílulas de sugestões rápidas (addSuggest)](#-addsuggest)\n*   [Mapa, LaTeX, Grids e Animações complexas](#%EF%B8%8F-mapa-rico)\n*   [Recebimento e Decodificação de Mensagens Ricas](#-receber--decodificar-mensagem-rica)\n</details>\n\n<br/>\n\n---\n\n## 🔌 Conexão & Inicialização\n\nNesta seção, você aprenderá a instalar e inicializar a biblioteca `@dianabots/baileys` de diferentes maneiras.\n\n### 📦 Instalação\n\nAdicione a biblioteca ao seu projeto Node.js usando o gerenciador de pacotes de sua preferência:\n\n```bash\nnpm install @dianabots/baileys\n# ou usando yarn\nyarn add @dianabots/baileys\n```\n\n### 📱 Conexão QR Code\n\nExemplo básico de inicialização com geração de QR Code no terminal e salvamento automático das credenciais:\n\n```js\n// Importação no padrão CommonJS ou ESM\nconst {\n  default: makeWASocket,\n  useMultiFileAuthState,\n  DisconnectReason,\n  fetchLatestBaileysVersion\n} = require('@dianabots/baileys')\n\nasync function start() {\n  // Define a pasta onde os arquivos de autenticação serão salvos\n  const { state, saveCreds } = await useMultiFileAuthState('auth_info')\n  const { version } = await fetchLatestBaileysVersion()\n\n  const sock = makeWASocket({\n    version,\n    auth: state,\n    printQRInTerminal: true // Exibe o QR Code diretamente no terminal\n  })\n\n  // Escuta atualizações de credenciais para salvar o estado da sessão\n  sock.ev.on('creds.update', saveCreds)\n\n  // Monitora alterações na conexão (reconecta automaticamente caso caia)\n  sock.ev.on('connection.update', ({ connection, lastDisconnect }) => {\n    if (connection === 'close') {\n      const code = lastDisconnect?.error?.output?.statusCode\n      if (code !== DisconnectReason.loggedOut) {\n        start() // Reconectar\n      }\n    } else if (connection === 'open') {\n      console.log('Bot Conectado com sucesso!')\n    }\n  })\n}\n\nstart()\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🔑 Conexão Pairing Code\n\nIdeal para servidores VPS ou ambientes onde não há visualização do terminal para leitura do QR Code. O código de 8 dígitos é retornado diretamente:\n\n```js\nconst sock = makeWASocket({ version, auth: state, printQRInTerminal: false })\n\nsock.ev.on('creds.update', saveCreds)\nsock.ev.on('connection.update', ({ connection, lastDisconnect }) => {\n  if (connection === 'close') {\n    if (lastDisconnect?.error?.output?.statusCode !== DisconnectReason.loggedOut) start()\n  }\n})\n\n// Solicitar código de pareamento passando o número de telefone (DDI + DDD + Número)\nif (!sock.authState.creds.registered) {\n  const code = await sock.requestPairingCode('5511999999999')\n  console.log('Seu código de pareamento é:', code)\n}\n\n// Também é possível forçar um código específico de 8 caracteres\nconst customCode = await sock.requestPairingCode('5511999999999', 'BOTDIANA')\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🌐 Identidade do Navegador\n\nVocê pode configurar como o seu bot é identificado nas sessões ativas do WhatsApp no celular (configuração `browser`):\n\n```js\nconst { Browsers } = require('@dianabots/baileys')\n\nmakeWASocket({\n  // Opções pré-definidas da biblioteca:\n  browser: Browsers.macOS('Chrome'),    // MacOS rodando Chrome\n  browser: Browsers.windows('Chrome'),  // Windows rodando Chrome\n  browser: Browsers.ubuntu('Chrome'),   // Ubuntu rodando Chrome\n  browser: Browsers.baileys('Chrome'),  // Padrão Baileys\n  \n  // Ou defina uma identidade totalmente personalizada:\n  browser: ['Minha Empresa', 'Safari', '2.0.0'] \n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### ⚙️ Opções de Conexão\n\nLista das principais configurações disponíveis ao instanciar o socket do bot:\n\n```js\nmakeWASocket({\n  version,\n  auth: state,\n  printQRInTerminal: true,\n  browser: Browsers.macOS('Chrome'),\n  connectTimeoutMs: 20000,              // Timeout de conexão\n  keepAliveIntervalMs: 30000,           // Envio de PING para manter conexão ativa\n  markOnlineOnConnect: true,            // Exibir bot como \"Online\"\n  syncFullHistory: false,               // Desative para economizar consumo de RAM\n  generateHighQualityLinkPreview: false,// Pré-visualizações de links em alta resolução\n  emitOwnEvents: true,                  // Emitir eventos disparados pelo próprio bot\n  getMessage: async key => {\n    // Retorna mensagens salvas do banco de dados (ajuda em funções de quoted e decodificação)\n    return store?.messages?.[key.remoteJid]?.get(key.id)?.message\n  }\n})\n```\n\n---\n\n## 📨 Eventos & Gerenciamento de Chats\n\n### 📬 Receber Mensagens\n\nAcompanhe a chegada de novas mensagens por meio do monitoramento do evento `messages.upsert`:\n\n```js\nsock.ev.on('messages.upsert', async ({ messages, type }) => {\n  // Apenas processa mensagens recebidas em tempo real\n  if (type !== 'notify') return\n\n  for (const m of messages) {\n    if (!m.message) continue\n    if (m.key.fromMe) continue // Ignora mensagens enviadas pelo próprio bot\n\n    const jid = m.key.remoteJid\n    const isGroup = jid.endsWith('@g.us')\n    const sender = isGroup ? m.key.participant : jid\n\n    // Extrai o conteúdo textual independente do tipo de mensagem\n    const text =\n      m.message.conversation ||\n      m.message.extendedTextMessage?.text ||\n      m.message.imageMessage?.caption ||\n      m.message.videoMessage?.caption || ''\n\n    console.log(`Mensagem de ${sender}: ${text}`)\n\n    // Marca a mensagem recebida como lida (visualizada)\n    await sock.readMessages([m.key])\n    \n    // Envia o estado de \"digitando...\" para a conversa\n    await sock.sendPresenceUpdate('composing', jid)\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 👥 Manipulação de Grupos\n\nMétodos para gerenciar membros, títulos, descrições e obter informações gerais sobre grupos:\n\n```js\n// Escutar quando participantes entram, saem, são promovidos ou rebaixados\nsock.ev.on('group-participants.update', ({ id, participants, action }) => {\n  console.log(`Grupo: ${id} | Membros: ${participants} | Ação: ${action}`)\n  // action pode ser: 'add' (entrou) | 'remove' (saiu) | 'promote' (adm) | 'demote' (rebaixado)\n})\n\n// Obter dados completos de um grupo (Nome, Descrição, Participantes, etc)\nconst meta = await sock.groupMetadata('id_do_grupo@g.us')\nconsole.log(`Nome do Grupo: ${meta.subject}`)\n\n// Listar todos os grupos em que o bot está inserido\nconst groups = await sock.groupFetchAllParticipating()\n\n// Adicionar, remover, promover ou rebaixar membros\nawait sock.groupParticipantsUpdate(groupJid, ['5511999999999@s.whatsapp.net'], 'add')\nawait sock.groupParticipantsUpdate(groupJid, ['5511999999999@s.whatsapp.net'], 'remove')\nawait sock.groupParticipantsUpdate(groupJid, ['5511999999999@s.whatsapp.net'], 'promote')\nawait sock.groupParticipantsUpdate(groupJid, ['5511999999999@s.whatsapp.net'], 'demote')\n\n// Alterar as propriedades do grupo\nawait sock.groupUpdateSubject(groupJid, 'Novo Nome do Grupo')\nawait sock.groupUpdateDescription(groupJid, 'Nova descrição detalhada do grupo')\n\n// Bloquear ou liberar o envio de mensagens para apenas administradores\nawait sock.groupSettingUpdate(groupJid, 'announcement')     // Apenas ADMs enviam\nawait sock.groupSettingUpdate(groupJid, 'not_announcement') // Todos enviam\n\n// Mencionar todos os membros do grupo de uma vez\nconst groupMeta = await sock.groupMetadata(groupJid)\nconst members = groupMeta.participants.map(p => p.id)\nawait sock.sendMessage(groupJid, {\n  text: members.map(m => `@${m.split('@')[0]}`).join(' '),\n  mentions: members\n})\n```\n\n---\n\n## 📤 Envio de Mensagens Básicas & Mídias\n\nExemplos de como enviar texto, fotos, vídeos, áudios, figurinhas, contatos e localizações.\n\n### 💬 Texto\n\n```js\n// Mensagem de texto simples\nawait sock.sendMessage(jid, { text: 'Olá, esta é uma mensagem!' })\n\n// Mensagem marcando usuários específicos (menção) respondendo a outra mensagem (quoted)\nawait sock.sendMessage(jid, {\n  text: 'Olá @5511999999999!',\n  mentions: ['5511999999999@s.whatsapp.net']\n}, { quoted: m })\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🖼️ Imagem\n\n```js\n// Envio informando uma URL externa\nawait sock.sendMessage(jid, {\n  image: { url: 'https://example.com/foto.jpg' },\n  caption: 'Esta é a legenda da imagem'\n})\n\n// Envio de imagem através de um arquivo Buffer ou arquivo local\nawait sock.sendMessage(jid, {\n  image: fs.readFileSync('foto.jpg'),\n  caption: 'Enviada através de buffer'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🎬 Vídeo\n\n```js\n// Vídeo tradicional com legenda\nawait sock.sendMessage(jid, {\n  video: { url: 'https://example.com/video.mp4' },\n  caption: 'Legenda do vídeo',\n  gifPlayback: false // Se true, o vídeo será enviado em loop infinito sem áudio\n})\n\n// Nota de Vídeo Circular (Mensagem de vídeo bubble / PTV)\nawait sock.sendMessage(jid, {\n  video: fs.readFileSync('video.mp4'),\n  ptv: true // Ativa o formato circular\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🎙️ Áudio & Notas de Voz\n\n```js\n// Enviar arquivo de áudio clássico (exibe player de duração)\nawait sock.sendMessage(jid, {\n  audio: { url: 'https://example.com/musica.mp3' },\n  mimetype: 'audio/mpeg'\n})\n\n// Enviar nota de voz (exibe gravação com microfone azul - PTT)\nawait sock.sendMessage(jid, {\n  audio: fs.readFileSync('gravacao.ogg'),\n  mimetype: 'audio/ogg; codecs=opus',\n  ptt: true // Ativa a nota de voz\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📄 Documento\n\n```js\nawait sock.sendMessage(jid, {\n  document: fs.readFileSync('relatorio.pdf'),\n  mimetype: 'application/pdf',\n  fileName: 'Relatorio_Anual.pdf',\n  caption: 'Legenda explicativa opcional'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🎴 Figurinha\n\n```js\n// Envia arquivo WebP como figurinha estática\nawait sock.sendMessage(jid, { sticker: fs.readFileSync('figurinha.webp') })\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📍 Localização\n\n```js\nawait sock.sendMessage(jid, {\n  location: {\n    degreesLatitude: -23.55052,\n    degreesLongitude: -46.633308,\n    name: 'Praça da Sé',\n    address: 'São Paulo, Brasil'\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 👤 Contato\n\n```js\nawait sock.sendMessage(jid, {\n  contacts: {\n    displayName: 'Diana Suporte',\n    contacts: [{\n      vcard: 'BEGIN:VCARD\\nVERSION:3.0\\nFN:Diana Suporte\\nTEL;type=CELL;type=VOICE;waid=5511999999999:+55 11 99999-9999\\nEND:VCARD'\n    }]\n  }\n})\n```\n\n---\n\n## 💬 Recursos de Interação & Enquetes\n\n### ❤️ Reação\n\n```js\n// Reagir com um emoji a uma mensagem específica utilizando a chave (key) dela\nawait sock.sendMessage(jid, { react: { text: '👍', key: m.key } })\n\n// Para remover a reação, basta enviar o texto vazio\nawait sock.sendMessage(jid, { react: { text: '', key: m.key } })\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📊 Enquete\n\n```js\n// Enquete básica de escolha única\nawait sock.sendMessage(jid, {\n  poll: {\n    name: 'Qual seu tema preferido?',\n    values: ['Modo Claro', 'Modo Escuro', 'Sistema'],\n    selectableCount: 1 // 1 = escolha única. 0 = multipla escolha\n  }\n})\n\n// Enquete avançada com parâmetros adicionais\nawait sock.sendMessage(jid, {\n  poll: {\n    name: 'Escolha de Cores',\n    values: ['Vermelho', 'Azul'],\n    selectableCount: 1,\n    endDate: new Date('2025-12-31'),\n    hideVoter: true,          // Oculta quem votou em qual opção\n    canAddOption: false,\n    toAnnouncementGroup: false\n  }\n})\n\n// Quiz (Enquete estruturada contendo uma resposta certa)\nawait sock.sendMessage(jid, {\n  poll: {\n    name: 'Quem descobriu a gravidade?',\n    values: ['Tesla', 'Newton', 'Einstein'],\n    selectableCount: 1,\n    pollType: 1, // 1 representa QUIZ\n    correctAnswer: 'Newton'\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📈 Resultado da Enquete\n\nEnvio manual de um gráfico/card contendo o consolidado dos votos de uma enquete:\n\n```js\nawait sock.sendMessage(jid, {\n  pollResult: {\n    name: 'Resultado da Votação',\n    votes: [\n      { name: 'Opção A', voteCount: 15 },\n      { name: 'Opção B', voteCount: 8 }\n    ],\n    pollType: 0 // 0 = ENQUETE, 1 = QUIZ\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🔄 Atualização da Enquete\n\nUsado para sincronizar ou enviar um voto computado a uma enquete ativa:\n\n```js\nawait sock.sendMessage(jid, {\n  pollUpdate: {\n    key: pollMessage.key,       // Chave da mensagem da enquete original\n    vote: encryptedVotePayload, // Payload do voto criptografado\n    metadata: optionalMetadata\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### ↗️ Encaminhar\n\n```js\nawait sock.sendMessage(jid, {\n  forward: messageToForward,\n  force: true // Força a exibição do rótulo \"Mensagem Encaminhada\"\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🗑️ Apagar Mensagem\n\nApaga mensagens para todos no chat:\n\n```js\nawait sock.sendMessage(jid, { delete: messageToDelete.key })\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### ✏️ Editar Mensagem\n\nEdita o conteúdo textual de uma mensagem enviada anteriormente:\n\n```js\nawait sock.sendMessage(jid, {\n  text: 'Este texto foi corrigido via edição',\n  edit: messageToEdit.key\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📌 Fixar Mensagem\n\nFixa ou desafixa mensagens no topo da conversa:\n\n```js\n// Fixar por 24 horas (tempo em segundos)\nawait sock.sendMessage(jid, {\n  pin: m.key,\n  type: 1,     // 1 = Fixar\n  time: 86400  // 86400 = 1 dia | 604800 = 7 dias | 2592000 = 30 dias\n})\n\n// Desafixar mensagem\nawait sock.sendMessage(jid, { pin: m.key, type: 2 })\n```\n\n---\n\n## ✨ Elementos Avançados & Wrappers\n\n### 🗂️ Álbum\n\nPermite o envio agrupado de mídias (fotos e vídeos) em uma única mensagem de grade:\n\n```js\nawait sock.sendMessage(jid, {\n  album: [\n    { image: { url: 'https://example.com/foto1.jpg' }, caption: 'Legenda do item 1' },\n    { image: { url: 'https://example.com/foto2.jpg' }, caption: 'Legenda do item 2' },\n    { video: { url: 'https://example.com/video.mp4' }, caption: 'Vídeo do álbum' }\n  ]\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📅 Evento\n\nCria convites de eventos integrados à agenda dos participantes:\n\n```js\nawait sock.sendMessage(jid, {\n  event: {\n    name: 'Lançamento Oficial Diana',\n    description: 'Apresentação dos novos recursos do bot',\n    startDate: new Date('2025-12-01T10:00:00'),\n    endDate: new Date('2025-12-01T12:00:00'),\n    location: {\n      degreesLatitude: -23.55052,\n      degreesLongitude: -46.633308,\n      name: 'Auditório Principal'\n    },\n    extraGuestsAllowed: true // Permite acompanhantes\n  }\n})\n\n// Evento acoplado a um agendamento de chamada nativa\nawait sock.sendMessage(jid, {\n  event: {\n    name: 'Chamada de Alinhamento',\n    startDate: new Date('2025-12-01T10:00:00'),\n    call: 'audio', // 'audio' ou 'video'\n    isScheduleCall: true\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📖 Status / Story de Grupo\n\nPublique um status ou story visível para todos os integrantes de um grupo específico:\n\n```js\n// Enviar status textual\nawait sock.sendMessage(groupJid, {\n  groupStatusMessage: { text: 'Aviso importante para o grupo!' }\n})\n\n// Enviar status de imagem\nawait sock.sendMessage(groupJid, {\n  groupStatusMessage: {\n    image: { url: 'https://example.com/status.jpg' },\n    caption: 'Legenda explicativa'\n  }\n})\n\n// Enviar status de áudio gravado (nota de voz)\nawait sock.sendMessage(groupJid, {\n  groupStatusMessage: {\n    audio: fs.readFileSync('status_voz.ogg'),\n    mimetype: 'audio/ogg; codecs=opus',\n    ptt: true\n  }\n})\n```\n\n<blockquote>\n  <b>Nota Técnica sobre Áudio no Status:</b> Mensagens de áudio enviadas a status de grupo (<code>groupStatusMessageV2</code>) são enviadas internamente sob o atributo <code>type=\"text\"</code> e sem <code>mediatype</code> (obedecendo às especificações originais do WhatsApp). Fotos e vídeos utilizam <code>type=\"media\"</code>.\n</blockquote>\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🏷️ Menção no Status\n\nPermite marcar usuários de forma oculta ao publicar um status (eles receberão notificações):\n\n```js\n// Marcando múltiplos JIDs de contatos ou grupos\nawait sock.sendMessage(['5511999999999@s.whatsapp.net', 'id_do_grupo@g.us'], {\n  text: 'Status especial para vocês',\n  backgroundColor: '#ff6b9d'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📡 Canal (Newsletter)\n\n> **Melhoria v0.1.16:** O envio de mídias para canais foi corrigido. Resolvidos os bugs de ausência do atributo `mediatype` e da falta de miniaturas.\n\nPara postagens em canais onde o bot é administrador (JIDs terminados em `@newsletter`). Canais não possuem encriptação de ponta a ponta:\n\n```js\nconst channelJid = '120363425154682710@newsletter'\n\n// Texto simples\nawait sock.sendMessage(channelJid, { text: 'Olá inscritos!' })\n\n// Imagens (URL, arquivo local ou Buffer)\nawait sock.sendMessage(channelJid, {\n  image: { url: 'https://example.com/post.jpg' },\n  caption: 'Capa do dia'\n})\n\n// Vídeos e Áudios\nawait sock.sendMessage(channelJid, {\n  video: { url: 'https://example.com/tutorial.mp4' },\n  caption: 'Assista agora!'\n})\n\n// Enquete em Canal\nawait sock.sendMessage(channelJid, {\n  poll: {\n    name: 'O que prefere no bot?',\n    values: ['Facilidade', 'Recursos', 'Suporte'],\n    selectableCount: 1\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🔁 Resposta de Fluxo (Flow)\n\nPermite enviar respostas estruturadas simulando interações nativas do tipo Flow:\n\n```js\nawait sock.sendMessage(jid, {\n  flowReply: {\n    name: 'quick_reply',\n    paramsJson: '{\"id\":\"botao_1\"}',\n    text: 'Ação executada',\n    format: 1,\n    version: 1\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🔘 Resposta de Botão\n\nSimula e envia o evento de clique em um botão interativo:\n\n```js\n// Simular clique em botão de template\nawait sock.sendMessage(jid, {\n  buttonReply: { displayText: 'Confirmar Cadastro', id: 'confirm_btn', index: 0 },\n  type: 'template'\n})\n\n// Simular clique em botão simples (Plain)\nawait sock.sendMessage(jid, {\n  buttonReply: { displayText: 'Não, obrigado', id: 'cancel_btn' },\n  type: 'plain'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📎 Manter no Chat (Keep)\n\nEvita que uma mensagem de chat temporário seja apagada:\n\n```js\nawait sock.sendMessage(jid, {\n  keep: m.key,\n  keepType: 1  // 1 = Manter mensagem, 2 = Remover proteção (unkeep)\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📞 Chamada Agendada\n\n```js\nawait sock.sendMessage(jid, {\n  call: {\n    time: Date.now() + 3600000, // Agendado para daqui a 1 hora\n    type: 1,                    // 1 = Áudio, 2 = Vídeo\n    title: 'Reunião de Escopo'\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🔗 Convite de Grupo\n\nCria e envia um card estruturado contendo o convite para um grupo:\n\n```js\nawait sock.sendMessage(jid, {\n  groupInvite: {\n    jid: 'grupo_id@g.us',\n    inviteCode: 'código_de_entrada',\n    inviteExpiration: Date.now() + 86400000, // Expiração (24 horas)\n    subject: 'Grupo de Clientes VIP',\n    text: 'Junte-se à nossa comunidade exclusiva!'\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🛍️ Produto\n\n```js\nawait sock.sendMessage(jid, {\n  product: {\n    productImage: fs.readFileSync('celular.jpg'),\n    productId: 'prod_99',\n    title: 'Smartphone Diana S25',\n    description: 'O celular mais moderno do mercado',\n    currencyCode: 'BRL',\n    priceAmount1000: 2999000, // R$ 2.999,00 (Valor em milésimos)\n    retailerId: 'sku_diana_s25',\n    url: 'https://loja.dianabots.com/s25'\n  },\n  businessOwnerJid: '5511999999999@s.whatsapp.net' // JID comercial obrigatório\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 👁️ Visualização Única\n\nEnvia imagens ou vídeos configurados para serem visualizados apenas uma vez:\n\n```js\nawait sock.sendMessage(jid, {\n  image: { url: 'https://example.com/secreta.jpg' },\n  viewOnce: true // Ativa visualização única\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 👁️ Visualização Única V2\n\n```js\n// Utilizando a estrutura V2 do WhatsApp\nawait sock.sendMessage(jid, {\n  image: { url: 'https://example.com/secreta.jpg' },\n  viewOnceV2: true\n})\n\n// Com suporte estendido\nawait sock.sendMessage(jid, {\n  image: { url: 'https://example.com/secreta.jpg' },\n  viewOnceV2Extension: true\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### ⏳ Efêmero\n\n```js\n// Ativa o envio de uma mensagem temporária avulsa no chat\nawait sock.sendMessage(jid, {\n  text: 'Esta mensagem desaparecerá no tempo configurado no chat',\n  ephemeral: true\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🙈 Spoiler\n\nEnvia imagens ocultando a legenda com filtro de spoiler:\n\n```js\nawait sock.sendMessage(jid, {\n  image: { url: 'https://example.com/revelacao.jpg' },\n  caption: 'Este é o grande final da temporada!',\n  spoiler: true // Oculta legenda\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🎭 Wrap de Status de Grupo\n\nWrapper automático para enviar mídias encapsuladas como status de grupo:\n\n```js\nawait sock.sendMessage(jid, {\n  text: 'Status enviado via automação',\n  groupStatus: true // Encapsula a mensagem automaticamente\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🎞️ Figurinha Lottie\n\n```js\n// Envia animação lottie como figurinha dinâmica\nawait sock.sendMessage(jid, {\n  sticker: fs.readFileSync('animacao.webp'),\n  isLottie: true\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🤖 Ícone de IA\n\nExibe no cabeçalho ou nas informações da mensagem o selo oficial de \"Mensagem Gerada por IA\". Suportado apenas em chats privados:\n\n```js\nawait sock.sendMessage(jid, { text: 'Esta é uma resposta gerada por IA', ai: true })\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🔒 Etiqueta Secure Meta Service\n\nEnvia mensagens de texto contendo a etiqueta azul de canal ou serviço oficial Meta verificado:\n\n```js\nawait sock.sendMessage(jid, {\n  text: 'Serviço de Atendimento Autorizado',\n  secureMetaServiceLabel: true\n})\n```\n\n---\n\n## 🎛️ Mensagens Interativas & Botões\n\n### 📍 Botões com Cabeçalho de Localização\n\nPermite criar botões estruturados contendo dados de localização no topo (Header do Tipo 6):\n\n```js\nawait sock.sendMessage(jid, {\n  buttonsMessage: {\n    locationMessage: {\n      degreesLatitude: -23.55052,\n      degreesLongitude: -46.633308,\n      name: 'Minha Empresa',\n      address: 'Endereço Comercial',\n      jpegThumbnail: './img/fachada.jpg' // Aceita arquivo local, URL ou Buffer\n    },\n    contentText: 'Confirme sua visita no botão abaixo',\n    footerText: 'Powered by @dianabots/baileys',\n    buttons: [\n      { buttonId: 'confirm_visit', buttonText: { displayText: 'Confirmar Agendamento' }, type: 1 }\n    ],\n    headerType: 6 // 6 indica cabeçalho de Localização\n  }\n})\n```\n\n**Tipos suportados para `headerType`:**\n\n| ID | Formato do Cabeçalho |\n|:--:|----------------------|\n| `1` | Texto simples |\n| `2` | Imagem |\n| `3` | Vídeo |\n| `4` | Documento |\n| `6` | Localização geográfica |\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🎛️ Botões\n\n```js\n// Botões simples de resposta rápida (Quick Reply)\nawait sock.sendMessage(jid, {\n  text: 'Selecione sua categoria de interesse',\n  footer: 'Menu de Seleção',\n  buttons: [\n    { id: 'cat_tech', text: 'Tecnologia' },\n    { id: 'cat_arts', text: 'Artes' }\n  ]\n})\n\n// Shorthand prático: Criar menu de lista integrado a um único botão\nawait sock.sendMessage(jid, {\n  text: 'Selecione abaixo',\n  buttons: [{\n    text: 'Ver Seções',\n    sections: [{\n      title: 'Principais Serviços',\n      rows: [\n        { id: 'serv_1', title: 'Consultoria', description: 'Atendimento especializado' },\n        { id: 'serv_2', title: 'Suporte', description: 'Correção de erros' }\n      ]\n    }]\n  }]\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📋 Mensagem de Lista\n\n```js\nawait sock.sendMessage(jid, {\n  text: 'Por favor, escolha uma opção abaixo', // Mapeado para description\n  title: 'Central de Serviços',                // Mapeado para title\n  buttonText: 'Ver Categorias',                // Rótulo do botão disparador da lista\n  footer: 'Selecione apenas uma opção',\n  sections: [\n    {\n      title: 'Desenvolvimento',\n      rows: [\n        { id: 'dev_web', title: 'Websites', description: 'Desenvolvimento frontend/backend' },\n        { id: 'dev_app', title: 'Aplicativos', description: 'Mobile nativo iOS/Android' }\n      ]\n    },\n    {\n      title: 'Design',\n      rows: [\n        { id: 'design_logo', title: 'Logotipo & Branding' }\n      ]\n    }\n  ]\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🗃️ Botões de Modelo (Template Buttons)\n\nNeste formato, você pode mesclar links web, chamadas telefônicas e respostas rápidas:\n\n```js\nawait sock.sendMessage(jid, {\n  text: 'Central de Informações Diana',\n  footer: 'Clique em uma das opções',\n  templateButtons: [\n    { id: 'quick_rep_1', text: 'Falar com Atendente' },\n    { url: 'https://dianabots.com', text: 'Acessar Site Oficial' },\n    { call: '+5511999999999', text: 'Ligar para a Central' }\n  ]\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🌊 Fluxo Nativo (Native Flow)\n\nPermite construir interações nativas sofisticadas diretamente de acordo com as chaves inseridas:\n\n```js\n// Botões automatizados via Native Flow\nawait sock.sendMessage(jid, {\n  text: 'Painel Interativo',\n  nativeFlow: [\n    { id: 'op_1', text: 'Opção Rápida 1' },\n    { url: 'https://example.com', text: 'Abrir Site' },\n    { copy: 'CUPOMDIANA', text: 'Copiar Cupom' },\n    { call: '+5511999999999', text: 'Iniciar Chamada' }\n  ]\n})\n\n// Banner de Oferta por tempo limitado (offerText)\nawait sock.sendMessage(jid, {\n  text: 'Super Desconto!',\n  offerText: '50% de Desconto',\n  offerUrl: 'https://example.com/desconto',\n  offerCode: 'DIANA50',\n  offerExpiration: 1800000000,\n  nativeFlow: [{ id: 'claim_now', text: 'Garantir Cupom' }]\n})\n```\n\n> **Detecção Automática de Tipos:** A biblioteca converte automaticamente as chaves inseridas para as chamadas correspondentes do WhatsApp (`id` -> `quick_reply`, `url` -> `cta_url`, `copy` -> `cta_copy`, `call` -> `cta_call`, `sections` -> `single_select`).\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🎠 Carrossel\n\nPermite exibir múltiplos cartões com rolagem horizontal contendo mídias e botões independentes:\n\n```js\nawait sock.sendMessage(jid, {\n  text: 'Portfólio de Produtos',\n  footer: 'Navegue pelo carrossel',\n  cards: [\n    {\n      image: { url: 'https://example.com/card1.jpg' },\n      title: 'Plano Básico',\n      caption: 'Ideal para iniciar sua jornada',\n      footer: 'R$ 49/mês',\n      nativeFlow: [{ name: 'quick_reply', paramsJson: '{\"id\":\"choose_basic\"}', text: 'Assinar Plano' }]\n    },\n    {\n      image: { url: 'https://example.com/card2.jpg' },\n      title: 'Plano Premium',\n      caption: 'Acesso total aos nossos recursos',\n      footer: 'R$ 99/mês',\n      nativeFlow: [{ name: 'quick_reply', paramsJson: '{\"id\":\"choose_premium\"}', text: 'Assinar Plano' }]\n    }\n  ]\n})\n```\n\n---\n\n## 🔧 Recursos Especializados & Outros\n\n### 📃 Resposta de Lista\n\nEnvia uma confirmação programática de resposta contendo o ID e os detalhes do item selecionado:\n\n```js\nawait sock.sendMessage(jid, {\n  listReply: {\n    title: 'Confirmação de Seleção',\n    description: 'Você escolheu o Serviço A',\n    id: 'serv_1' // ID correspondente ao item selecionado\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🎴 Pacote de Figurinhas\n\nCarrega um arquivo contendo múltiplas figurinhas empacotadas de uma só vez. A biblioteca processa e ajusta os formatos necessários:\n\n```js\nawait sock.sendMessage(jid, {\n  cover: fs.readFileSync('capa_pack.webp'), // Imagem de capa obrigatória\n  name: 'Diana Pack',\n  publisher: 'dianabots',\n  description: 'Pacote oficial de figurinhas',\n  stickers: [\n    { data: fs.readFileSync('stk1.webp'), emojis: ['👍'], accessibilityLabel: 'Joinha' },\n    { data: { url: 'https://example.com/stk2.webp' }, emojis: ['❤️'] }\n  ]\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📢 Resposta de Anúncio Externo\n\nCria balões enriquecidos exibindo banners, links externos e descrições detalhadas (Ad Cards):\n\n```js\nawait sock.sendMessage(jid, {\n  text: 'Confira as novidades no blog',\n  externalAdReply: {\n    title: 'Artigo Especial Diana',\n    body: 'Como utilizar bots para alavancar seu negócio',\n    thumbnail: fs.readFileSync('capa_artigo.jpg'), // Buffer obrigatório\n    url: 'https://dianabots.com/blog/bot-whatsapp',\n    mediaType: 1,\n    largeThumbnail: true // Exibe miniatura ampliada\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 💳 Solicitar Pagamento\n\nGera um card solicitando transferência monetária através do WhatsApp Pay:\n\n```js\nawait sock.sendMessage(jid, {\n  text: 'Pagamento referente à contratação',\n  requestPaymentFrom: '5511999999999@s.whatsapp.net',\n  amount1000: 50000000, // R$ 50.000,00 (Valor em milésimos)\n  currencyCodeIso4217: 'BRL',\n  expiryTimestamp: Date.now() + 86400000 // Expiração em 24h\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🧾 Fatura (Invoice)\n\n```js\n// Envio acoplado a um arquivo PDF\nawait sock.sendMessage(jid, {\n  document: fs.readFileSync('fatura.pdf'),\n  mimetype: 'application/pdf',\n  fileName: 'Fatura_Servico.pdf',\n  invoiceNote: 'Fatura digital detalhada para pagamento'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📦 Pedido (Order)\n\nCria e envia um card contendo os dados organizados de uma compra/pedido comercial:\n\n```js\nawait sock.sendMessage(jid, {\n  order: {\n    orderId: 'ped_29910',\n    thumbnail: fs.readFileSync('produto.jpg'),\n    itemCount: 3,\n    status: 'PAYMENT_PENDING',\n    surface: 'CATALOG',\n    message: 'Seu pedido foi recebido com sucesso!',\n    orderTitle: 'Pedido #29910',\n    sellerJid: '5511999999999@s.whatsapp.net',\n    token: 'token_de_seguranca_unico',\n    totalAmount1000: 150000000, // R$ 150.000,00 (Em milésimos)\n    totalCurrencyCode: 'BRL'\n  }\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 💨 Mensagens Temporárias\n\nAtive ou desative as mensagens temporárias em chats de grupos especificando o tempo de duração:\n\n```js\n// Ativar (Duração padrão de 24 horas - 86400 segundos)\nawait sock.sendMessage(groupJid, { disappearingMessagesInChat: true })\n\n// Desativar mensagens temporárias\nawait sock.sendMessage(groupJid, { disappearingMessagesInChat: false })\n\n// Configurar tempo de expiração customizado (Exemplo: 7 dias)\nawait sock.sendMessage(groupJid, { disappearingMessagesInChat: 604800 })\n```\n\n> **Aviso:** Suportado exclusivamente em chats de grupos (`@g.us`).\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### ⚡ Mensagem Bruta (Raw)\n\nCaso queira contornar as validações da biblioteca e enviar uma mensagem formatada diretamente nas especificações do `WAProto`:\n\n```js\nawait sock.sendMessage(jid, {\n  raw: true, // Ignora o pré-processador da biblioteca\n  extendedTextMessage: {\n    text: 'Minha mensagem enviada no padrão proto cru do WhatsApp'\n  }\n})\n```\n\n---\n\n## 🤖 Formatação Avançada de Respostas Ricas (IA)\n\nAs Mensagens Ricas (`AIRichResponseMessage`) são balões de formatação avançada criados para se assemelharem às interações estruturadas de Inteligência Artificial nativas do WhatsApp. \n\n> ⚠️ **Atenção:** Os parâmetros `contentText`, `headerText`, `footerText` e `disclaimerText` **não atuam como chaves de disparo**. O envio isolado desses campos gerará uma falha do tipo *Error: Invalid media type*. Certifique-se de sempre inserir ao menos uma mídia rica disparadora (`code`, `table`, `richImage`, `richResponse`, etc).\n\n### ✍️ addText\n\n```js\n// ✅ Forma correta de enviar blocos textuais ricos usando o array richResponse\nawait sock.sendMessage(jid, {\n  richResponse: [\n    { text: 'Este é um bloco textual gerado via IA contendo formatações de *itálico* e **negrito**.' }\n  ],\n  headerText: 'Título Informativo',\n  footerText: 'Informações Finais',\n  disclaimerText: 'Mensagem gerada por Inteligência Artificial'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 💻 addCode\n\nInsere trechos de códigos com destaque e formatação estruturada na conversa:\n\n```js\nawait sock.sendMessage(jid, {\n  code: 'const soma = (a, b) => a + b;\\nconsole.log(soma(5, 10));',\n  language: 'javascript', // Linguagem para formatação do código\n  headerText: 'Exemplo prático de JavaScript:',\n  footerText: 'Fim do trecho de código'\n})\n```\n\n**Lista de chaves de linguagens suportadas pela biblioteca:**\n\n| Linguagem | Chaves Suportadas |\n|---|---|\n| JavaScript | `javascript`, `js` |\n| TypeScript | `typescript`, `ts` |\n| Python | `python`, `py` |\n| Go | `go`, `golang` |\n| C++ | `cpp`, `c++` |\n| Rust | `rust`, `rs` |\n| Java | `java` |\n| PHP | `php` |\n| Ruby | `ruby`, `rb` |\n| Kotlin | `kotlin`, `kt` |\n| Swift | `swift` |\n| C | `c` |\n| SQL / Banco de Dados | `sql`, `mysql`, `postgresql`, `sqlite` |\n| Bash / Shell | `bash`, `sh`, `shell` |\n| HTML / CSS | `html`, `css` |\n| JSON / YAML | `json`, `yaml`, `yml` |\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📊 addTable\n\n```js\nawait sock.sendMessage(jid, {\n  table: [\n    ['Produto', 'Quantidade', 'Preço'], // Primeira linha define os cabeçalhos\n    ['Celular', '10', 'R$ 2999'],\n    ['Notebook', '5', 'R$ 4500']\n  ],\n  title: 'Inventário de Estoque',\n  headerText: 'Confira as tabelas atualizadas',\n  footerText: 'Dados de Dezembro de 2025'\n})\n\n// Tabela sem cabeçalho (utilizando a chave noHeading)\nawait sock.sendMessage(jid, {\n  table: [\n    ['Taxa de Entrega', 'R$ 15,00'],\n    ['Desconto Aplicado', '-R$ 10,00']\n  ],\n  noHeading: true,\n  title: 'Detalhamento Financeiro'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🖼️ addImage\n\n```js\n// Envio de imagem rica unitária\nawait sock.sendMessage(jid, {\n  richImage: 'https://example.com/banner.jpg',\n  headerText: 'Capa da Campanha'\n})\n\n// Envio de múltiplas imagens em formato grade rica (Grid)\nawait sock.sendMessage(jid, {\n  richImage: [\n    'https://example.com/imagem1.jpg',\n    'https://example.com/imagem2.jpg',\n    'https://example.com/imagem3.jpg'\n  ],\n  headerText: 'Grade de fotos do evento'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🎬 addVideo\n\n```js\n// Envio de vídeo rico com definição opcional de duração (sintaxe: 'url|segundos')\nawait sock.sendMessage(jid, {\n  richVideo: 'https://example.com/video.mp4|60', // 60 segundos\n  headerText: 'Apresentação Institucional'\n})\n\n// Lista contendo múltiplos vídeos ricos em sequência\nawait sock.sendMessage(jid, {\n  richVideo: [\n    'https://example.com/video1.mp4|30',\n    'https://example.com/video2.mp4|45'\n  ],\n  headerText: 'Lista de reprodução de tutoriais'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🔗 addSource\n\nPermite indexar fontes de referências externas contendo ícones e links:\n\n```js\nawait sock.sendMessage(jid, {\n  source: [\n    {\n      url: 'https://wikipedia.org',\n      title: 'Artigo Principal Wikipedia',\n      display_name: 'Wikipedia',\n      subtitle: 'Enciclopédia Livre',\n      favicon: 'https://wikipedia.org/favicon.ico'\n    }\n  ],\n  headerText: 'Fontes consultadas'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🎥 addReels\n\nCria uma listagem com rolagem horizontal contendo vídeos curtos (Reels):\n\n```js\nawait sock.sendMessage(jid, {\n  reels: [\n    {\n      username: 'criador_tech',\n      videoUrl: 'https://example.com/video.mp4',\n      thumbnailUrl: 'https://example.com/capa.jpg',\n      profileIconUrl: 'https://example.com/avatar.jpg',\n      reels_title: 'Como automatizar chats',\n      likes_count: 5200,\n      view_count: 90000,\n      reel_source: 'IG',\n      is_verified: true\n    }\n  ],\n  headerText: 'Destaques em vídeos curtos'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🛍️ addProduct\n\n```js\n// Produto único rico (Layout Single)\nawait sock.sendMessage(jid, {\n  richProduct: {\n    title: 'Camiseta Premium',\n    brand: 'Diana Vestuário',\n    price: 'R$ 79,90',\n    product_url: 'https://loja.dianabots.com/camiseta',\n    image_url: 'https://example.com/camiseta.jpg'\n  },\n  headerText: 'Sugestão de Compra'\n})\n\n// Múltiplos produtos ricos (Layout HScroll com rolagem)\nawait sock.sendMessage(jid, {\n  richProduct: [\n    { title: 'Item A', price: 'R$ 29', product_url: 'https://loja.com/a', image_url: 'https://loja.com/a.jpg' },\n    { title: 'Item B', price: 'R$ 39', product_url: 'https://loja.com/b', image_url: 'https://loja.com/b.jpg' }\n  ],\n  headerText: 'Confira as promoções do dia'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📝 addPost\n\nPublicações ricas simulando redes sociais:\n\n```js\nawait sock.sendMessage(jid, {\n  richPost: {\n    username: 'dianabots_oficial',\n    profile_picture_url: 'https://example.com/avatar.jpg',\n    is_verified: true,\n    thumbnail_url: 'https://example.com/post_capa.jpg',\n    post_caption: 'Acabamos de lançar as respostas ricas para o bot!',\n    likes_count: 4500,\n    post_url: 'https://instagram.com/p/post_id',\n    source_app: 'INSTAGRAM',\n    orientation: 'LANDSCAPE'\n  },\n  headerText: 'Publicação Recente'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 💡 addTip\n\nAdiciona blocos explicativos de dicas no rodapé ou cabeçalho das respostas ricas:\n\n```js\nawait sock.sendMessage(jid, {\n  tip: 'Dica: Você pode encadear múltiplas tabelas e blocos utilizando o array richResponse.',\n  headerText: 'Dica de Uso'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🔮 addSuggest\n\nExibe pílulas horizontais contendo botões de sugestões rápidas para facilitar a resposta dos usuários:\n\n```js\nawait sock.sendMessage(jid, {\n  contentText: 'O que você deseja fazer agora?',\n  suggest: [\n    'Ver exemplo de código',\n    'Acessar tabelas',\n    'Falar com suporte'\n  ]\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 🗺️ Mapa Rico, LaTeX, Grades & Animações\n\n```js\n// LaTeX (Expressões matemáticas formatações ricas)\nawait sock.sendMessage(jid, {\n  latex: {\n    text: 'Equação de Einstein:',\n    expressions: [\n      { expression: 'E = mc^2', width: 120, height: 40 }\n    ]\n  },\n  headerText: 'Física Teórica'\n})\n\n// Mapa Rico integrado com marcadores\nawait sock.sendMessage(jid, {\n  map: {\n    centerLatitude: -23.55052,\n    centerLongitude: -46.633308,\n    latitudeDelta: 0.05,\n    longitudeDelta: 0.05,\n    showInfoList: true,\n    annotations: [\n      { number: 1, latitude: -23.55052, longitude: -46.633308, title: 'São Paulo', body: 'Cidade Central' }\n    ]\n  },\n  headerText: 'Coordenadas Geográficas'\n})\n```\n\n<img src=\"https://user-images.githubusercontent.com/73097560/115834477-dbab4500-a447-11eb-908a-139a6edaec5c.gif\" width=\"100%\"/>\n\n### 📥 Receber & Decodificar Mensagem Rica\n\nPara capturar e decodificar mensagens ricas recebidas pelo bot, utilize a seguinte estrutura no escutador `messages.upsert`:\n\n```js\nconst { normalizeMessageContent, parseRichMessage } = require('@dianabots/baileys')\n\nsock.ev.on('messages.upsert', async ({ messages }) => {\n  for (const msg of messages) {\n    const inner = normalizeMessageContent(msg.message)\n    const parsed = parseRichMessage(inner?.richResponseMessage)\n\n    if (!parsed) continue\n\n    for (const sub of parsed.submessages) {\n      switch (sub.type) {\n        case 'text':         console.log('Teks:', sub.text); break\n        case 'code':         console.log('Código:', sub.language, sub.raw); break\n        case 'table':        console.log('Tabela:', sub.title, sub.rows); break\n        case 'gridImage':    console.log('Grid Image:', sub.gridImageUrl); break\n        case 'inlineImage':  console.log('Inline Image:', sub.imageUrl); break\n        case 'dynamic':      console.log('Dynamic:', sub.url); break\n        case 'map':          console.log('Map:', sub.centerLatitude, sub.centerLongitude); break\n        case 'latex':        console.log('LaTeX:', sub.expressions); break\n        case 'contentItems': console.log('Content Items:', sub.items); break\n      }\n    }\n  }\n})\n```\n\n---\n\n## 🏛️ Licença\n\nEste projeto é distribuído sob os termos da licença **MIT**. Veja o arquivo `LICENSE` para mais informações.\n\n<br/>\n\n<img src=\"https://capsule-render.vercel.app/api?type=waving&color=F472B6&height=50&section=header\" width=\"100%\"/>\n\n<div align=\"center\">\n\n<br/>\n\n<img src=\"https://readme-typing-svg.demolab.com?font=Fira+Code&size=14&duration=4000&pause=1000&color=C084FC&center=true&vCenter=true&width=500&lines=Feito+com+%E2%9D%A4%EF%B8%8F+por+dianabots;%40dianabots%2Fbaileys+%E2%80%94+o+melhor+fork+do+Baileys\" alt=\"footer\"/>\n\n<br/><br/>\n\n<img src=\"https://img.shields.io/badge/Feito%20com-%E2%9D%A4%EF%B8%8F-ff69b4?style=for-the-badge\" alt=\"made with love\"/>\n&nbsp;\n<img src=\"https://img.shields.io/badge/Português-🇧🇷%20🇵🇹-blue?style=for-the-badge\" alt=\"portuguese\"/>\n\n<br/><br/>\n\n</div>\n","readmeFilename":"README.md"}