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
- Handler não configurado - Nenhuma função processando mensagens
- Filtro muito restritivo - Mensagens sendo ignoradas
- Processo travado - Event loop bloqueado
- Erro silencioso - Exceção não tratada
- 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
- Mensagens Não Enviadas — Falha no envio de respostas
- Gateway Não Inicia — Serviço não está rodando
- Erro Timeout — Requisição demorou demais
- Telegram Não Responde — Específico para Telegram
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?