Bot OpenClaw Não Responde Mensagens

Bot OpenClaw Não Responde Mensagens

O bot está online mas ignora suas mensagens? Isso é frustrante, mas geralmente fácil de resolver. Vamos diagnosticar o problema.

Possíveis Causas

  1. Handler não configurado - Nenhuma função processando mensagens
  2. Filtro muito restritivo - Mensagens sendo ignoradas
  3. Processo travado - Event loop bloqueado
  4. Erro silencioso - Exceção não tratada
  5. Mensagens de grupos - Bot não responde em grupos

Soluções

1. Verificar Se Mensagens Chegam

# Ver logs de mensagens recebidas
clawdbot logs | grep -i "message\|received"

# Habilitar debug
DEBUG=* clawdbot gateway start

2. Verificar Handler de Mensagens

// Certifique-se que o handler está registrado
client.on('message', async (message) => {
  console.log('Mensagem recebida:', message.text);
  
  // Seu código aqui
  await message.reply('Recebi sua mensagem!');
});

// Verificar se o evento está correto
// Pode ser 'message', 'message_create', etc.

3. Verificar Filtros

// Verificar se não está filtrando demais
client.on('message', async (message) => {
  // Log para debug
  console.log({
    from: message.from,
    isGroup: message.isGroup,
    isMe: message.fromMe,
    text: message.text
  });
  
  // Filtros comuns que podem bloquear
  if (message.fromMe) return;  // Ignora próprias mensagens
  if (message.isGroup) return;  // Ignora grupos
  
  // Processar
});

4. Verificar Se Não Está Travado

# Ver se o processo está responsivo
kill -0 $(pgrep -f clawdbot)

# Ver CPU do processo
top -p $(pgrep -f clawdbot)

# Se travado, reiniciar
clawdbot gateway restart

5. Adicionar Tratamento de Erros

client.on('message', async (message) => {
  try {
    await processMessage(message);
  } catch (error) {
    console.error('Erro ao processar mensagem:', error);
    // Não deixar o erro silencioso
  }
});

// Handler de erros global
process.on('uncaughtException', (error) => {
  console.error('Exceção não tratada:', error);
});

process.on('unhandledRejection', (reason, promise) => {
  console.error('Promise rejeitada:', reason);
});

6. Verificar Permissões em Grupos

// Para grupos, verificar se é admin ou tem permissão
client.on('message', async (message) => {
  if (message.isGroup) {
    const chat = await message.getChat();
    const me = await chat.participants.find(p => p.isMe);
    
    if (!me.isAdmin && !chat.canSendMessages) {
      console.log('Sem permissão para enviar neste grupo');
      return;
    }
  }
  
  // Processar
});

7. Testar Resposta Manual

# Enviar mensagem de teste
clawdbot send --to "5511999999999" --text "Teste de envio"

# Se funcionar, o problema é no handler de recebimento

Diagnóstico

// Adicionar logs em cada etapa
const DEBUG = true;

client.on('message', async (message) => {
  if (DEBUG) console.log('1. Mensagem recebida');
  
  if (message.fromMe) {
    if (DEBUG) console.log('2. Ignorando: própria mensagem');
    return;
  }
  
  if (DEBUG) console.log('3. Processando mensagem');
  
  try {
    const response = await generateResponse(message);
    if (DEBUG) console.log('4. Resposta gerada:', response);
    
    await message.reply(response);
    if (DEBUG) console.log('5. Resposta enviada');
  } catch (error) {
    console.error('ERRO:', error);
  }
});

Problemas Relacionados

Prevenção

  • ✅ Sempre adicione logs nos handlers
  • ✅ Trate todas as exceções com try/catch
  • ✅ Configure timeouts para operações longas
  • ✅ Monitore se mensagens estão chegando nos logs

Checklist Rápido

  • Gateway está rodando? (clawdbot gateway status)
  • Logs mostram mensagens chegando?
  • Não há filtros bloqueando?
  • Erros aparecem no log?
  • Teste de envio manual funciona?