You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bot Discord modular multi-tenant com capacidades de IA, loja automatizada, whitelist Roblox e sistema de organizações.
Visao Geral
Nero e uma plataforma SaaS de bot Discord pronta para producao, projetada para servir multiplas comunidades simultaneamente com isolamento completo de dados. Combina IA generativa (Google Gemini), moderacao automatica, loja com pagamentos Pix, whitelist Roblox, sistema de organizacoes/clas e monitoramento completo.
Destaques
Multi-tenant com isolamento real — Schema-per-tenant no PostgreSQL + namespacing no Redis
IA com Gemini 2.0 — Chat contextual, analise de imagens, moderacao inteligente, OCR
Docker NAO e necessario! O bot usa cache em memoria e suporta banco de dados na nuvem.
Instalacao (sem Docker)
# 1. Instale as dependencias
npm install
# 2. Configure as variaveis de ambiente
cp .env.example .env
# Edite .env com suas credenciais (veja abaixo)# 3. Execute as migrations
npm run db:migrate
# 4. Inicie o bot
npm run dev
Instalacao rapida (scripts automaticos)
# Windows
install.bat
# Linux/macOS
chmod +x install.sh && ./install.sh
# Desenvolvimento
npm run dev # Hot-reload com tsx watch
npm run build # Compilar TypeScript
npm start # Iniciar em producao# Qualidade
npm run lint # ESLint
npm run format # Prettier
npm test# Jest
npm run test:watch # Testes em modo watch# Infraestrutura
npm run db:migrate # Executar migrations
npm run verify # Verificar setup
npm run docs # Gerar documentacao TypeDoc
npm run docs:serve # Servir documentacao na porta 8080
Configuracao
Todas as configuracoes sao via variaveis de ambiente. Veja .env.example para referencia completa.
Essenciais
Variavel
Descricao
Obrigatorio
DISCORD_TOKEN
Token do bot Discord
Sim
DISCORD_PREFIX
Prefixo dos comandos (padrao: !)
Nao
GEMINI_API_KEY
Chave API do Google Gemini
Sim
JWT_SECRET
Secret para tokens JWT
Sim
Banco de Dados
Variavel
Descricao
Obrigatorio
DATABASE_URL
Connection string PostgreSQL (cloud)
Sim*
DATABASE_SSL
Habilitar SSL (true para cloud)
Nao
DATABASE_HOST
Host do PostgreSQL (local)
Sim*
DATABASE_PORT
Porta do PostgreSQL (padrao: 5432)
Nao
DATABASE_NAME
Nome do banco
Nao
DATABASE_USER
Usuario do banco
Nao
DATABASE_PASSWORD
Senha do banco
Nao
*Use DATABASE_URL OU DATABASE_HOST/PORT/NAME/USER/PASSWORD — nao ambos.
Cache
Variavel
Descricao
Obrigatorio
REDIS_ENABLED
Habilitar Redis (false = usa memoria)
Nao
REDIS_HOST
Host do Redis
Nao
REDIS_PORT
Porta do Redis
Nao
REDIS_PASSWORD
Senha do Redis
Nao
Loja Automatizada
Variavel
Descricao
Obrigatorio
STORE_ENABLED
Habilitar modulo da loja (padrao: true)
Nao
MERCADOPAGO_ACCESS_TOKEN
Token de acesso Mercado Pago
Para pagamentos
NEXT_PUBLIC_MERCADOPAGO_PUBLIC_KEY
Chave publica Mercado Pago
Para pagamentos
WEBHOOK_BASE_URL
URL publica para webhooks de pagamento
Para pagamentos
WEBHOOK_PORT
Porta do servidor de webhooks (padrao: 3001)
Nao
PAYMENT_EXPIRATION_MINUTES
Expiracao do Pix em minutos (padrao: 30)
Nao
AUTO_CLOSE_TICKET_MINUTES
Fechar ticket apos pagamento (padrao: 5)
Nao
MAX_PENDING_SALES_PER_USER
Maximo de compras pendentes por usuario (padrao: 3)
Nao
AI_SALES_ASSISTANT
IA responde compradores no ticket (padrao: true)
Nao
SALE_TICKET_CATEGORY
Nome da categoria de tickets de venda
Nao
CURRENCY_SYMBOL
Simbolo da moeda (padrao: R$)
Nao
Whitelist Roblox
Variavel
Descricao
Obrigatorio
ROBLOX_ENABLED
Habilitar modulo Roblox (padrao: true)
Nao
ROBLOX_VERIFIED_ROLE_ID
ID do cargo de verificado
Para whitelist
ROBLOX_UNVERIFIED_ROLE_ID
ID do cargo a remover apos verificacao
Nao
ROBLOX_VERIFICATION_CHANNEL_ID
Canal do painel de verificacao
Nao
ROBLOX_LOG_CHANNEL_ID
Canal para logs de verificacao
Nao
ROBLOX_MIN_ACCOUNT_AGE_DAYS
Idade minima da conta Roblox (padrao: 30)
Nao
ROBLOX_MIN_DISCORD_AGE_DAYS
Idade minima da conta Discord (padrao: 7)
Nao
ROBLOX_MAX_ACCOUNTS_PER_DISCORD
Max contas Roblox por Discord (padrao: 1)
Nao
ROBLOX_MAX_DISCORD_PER_ROBLOX
Max contas Discord por Roblox (padrao: 1)
Nao
ROBLOX_ALLOW_CROSS_SERVER
Permitir verificacao cross-server
Nao
ROBLOX_BLOCK_BANNED
Bloquear contas Roblox banidas
Nao
Aplicacao e Monitoramento
Variavel
Descricao
Obrigatorio
NODE_ENV
Ambiente (development/production)
Nao
PORT
Porta da aplicacao (padrao: 3000)
Nao
LOG_LEVEL
Nivel de log (padrao: info)
Nao
ELASTICSEARCH_NODE
URL do Elasticsearch (requer Docker)
Nao
Testes
# Todos os testes
npm test# Com cobertura
npm test -- --coverage
# Testes especificos
npm test -- path/to/test
# Modo watch
npm run test:watch
Docker Compose (opcional)
Se voce preferir rodar tudo localmente com Docker, o docker-compose.yml esta disponivel:
docker-compose up -d
Inclui: PostgreSQL 16, Redis 7, Prometheus, Grafana, Elasticsearch e exporters.