Files
Promoloko/README.md
2026-04-06 20:49:50 -03:00

4.8 KiB

🛒 Bot de Ofertas - E-commerce para Discord

Bot automatizado que monitora os principais e-commerces brasileiros e envia ofertas diretamente para seu servidor Discord.

🏪 Lojas Monitoradas

Loja Página Monitorada
🛒 Amazon Brasil Ofertas do Dia
🌐 AliExpress Super Ofertas / Flash Deals
🛍️ Shopee Flash Sale / Ofertas Relâmpago
🤝 Mercado Livre Ofertas do Dia

Funcionalidades

  • Monitoramento automático a cada 30 minutos (configurável)
  • Embeds ricos com imagem, preço, desconto e link direto
  • Deduplicação inteligente — nunca envia a mesma oferta duas vezes no dia
  • Reset diário automático do cache de ofertas
  • Detecção de cupons quando disponíveis na página
  • Frete grátis identificado automaticamente (Mercado Livre)
  • Suporte a afiliados Amazon (tag configurável)
  • Retry automático em caso de falha no scraping
  • Logs detalhados de cada ciclo de verificação

📋 Pré-requisitos

  • Node.js v18 ou superior
  • Token de Bot Discord (criar aqui)
  • Chromium (instalado automaticamente pelo Puppeteer)

🚀 Instalação

1. Clone ou baixe o projeto

cd "Nova pasta"

2. Instale as dependências

npm install

3. Configure o arquivo .env

# Copie o template
cp .env.example .env

# Edite com suas configurações
notepad .env

Preencha obrigatoriamente:

  • DISCORD_TOKEN — Token do seu bot Discord
  • DISCORD_CHANNEL_ID — ID do canal onde as ofertas serão enviadas

4. Inicie o bot

npm start

⚙️ Configurações

Todas as configurações ficam no arquivo .env:

Variável Descrição Padrão
DISCORD_TOKEN Token do bot Discord obrigatório
DISCORD_CHANNEL_ID ID do canal de ofertas obrigatório
SCRAPE_INTERVAL_MINUTES Intervalo entre verificações 30
MAX_OFFERS_PER_SITE Máx. ofertas por site por ciclo 5
AMAZON_AFFILIATE_TAG Tag de afiliado Amazon vazio
PUPPETEER_HEADLESS Navegador invisível true
PAGE_TIMEOUT Timeout de carregamento (ms) 30000

📁 Estrutura do Projeto

├── .env.example          # Template de configurações
├── .gitignore            # Arquivos ignorados pelo Git
├── package.json          # Dependências e scripts
├── README.md             # Esta documentação
├── data/                 # Cache de deduplicação (auto-criado)
│   └── sent_offers.json  # Registro de ofertas enviadas
└── src/
    ├── index.js          # Ponto de entrada
    ├── config.js         # Configurações centralizadas
    ├── bot.js            # Lógica principal do bot
    ├── scrapers/         # Módulos de scraping por loja
    │   ├── index.js      # Agregador de scrapers
    │   ├── amazon.js     # Scraper Amazon Brasil
    │   ├── aliexpress.js # Scraper AliExpress
    │   ├── shopee.js     # Scraper Shopee
    │   └── mercadolivre.js # Scraper Mercado Livre
    └── utils/            # Utilitários
        ├── browser.js    # Gerenciador Puppeteer
        ├── dedup.js      # Sistema de deduplicação
        └── embed.js      # Construtor de embeds Discord

🤖 Criando o Bot no Discord

  1. Acesse Discord Developer Portal
  2. Clique em "New Application" e dê um nome
  3. Vá em "Bot" no menu lateral
  4. Clique em "Add Bot"
  5. Copie o Token e cole no .env
  6. Em "Privileged Gateway Intents", ative:
    • Message Content Intent
  7. Vá em "OAuth2" > "URL Generator"
    • Selecione scope: bot
    • Selecione permissões: Send Messages, Embed Links, Attach Files
  8. Copie a URL gerada e abra no navegador para adicionar o bot ao seu servidor

⚠️ Observações Importantes

  • Sites podem mudar seus layouts — os seletores CSS podem precisar de atualização periódica.
  • Rate limiting — o bot respeita limites de taxa do Discord com delays entre envios.
  • Uso de recursos — Puppeteer consome memória; recomenda-se ao menos 2GB RAM.
  • Termos de uso — Verifique os termos de cada site antes de usar em produção.

🔧 Troubleshooting

Problema Solução
Bot não conecta Verifique se o DISCORD_TOKEN está correto
Canal não encontrado Verifique o DISCORD_CHANNEL_ID e se o bot tem acesso
Nenhuma oferta Sites podem ter mudado layout; verifique logs
Erro de timeout Aumente PAGE_TIMEOUT no .env
Alto uso de memória Reduza MAX_OFFERS_PER_SITE ou aumente intervalo

📄 Licença

MIT