// code from goatstore // api: https://store.agi.bd module.exports.config = { name: "network", version: "1.0.0", author: "Zihad", countDown: 5, role: 0, shortDescription: "Server network information", longDescription: "Shows server network status, IP, traffic and latency.", category: "system", guide: { en: "{pn}" } }; const os = require("os"); const https = require("https"); function getNetworkInfo() { const interfaces = os.networkInterfaces(); let ipv4 = "Not Found"; let interfaceName = "Unknown"; for (const name of Object.keys(interfaces)) { for (const info of interfaces[name] || []) { if ( info.family === "IPv4" && !info.internal ) { ipv4 = info.address; interfaceName = name; break; } } if (ipv4 !== "Not Found") break; } return { ipv4, interfaceName }; } function getTraffic() { return new Promise((resolve) => { const fs = require("fs"); if (process.platform !== "linux") { return resolve({ rx: 0, tx: 0 }); } fs.readFile("/proc/net/dev", "utf8", (err, data) => { if (err) { return resolve({ rx: 0, tx: 0 }); } let rx = 0; let tx = 0; const lines = data.split("\n"); for (const line of lines) { if (!line.includes(":")) continue; const parts = line .split(":")[1] .trim() .split(/\s+/); if (parts.length >= 9) { rx += Number(parts[0]) || 0; tx += Number(parts[8]) || 0; } } resolve({ rx, tx }); }); }); } function formatBytes(bytes) { if (!bytes || bytes < 0) return "0 B"; const units = [ "B", "KB", "MB", "GB", "TB" ]; let i = 0; let value = bytes; while ( value >= 1024 && i < units.length - 1 ) { value /= 1024; i++; } return `${value.toFixed(2)} ${units[i]}`; } function checkInternet() { return new Promise((resolve) => { const start = Date.now(); const req = https.get( "https://www.google.com/generate_204", { timeout: 7000 }, (res) => { const latency = Date.now() - start; res.resume(); resolve({ online: true, latency }); } ); req.on("error", () => { resolve({ online: false, latency: null }); }); req.on("timeout", () => { req.destroy(); resolve({ online: false, latency: null }); }); }); } function getUptime() { const total = Math.floor(process.uptime()); const days = Math.floor(total / 86400); const hours = Math.floor( (total % 86400) / 3600 ); const minutes = Math.floor( (total % 3600) / 60 ); const seconds = total % 60; return `${days}d ${hours}h ${minutes}m ${seconds}s`; } module.exports.onStart = async function ({ api, event }) { try { const network = getNetworkInfo(); const traffic = await getTraffic(); const internet = await checkInternet(); const hostname = os.hostname(); const status = internet.online ? "๐ŸŸข ONLINE" : "๐Ÿ”ด OFFLINE"; const latency = internet.latency !== null ? `${internet.latency} ms` : "N/A"; const message = `โ•ญโ”โ”ใ€” ๐Ÿ“ก NETWORK STATUS ใ€•โ”โ”โ•ฎ โ”ƒ โ”ƒ ${status} โ”ƒ โ”ƒ ๐ŸŒ Interface : ${network.interfaceName} โ”ƒ ๐Ÿ“ IPv4 : ${network.ipv4} โ”ƒ ๐Ÿ–ฅ๏ธ Host : ${hostname} โ”ƒ โ”ƒ ๐Ÿ“ฅ Download : ${formatBytes(traffic.rx)} โ”ƒ ๐Ÿ“ค Upload : ${formatBytes(traffic.tx)} โ”ƒ ๐Ÿ“ถ Latency : ${latency} โ”ƒ โ”ƒ โฑ๏ธ Bot Uptime โ”ƒ ${getUptime()} โ”ƒ โ”ƒ ๐Ÿ”„ Network : ${internet.online ? "Connected" : "Disconnected"} โ”ƒ โ”ƒ ๐Ÿ‘ค Author : Zihad โ”ƒ โ•ฐโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•ฏ`; return api.sendMessage( message, event.threadID ); } catch (error) { return api.sendMessage( `โ•ญโ”โ”ใ€” โŒ NETWORK ERROR ใ€•โ”โ”โ•ฎ โ”ƒ โ”ƒ Network information โ”ƒ เฆชเฆพเฆ“เงŸเฆพ เฆฏเฆพเฆšเงเฆ›เง‡ เฆจเฆพเฅค โ”ƒ โ”ƒ ๐Ÿ”„ เฆ†เฆฌเฆพเฆฐ เฆšเง‡เฆทเงเฆŸเฆพ เฆ•เฆฐเงเฆจเฅค โ”ƒ โ•ฐโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•ฏ`, event.threadID ); } };