From d9a2c07aeca82368678494851980bee12e5e2ac6 Mon Sep 17 00:00:00 2001 From: alwaysmesmerizingyou Date: Fri, 14 Aug 2026 12:57:49 -0700 Subject: [PATCH] Sync Status --- .env.example | 2 + .gitignore | 2 + server.js | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 server.js diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..70058e6 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +CHANNEL_ID= +DISCORD_TOKEN= \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..97aca2e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +node_modules \ No newline at end of file diff --git a/server.js b/server.js new file mode 100644 index 0000000..6e433c0 --- /dev/null +++ b/server.js @@ -0,0 +1,129 @@ +require("dotenv").config(); + +const { + Client, + GatewayIntentBits, + EmbedBuilder +} = require("discord.js"); + +const axios = require("axios"); + +const client = new Client({ + intents: [ + GatewayIntentBits.Guilds + ] +}); + +const services = [ + { + name: "Website", + url: "https://vyla.cc" + }, + { + name: "Player", + url: "https://player.vyla.cc" + }, + { + name: "API", + url: "https://api.vyla.cc" + } +]; + +let statusMessage; + +async function checkService(service) { + + const start = Date.now(); + + try { + const response = await axios.get(service.url, { + timeout: 10000 + }); + + return { + online: true, + latency: Date.now() - start, + status: response.status + }; + + } catch { + return { + online: false, + latency: null, + status: null + }; + } +} + +async function updateStatus() { + + const channel = await client.channels.fetch( + process.env.CHANNEL_ID + ); + + let description = ""; + let allOnline = true; + + for (const service of services) { + + const result = await checkService(service); + + if (!result.online) + allOnline = false; + + description += + ` +**[${service.name}](${service.url})** +Status: ${result.online ? "🟢 Online" : "🔴 Offline"} +Response Time: ${result.latency ?? "N/A"} ms + +`; + } + + const embed = new EmbedBuilder() + .setTitle( + allOnline + ? "All Systems Operational" + : "System Issues Detected" + ) + .setDescription(description) + .setColor( + allOnline + ? 15987699 + : 16711680 + ) + .setFooter({ + text: `Last updated: ${new Date().toLocaleString()}` + }); + + if (!statusMessage) { + + statusMessage = await channel.send({ + embeds: [embed] + }); + + } else { + await statusMessage.edit({ + embeds: [embed] + }); + } +} + + +client.once("ready", async () => { + console.log( + `${client.user.tag} is online` + ); + + await updateStatus(); + + setInterval( + updateStatus, + 60000 + ); + +}); + +client.login( + process.env.DISCORD_TOKEN +); \ No newline at end of file