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

74
src/config.js Normal file
View File

@@ -0,0 +1,74 @@
/**
* config.js - Configurações centralizadas do bot
*
* Carrega variáveis de ambiente e define valores padrão
* para todas as configurações necessárias.
*/
require('dotenv').config();
const config = {
// ── Discord ──────────────────────────────────────────
discord: {
token: process.env.DISCORD_TOKEN,
channelId: process.env.DISCORD_CHANNEL_ID,
},
// ── URLs de monitoramento ────────────────────────────
urls: {
amazon: process.env.AMAZON_URL || 'https://www.amazon.com.br/deals',
aliexpress: process.env.ALIEXPRESS_URL || 'https://pt.aliexpress.com/campaign/wow/gcp-plus/ae/right/shareon',
shopee: process.env.SHOPEE_URL || 'https://shopee.com.br/flash_sale',
mercadolivre: process.env.MERCADOLIVRE_URL || 'https://www.mercadolivre.com.br/ofertas',
},
// ── Scraping ─────────────────────────────────────────
scraping: {
intervalMinutes: parseInt(process.env.SCRAPE_INTERVAL_MINUTES, 10) || 30,
maxOffersPerSite: parseInt(process.env.MAX_OFFERS_PER_SITE, 10) || 5,
pageTimeout: parseInt(process.env.PAGE_TIMEOUT, 10) || 30000,
headless: process.env.PUPPETEER_HEADLESS !== 'false', // padrão: true
},
// ── Afiliados ────────────────────────────────────────
affiliate: {
amazonTag: process.env.AMAZON_AFFILIATE_TAG || '',
},
// ── Cores dos embeds por loja ────────────────────────
colors: {
amazon: 0xFF9900, // Laranja Amazon
aliexpress: 0xE43A2B, // Vermelho AliExpress
shopee: 0xEE4D2D, // Laranja Shopee
mercadolivre: 0xFFE600, // Amarelo Mercado Livre
},
// ── Emojis por loja ─────────────────────────────────
emojis: {
amazon: '🛒',
aliexpress: '🌐',
shopee: '🛍️',
mercadolivre: '🤝',
},
};
// Validação das configurações obrigatórias
function validateConfig() {
const errors = [];
if (!config.discord.token) {
errors.push('DISCORD_TOKEN não configurado no .env');
}
if (!config.discord.channelId) {
errors.push('DISCORD_CHANNEL_ID não configurado no .env');
}
if (errors.length > 0) {
console.error('❌ Erros de configuração:');
errors.forEach((err) => console.error(`${err}`));
console.error('\n📄 Copie o arquivo .env.example para .env e configure as variáveis.');
process.exit(1);
}
}
module.exports = { config, validateConfig };