From 154ab7554f565b004e808aa5caf957cfeadae884 Mon Sep 17 00:00:00 2001 From: Wizzard Date: Wed, 5 Feb 2025 09:56:39 -0500 Subject: [PATCH] Update index.js --- index.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 9ec83b6..9ee4355 100644 --- a/index.js +++ b/index.js @@ -4,10 +4,11 @@ const randomColor = require('randomcolor'); const config = require('./config.json'); const client = new Client({ intents: [GatewayIntentBits.Guilds] }); +let lastOnlineTime = Date.now(); +let hasNotifiedOffline = false; client.once('ready', async () => { console.log(`Logged in as ${client.user.tag}!`); - const channel = await client.channels.fetch(config.channelId); if (!channel) { console.error("Channel not found"); @@ -32,6 +33,9 @@ client.once('ready', async () => { const response = await axios.get(config.apiUrl, { timeout: 10000 }); const { game, players, max_players, version, map, name } = response.data; + lastOnlineTime = Date.now(); + hasNotifiedOffline = false; + const embed = new EmbedBuilder() .setColor(randomColor({ luminosity: 'bright', hue: 'rainbow' })) .setTitle('Server Status') @@ -44,19 +48,27 @@ client.once('ready', async () => { { name: 'Players', value: `${players}/${max_players}`, inline: true } ) .setFooter({ text: `Last updated: ${new Date().toLocaleTimeString()}` }); - await message.edit({ embeds: [embed] }); + } catch (error) { console.error("Failed to fetch server data:", error); + const timeSinceOnline = Date.now() - lastOnlineTime; + const minutesOffline = Math.floor(timeSinceOnline / (1000 * 60)); + const embed = new EmbedBuilder() - .setColor(randomColor({ luminosity: 'bright', hue: 'rainbow' })) + .setColor('#FF0000') .setTitle('Server Status') - .setDescription("Failed to fetch server data.") + .setDescription(`Server is offline!\nTime since last online: ${minutesOffline} minutes`) .setFooter({ text: `Last updated: ${new Date().toLocaleTimeString()}` }); await message.edit({ embeds: [embed] }); + + if (minutesOffline >= 20 && !hasNotifiedOffline) { + await channel.send({ content: '@here Server has been offline for 20 minutes!' }); + hasNotifiedOffline = true; + } } }, config.updateInterval); }); -client.login(config.token); +client.login(config.token); \ No newline at end of file