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.jssimulateTyping()
  • 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.jssimulateRecording()
  • 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.jssimulateTicks()
  • 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.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:

    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