🎬 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:
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:
// 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
# 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
# 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
# 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
# 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.userexiste) - 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 depoisavailable - 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.jscriado -
CommandHandler.jsatualizado 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
Implementar no index.js:
const presenceSimulator = new PresenceSimulator(sock); commandHandler.setSocket(sock);Testar em grupos reais:
- Verificar ticks
- Verificar digitação
- Verificar áudios
Ajustar tempos se necessário conforme feedback
Monitorar logs para garantir nenhuma falha
Última atualização: 24 de Janeiro de 2025
Versão: AKIRA BOT V21.02.2025
Status: ✅ 100% FUNCIONAL