// code from goatstore // api: https://store.agi.bd const os = require('os'); const { bold } = require("fontstyles"); module.exports = { config: { name: 'uptime2', aliases: ['upt2', 'up2'], version: '1.6', author: 'Siam Ahmed Saan', /*create by siyuu full fixed and modified by Saan*/ countDown: 15, role: 0, shortDescription: 'Display bot uptime', longDescription: { id: 'Display bot uptime and system stats with media ban check', en: 'Display bot uptime and system stats with media ban check' }, category: 'system', guide: { id: '{pn}: Display bot uptime and system stats', en: '{pn}: Display bot uptime and system stats' } }, onStart: async function ({ message, event, usersData, threadsData, api }) { if (this.config.author !== 'Siam Ahmed Saan') { return message.reply("⚠ Unauthorized author change detected. Command execution stopped."); } const startTime = Date.now(); try { const users = await usersData.getAll(); const groups = await threadsData.getAll(); const uptime = process.uptime(); const bangladeshTime = new Date().toLocaleString('en-US', { timeZone: 'Asia/Dhaka', weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: true }); const days = Math.floor(uptime / (3600 * 24)); const hours = Math.floor((uptime % (3600 * 24)) / 3600); const minutes = Math.floor((uptime % 3600) / 60); const seconds = Math.floor(uptime % 60); const totalMemory = os.totalmem(); const freeMemory = os.freemem(); const usedMemory = totalMemory - freeMemory; const memPercentage = (usedMemory / totalMemory * 100).toFixed(1); const barLength = 10; const filledBar = Math.round((memPercentage / 100) * barLength); const ramBar = "ā–ˆ".repeat(filledBar) + "ā–’".repeat(barLength - filledBar); const usedMemoryGB = (usedMemory / 1024 / 1024 / 1024).toFixed(2); const totalMemoryGB = (totalMemory / 1024 / 1024 / 1024).toFixed(2); const cpuUsage = os.loadavg(); const cpuModel = os.cpus()[0].model.split('@')[0].trim(); const nodeVersion = process.version; const botPing = Date.now() - startTime; const mediaBan = await threadsData.get(event.threadID, 'mediaBan') || false; const mediaStatus = mediaBan ? '🚫 Restricted' : 'āœ… Active'; const editSegments = [ `ā•­ā”€ā’ ${bold("SYSTEM UPTIME")}\n│ šŸ•’ ${days}d ${hours}h ${minutes}m ${seconds}s\nā•°ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā’`, `ā•­ā”€ā’ ${bold("RESOURCE USAGE")}\n│ šŸ“Ÿ RAM: [${ramBar}] ${memPercentage}%\n│ šŸ“„ ${usedMemoryGB}GB / ${totalMemoryGB}GB\n│ šŸ›”ļø CPU: ${cpuModel}\n│ ⚔ Load: ${cpuUsage[0].toFixed(2)}%\nā•°ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā’`, `ā•­ā”€ā’ ${bold("BOT STATUS")}\n│ šŸš€ Ping: ${botPing}ms\n│ šŸ“¦ Node: ${nodeVersion}\n│ šŸ‘„ Users: ${users.length}\n│ šŸ˜ļø Groups: ${groups.length}\nā•°ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā’`, `ā•­ā”€ā’ ${bold("SECURITY & TIME")}\n│ šŸ–¼ļø Media: ${mediaStatus}\n│ šŸ“… ${bangladeshTime}\nā•°ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā’`, `✨ ${bold("Status:")} All systems are operational.\nCreated by: ${this.config.author}` ]; const loadingFrames = [ '怎 ā–’ā–’ā–’ā–’ā–’ā–’ā–’ā–’ā–’ā–’ 怏 0%', '怎 ā–ˆā–ˆā–’ā–’ā–’ā–’ā–’ā–’ā–’ā–’ 怏 25%', '怎 ā–ˆā–ˆā–ˆā–ˆā–ˆā–’ā–’ā–’ā–’ā–’ 怏 50%', '怎 ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–’ā–’ā–’ 怏 75%', '怎 ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆ 怏 100%' ]; let sentMessage = await message.reply("šŸ”„ Fetching System Data..."); const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); for (let i = 0; i < editSegments.length; i++) { await sleep(700); const currentContent = `āš™ļø ${bold("SYSTEM DASHBOARD")}\n${loadingFrames[i]}\n\n${editSegments.slice(0, i + 1).join('\n')}`; await api.editMessage(currentContent, sentMessage.messageID); } } catch (err) { console.error(err); return message.reply("āŒ Error: System data fetch failed."); } } };