Zyra System é um motor de bot para WhatsApp de alta performance, construído em Node.js utilizando a biblioteca Baileys. Ele foi projetado para ser escalável, resiliente e multi-instância, com suporte nativo a persistência em MySQL e cache em Redis.
- Multi-instância Nativa: Utilize o mesmo banco de dados para centenas de conexões isoladas via
connection_id. - Persistência Híbrida: Sistema de autenticação inteligente que alterna entre MySQL, Redis e Disco (FileSystem) para máxima resiliência.
- Identidade Unificada: Mapeamento inteligente de usuários (PN, LID, JID, Username) para um único ID interno.
- Store de Alta Performance: Cache de contatos, chats e mensagens otimizado para baixa latência.
- Arquitetura Modular de Comandos: Comandos desacoplados do núcleo com contexto próprio e funções de core prontas (consulte README-COMMANDS.md).
- Observabilidade Total: Logs estruturados e rastreamento de eventos para auditoria e troubleshooting.
- Node.js: v20.x (LTS) ou superior.
- Gerenciador de Pacotes:
npmouyarn. - Banco de Dados: MySQL 8.0+ (Obrigatório para persistência de longo prazo).
- Cache: Redis 6.0+ (Altamente recomendado para performance).
O Zyra utiliza recursos modernos do MySQL 8 (como tipos JSON e índices Full-text).
No Ubuntu/Debian:
sudo apt update
sudo apt install mysql-server -y
# Acesse o MySQL e crie o banco
sudo mysql -u root
# CREATE DATABASE zyra CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;O Redis é utilizado para "cache quente" das sessões de autenticação e estados temporários do socket.
No Ubuntu/Debian:
sudo apt update
sudo apt install redis-server -y
sudo systemctl enable redis-server-
Clonar e Instalar:
git clone <repo-url> cd zyra npm install
-
Variáveis de Ambiente: Crie um arquivo
.envbaseado no.env.example:cp .env.example .env
-
Inicializar o Banco de Dados: O Zyra possui um script automático que cria todas as tabelas necessárias:
npm run db:init
npm run devnpm run build
npm run start:prodnpm run pm2:startComandos úteis:
npm run pm2:restart: recompila e reinicia o processozyra.npm run pm2:logs: acompanha os logs do processo.npm run pm2:stop: para a instância sem removê-la.npm run pm2:delete: remove a instância do PM2.npm run pm2:save: salva a lista atual de processos para restauração automática.npm run pm2:startup: gera o comando de inicialização automática do PM2 no boot do servidor.
Fluxo recomendado para manter o bot subindo com o servidor:
npm run pm2:start
npm run pm2:save
npm run pm2:startupO sistema busca as credenciais na seguinte ordem de prioridade:
- Redis: Acesso ultra-rápido para sessões ativas.
- MySQL: Persistência durável e compartilhada.
- Disco: Fallback local em caso de falha de rede.
A política de sincronização de histórico (history-sync.ts) é otimizada para liberar o sync completo apenas em novos logins, evitando o consumo excessivo de memória e processamento em reconexões rápidas.
O projeto inclui scripts utilitários para operações avançadas:
npm run db:verify: Verifica a integridade das tabelas e conta registros por conexão.npm run db:delete-session: Limpa todos os dados de uma sessão específica (MySQL e Redis).npm run db:backfill: Processa mensagens antigas ou pendentes no banco.npm run db:nulls: Gera relatórios de campos inconsistentes para limpeza.
- @kaikybrofc — mantenedor do projeto.
- @kobie3717 — integração do
baileys-antiban
Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.
Copyright (c) 2026 kaikybrofc