File size: 1,657 Bytes
ee826ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Loader script - runs BEFORE index.js
// v5.8.4 - Resilient startup with keep-alive

process.on('unhandledRejection', (reason, promise) => {
  console.warn('[Global] UnhandledRejection:', reason?.message ?? String(reason).substring(0, 100));
});

process.on('uncaughtException', (err) => {
  console.error('[Global] UncaughtException:', err.message?.substring(0, 100));
  if (err.message?.includes('ENOMEM') || err.message?.includes('heap')) {
    process.exit(1);
  }
});

console.log('[Loader] Global error handlers installed');
console.log('[Loader] Node version:', process.version);
console.log('[Loader] Platform:', process.platform, process.arch);

// Test network connectivity
const testUrls = [
  'https://discordapp.com/api/v10/gateway',
  'https://api.groq.com/openai/v1/models',
  'https://router.huggingface.co/v1/models',
];

for (const url of testUrls) {
  try {
    const res = await fetch(url, { signal: AbortSignal.timeout(5000) });
    console.log(`[Loader] ${url}${res.status}`);
  } catch (e) {
    console.warn(`[Loader] ${url} → FAILED: ${e.message?.substring(0, 60)}`);
  }
}

// Keep the process alive even if the bot fails
setInterval(() => {
  const mem = process.memoryUsage();
  console.log(`[KeepAlive] RSS: ${(mem.rss/1024/1024).toFixed(1)}MB | Heap: ${(mem.heapUsed/1024/1024).toFixed(1)}MB | Uptime: ${Math.floor(process.uptime())}s`);
}, 60000);

// Load the bot
try {
  await import('./index.js');
  console.log('[Loader] Bot loaded successfully');
} catch (err) {
  console.error('[Loader] Bot load error:', err.message);
  console.log('[Loader] Bot failed to load, but process stays alive for health checks');
}