|
| 1 | +# Agente de Refatoração/Migração: Venom-Bot → WPPConnect |
| 2 | + |
| 3 | +## Objetivo |
| 4 | + |
| 5 | +Você é um agente responsável pela **refatoração e migração completa** do projeto OrbitBot da biblioteca **venom-bot** para **WPPConnect** (@wppconnect-team/wppconnect ou wppconnect-server). A migração deve preservar toda a funcionalidade existente: fila de mensagens, pipeline de IA, comandos admin, humanizador de resposta, backup, dashboard e integrações. |
| 6 | + |
| 7 | +--- |
| 8 | + |
| 9 | +## Contexto do Projeto |
| 10 | + |
| 11 | +- **Projeto:** OrbitBot — bot de WhatsApp com IA, histórico em SQLite, backup, comandos admin e painel. |
| 12 | +- **Stack atual:** Node.js, venom-bot, SQLite, pipeline de mensagens (histórico → IA → persistência). |
| 13 | +- **Arquivos que usam o cliente WhatsApp (venom):** |
| 14 | + - `src/bot.js` — ponto central: `venom.create()`, `client.onMessage()`, `client.sendText()` |
| 15 | + - `src/humanizer.js` — recebe `client` e usa apenas `client.sendText(chatId, texto)` |
| 16 | + - Nenhum outro arquivo recebe o `client` diretamente; pipeline, comandos e fila trabalham com `message.from`, `message.body`, etc. |
| 17 | + |
| 18 | +--- |
| 19 | + |
| 20 | +## Mapeamento de API (Venom-Bot → WPPConnect) |
| 21 | + |
| 22 | +Use este mapeamento como referência. Consulte a documentação oficial do WPPConnect para a versão instalada. |
| 23 | + |
| 24 | +| Venom-Bot | WPPConnect (equivalente) | |
| 25 | +|-----------|---------------------------| |
| 26 | +| `venom.create({ session, multidevice, headless, logQR, ... })` | `wppconnect.create({ session, ... })` ou `create()` com opções equivalentes (session name, headless, catchQR, etc.) | |
| 27 | +| Retorno: `client` (Promise) | Retorno: objeto cliente (Promise) — verificar nome exato do método de criação | |
| 28 | +| `client.onMessage(callback)` | `client.on('message', callback)` ou método equivalente para escutar mensagens | |
| 29 | +| `client.sendText(chatId, text)` | `client.sendText(chatId, text)` ou `client.sendText(contactId, text)` — conferir assinatura (id pode ser `@c.us` ou só número) | |
| 30 | +| Objeto `message`: `from`, `body`, `isGroupMsg` | Adaptar para o formato do WPPConnect: verificar se usa `from`, `body`, `isGroup` ou nomes diferentes | |
| 31 | +| Sessão/pasta de dados | WPPConnect pode usar pasta distinta (ex.: `tokens`, `wppconnect-session`); ajustar e documentar | |
| 32 | + |
| 33 | +--- |
| 34 | + |
| 35 | +## Escopo da Migração |
| 36 | + |
| 37 | +### 1. Dependências |
| 38 | +- **Remover:** `venom-bot` do `package.json`. |
| 39 | +- **Adicionar:** pacote WPPConnect (ex.: `@wppconnect-team/wppconnect` ou `wppconnect-server` — usar a API estável e documentada). |
| 40 | +- Atualizar `package-lock.json` via `npm install`. |
| 41 | + |
| 42 | +### 2. `src/bot.js` |
| 43 | +- Substituir `require('venom-bot')` pelo require do WPPConnect. |
| 44 | +- Substituir `venom.create({ ... })` pela função de criação do WPPConnect, mantendo equivalentes para: |
| 45 | + - Nome da sessão |
| 46 | + - Modo headless (ou equivalente) |
| 47 | + - Exibição do QR (logQR / catchQR) |
| 48 | + - Argumentos do browser (--no-sandbox etc.) se suportados |
| 49 | +- Adaptar o callback de mensagens: de `client.onMessage(async (message) => { ... })` para o modelo de eventos do WPPConnect (ex.: `client.on('message', ...)`). |
| 50 | +- Garantir que o objeto `message` usado na fila e no pipeline tenha os campos esperados: `from`, `body`, `isGroupMsg` (ou normalizar para esse formato se o WPPConnect usar outros nomes). |
| 51 | +- Manter inalterados: lógica de admin (`isAdmin`, comandos `/`), `messageQueue`, `pipeline.run()`, `simularRespostaHumana(client, message.from, resposta)`, tratamento de erros e logs. |
| 52 | + |
| 53 | +### 3. `src/humanizer.js` |
| 54 | +- A função `simularRespostaHumana(client, chatId, texto)` deve continuar recebendo um **cliente** e usar apenas **envio de texto**. |
| 55 | +- Trocar chamadas `client.sendText(chatId, ...)` pela API equivalente do WPPConnect (geralmente mesmo nome; verificar se `chatId` deve ser formatado diferente, ex.: com sufixo `@c.us`). |
| 56 | + |
| 57 | +### 4. Formato de contato (ID) |
| 58 | +- Venom usa IDs no formato `numero@c.us`. Se o WPPConnect usar formato diferente (ex.: só número, ou `numero@s.whatsapp.net`), criar um helper (ex.: `normalizeChatId(from)`) e usá-lo em `bot.js` e `humanizer.js` para manter compatibilidade com o resto do código (pipeline, histórico, comandos). |
| 59 | + |
| 60 | +### 5. Sessão e arquivos locais |
| 61 | +- Atualizar `.gitignore` se a pasta de sessão do WPPConnect for diferente (ex.: `wppconnect-session`, `tokens`). |
| 62 | +- Documentar no README ou em comentário onde os dados de sessão são armazenados. |
| 63 | + |
| 64 | +### 6. Outros arquivos |
| 65 | +- **Não alterar** a lógica de: `pipeline.js`, `queue.js`, `commandBus`, comandos admin, `openai`, `backup`, `dashboard`, `logger`, `performance`, repositórios e plugins, exceto se for necessário receber um “cliente” com interface diferente (neste projeto apenas `bot.js` e `humanizer.js` usam o cliente). |
| 66 | +- Se algum plugin ou módulo receber `client` no futuro, ele deve usar apenas `sendText(chatId, text)`; manter essa interface para compatibilidade. |
| 67 | + |
| 68 | +--- |
| 69 | + |
| 70 | +## Regras de Implementação |
| 71 | + |
| 72 | +1. **Não remover funcionalidades:** fila, buffer por cliente, comandos `/`, pipeline de IA, humanizador, backup, dashboard, logs e métricas devem continuar funcionando. |
| 73 | +2. **Manter estrutura de pastas e nomes de arquivos** (exceto se renomear algo por convenção do WPPConnect). |
| 74 | +3. **Tratamento de erros:** preservar `try/catch` e mensagens de fallback ao usuário (“Estou tendo dificuldades técnicas...”). |
| 75 | +4. **Compatibilidade de formato de mensagem:** o objeto que segue para `messageQueue.addMessage(message)` e para `pipeline.run(message.from, message.body)` deve ter pelo menos `from`, `body` e `isGroupMsg` (ou equivalente mapeado). |
| 76 | +5. **Testes manuais:** após a migração, o agente deve listar no próprio arquivo ou em MIGRATION_CHECKLIST.md os passos para testar: iniciar bot, escanear QR, enviar mensagem privada, comando admin, verificar resposta humanizada e histórico. |
| 77 | + |
| 78 | +--- |
| 79 | + |
| 80 | +## Checklist de Entrega |
| 81 | + |
| 82 | +- [ ] `package.json` sem `venom-bot`, com dependência WPPConnect instalada. |
| 83 | +- [ ] `src/bot.js` usando apenas API WPPConnect; mensagens chegando ao mesmo fluxo (fila → pipeline → humanizer). |
| 84 | +- [ ] `src/humanizer.js` usando apenas API WPPConnect para envio de texto. |
| 85 | +- [ ] Formato de `from`/chatId normalizado se necessário; pipeline e comandos funcionando com o mesmo contrato. |
| 86 | +- [ ] `.gitignore` atualizado para pastas de sessão do WPPConnect. |
| 87 | +- [ ] README ou comentário com instruções de execução e local da sessão. |
| 88 | +- [ ] Nenhuma referência residual a `venom` ou `venom-bot` no código (exceto em documentação de migração ou este prompt). |
| 89 | + |
| 90 | +--- |
| 91 | + |
| 92 | +## Referências |
| 93 | + |
| 94 | +- Documentação oficial do WPPConnect (GitHub/npm) para criação de cliente, eventos de mensagem e `sendText`. |
| 95 | +- Código atual em `src/bot.js` e `src/humanizer.js` como referência do contrato (from, body, sendText). |
| 96 | + |
| 97 | +Ao executar este prompt, o agente deve realizar todas as alterações necessárias nos arquivos listados, garantir que o projeto inicie sem erros de require e que o fluxo de mensagens permaneça compatível com o restante do sistema. |
0 commit comments