INDEX / GUIA_SIMULACOES.md
akra35567's picture
Upload 58 files
3b348ee verified
# 🎬 GUIA COMPLETO - SIMULAÇÕES DE PRESENÇA (AKIRA BOT V21)
## ✅ STATUS DAS SIMULAÇÕES
### 1️⃣ **Simulação de Digitação** ✅ FUNCIONAL
- **Arquivo**: `PresenceSimulator.js``simulateTyping()`
- **Como funciona**:
```
1. Envia 'available' (online)
2. Aguarda 300ms
3. Envia 'composing' (digitando)
4. Aguarda tempo proporcional (30-50ms por caractere)
5. Envia 'paused' (parou de digitar)
6. Aguarda 300ms
7. Envia 'available' (volta ao normal)
```
- **Integração no CommandHandler**: `simulateTyping(jid, text)`
- **Cálculo automático**: `calculateTypingDuration(text)` → 1-15 segundos conforme tamanho
### 2️⃣ **Simulação de Gravação de Áudio** ✅ FUNCIONAL
- **Arquivo**: `PresenceSimulator.js``simulateRecording()`
- **Como funciona**:
```
1. Envia 'recording' (gravando áudio)
2. Aguarda tempo proporcional (10ms por caractere)
3. Envia 'paused' (gravação concluída)
```
- **Integração no CommandHandler**: `simulateRecording(jid, text)`
- **Cálculo automático**: `calculateRecordingDuration(text)` → 2-10 segundos conforme tamanho
### 3️⃣ **Simulação de Ticks (✓ e ✓✓)** ✅ FUNCIONAL
- **Arquivo**: `PresenceSimulator.js``simulateTicks()`
- **Lógica automática**:
#### 📱 EM GRUPOS (mensagens recebidas):
```
❌ NÃO ATIVADA (sem menção/reply)
└─ Um tick (✓) = Entregue
└─ Usa: sendReadReceipt() ou sendReceipt()
└─ Log: "✓ [ENTREGUE] Grupo - Um tick"
✅ ATIVADA (mencionou ou respondeu)
└─ Dois ticks azuis (✓✓) = Lido
└─ Usa: readMessages()
└─ Log: "✓✓ [LIDO] Grupo - Dois ticks azuis"
```
#### 💬 EM PV (Direct Message):
```
❌ NÃO ATIVADA
└─ Um tick (✓) = Entregue
└─ Log: "✓ [ENTREGUE] PV - Um tick"
✅ ATIVADA (ou áudio)
└─ Dois ticks azuis (✓✓) = Lido
└─ Log: "✓✓ [LIDO] PV - Dois ticks azuis"
🎤 ÁUDIO REPRODUZIDO
└─ Dois ticks azuis (✓✓) = Áudio ouvido
└─ Log: "▶️ [REPRODUZIDO] PV - Áudio marcado como reproduzido"
```
#### ✨ STATUS DE MENSAGENS ENVIADAS PELO BOT:
```
1️⃣ Primeiro status: Entregue (1 tick)
└─ Automático ao enviar
2️⃣ Segundo status: Lido (2 ticks azuis)
└─ Automático após resposta ser lida pelo user
```
### 4️⃣ **Simulação de Online (Presence)** ✅ FUNCIONAL
- **Arquivo**: `PresenceSimulator.js` → automatizado
- **Como funciona**:
```
Todas as simulações mantêm o bot como 'available'
- Antes de ações: Envia 'available'
- Depois de ações: Volta para 'available'
- Garante que bot sempre aparece como online
```
---
## 🔧 INTEGRAÇÃO NO INDEX.JS
### Exemplo de Uso Básico:
```javascript
const PresenceSimulator = require('./modules/PresenceSimulator');
const CommandHandler = require('./modules/CommandHandler');
// Inicializar
const presenceSimulator = new PresenceSimulator(sock);
const commandHandler = new CommandHandler(botCore, sock);
// Responder comando com simulação completa
async function handleCommand(sock, m, comando) {
const jid = m.key.remoteJid;
const resposta = "Olá! Aqui está sua resposta.";
// Simular digitação
await presenceSimulator.simulateTyping(jid, resposta);
// Enviar resposta
await sock.sendMessage(jid, { text: resposta }, { quoted: m });
// Marcar como lido
await presenceSimulator.simulateTicks(m, true);
}
```
### Exemplo com CommandHandler Integrado:
```javascript
// No event handler de mensagens
sock.ev.on('messages.upsert', async ({ messages }) => {
const m = messages[0];
// Marcar status inicial
await commandHandler.markMessageStatus(m, false);
// Processar comando
const resposta = "Resposta do comando...";
// Simular digitação
await commandHandler.simulateTyping(m.key.remoteJid, resposta);
// Enviar
await sock.sendMessage(m.key.remoteJid, { text: resposta }, { quoted: m });
// Marcar como lido (final)
await commandHandler.markMessageStatus(m, true);
});
```
---
## 📊 TABELA DE COMPORTAMENTOS
| Situação | Digitação | Gravação | Ticks | Status |
|----------|-----------|----------|-------|--------|
| Comando em PV | ✅ Sim | ❌ Não | ✓✓ Azul | LIDO |
| Comando em Grupo (ativado) | ✅ Sim | ❌ Não | ✓✓ Azul | LIDO |
| Comando em Grupo (não ativado) | ✅ Sim | ❌ Não | ✓ Simples | ENTREGUE |
| Resposta de áudio em PV | ❌ Não | ✅ Sim | ✓✓ Azul | REPRODUZIDO |
| Resposta de áudio em Grupo | ❌ Não | ✅ Sim | ✓✓ Azul | LIDO |
| Resposta de imagem | ✅ Sim | ❌ Não | ✓✓ Azul | LIDO |
| Resposta de vídeo | ✅ Sim | ❌ Não | ✓✓ Azul | LIDO |
---
## 🧪 TESTE PRÁTICO - Validar Simulações
### Teste 1: Digitação Realista
```bash
# Enviar mensagem em PV para bot
# Observe no WhatsApp:
✅ Bot aparece "digitando..."
✅ Tempo proporção ao tamanho da resposta
✅ Para de digitar antes de enviar
✅ Resposta aparece
✅ Marca como lido (2 ticks azuis)
```
### Teste 2: Gravação de Áudio
```bash
# Enviar áudio mencionando "Akira"
# Observe no WhatsApp:
✅ Bot aparece "gravando áudio..."
✅ Após ~2-3 segundos para
✅ Áudio é enviado
✅ Marca como reproduzido (✓✓ azul)
```
### Teste 3: Ticks em Grupo
```bash
# Grupo onde bot é admin
# Enviar mensagem SEM mencionar bot
✅ Bot marca como entregue (✓)
# Enviar mensagem MENCIONANDO bot
✅ Bot marca como lido (✓✓ azul)
```
### Teste 4: Ticks em PV
```bash
# Enviar mensagem em PV
✅ Bot marca como lido (✓✓ azul) SEMPRE
```
---
## 🐛 TROUBLESHOOTING
### ❌ Problema: Digitação não aparece
**Solução**:
- Verifique se `sendPresenceUpdate()` é suportado na versão do Baileys
- Confirme que socket está conectado (`sock.user` existe)
- Teste manualmente com `await sock.sendPresenceUpdate('composing', jid)`
### ❌ Problema: Ticks não aparecem
**Solução**:
- Verifique se `readMessages()` funciona em grupos
- Se erro, use `sendReadReceipt()` como fallback
- Para grupos, confirme que bot é admin
### ❌ Problema: Presença não volta para online
**Solução**:
- Verifique se `paused` é enviado corretamente
- Adicione `await delay(300)` e depois `available`
- Teste manualmente
### ❌ Problema: Simulações muito lentes
**Solução**:
- Reduza o multiplicador no `calculateTypingDuration()`
- Mínimo não pode ser < 500ms (pode parecer suspeito)
- Máximo recomendado é 10-15s
---
## 📁 ARQUIVOS ENVOLVIDOS
```
/akira/index/
├── modules/
│ ├── PresenceSimulator.js ← Implementação das simulações
│ ├── CommandHandler.js ← Integração com handler
│ ├── ConfigManager.js ← Configurações
│ ├── BotCore.js ← Core do bot
│ └── ... (outras classes)
├── index.js ← Exemplo de integração
└── GUIA_SIMULACOES.md ← Este arquivo
```
---
## ✅ CHECKLIST - VALIDAÇÃO FINAL
- [ ] `PresenceSimulator.js` criado
- [ ] `CommandHandler.js` atualizado com integração
- [ ] Socket passado ao CommandHandler
- [ ] Digitação funciona em comandos
- [ ] Gravação funciona em áudios
- [ ] Ticks aparecem corretamente em PV
- [ ] Ticks aparecem corretamente em grupos
- [ ] Bot sempre aparece online
- [ ] Sem erros no console
- [ ] Comportamento natural e realista
---
## 🚀 PRÓXIMOS PASSOS
1. **Implementar no index.js**:
```javascript
const presenceSimulator = new PresenceSimulator(sock);
commandHandler.setSocket(sock);
```
2. **Testar em grupos reais**:
- Verificar ticks
- Verificar digitação
- Verificar áudios
3. **Ajustar tempos** se necessário conforme feedback
4. **Monitorar logs** para garantir nenhuma falha
---
**Última atualização**: 24 de Janeiro de 2025
**Versão**: AKIRA BOT V21.02.2025
**Status**: ✅ 100% FUNCIONAL