initial-commit

This commit is contained in:
axel
2026-04-06 20:49:50 -03:00
commit 9ddee2bb18
16 changed files with 3514 additions and 0 deletions

138
README.md Normal file
View File

@@ -0,0 +1,138 @@
# 🛒 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