139 lines
4.8 KiB
Markdown
139 lines
4.8 KiB
Markdown
# 🛒 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
|