# 🛒 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](https://discord.com/developers/applications)) - **Chromium** (instalado automaticamente pelo Puppeteer) ## 🚀 Instalação ### 1. Clone ou baixe o projeto ```bash cd "Nova pasta" ``` ### 2. Instale as dependências ```bash npm install ``` ### 3. Configure o arquivo `.env` ```bash # 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 ```bash 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](https://discord.com/developers/applications) 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