// bot/server_status.js var statusMessage; var startTimestamp = /* @__PURE__ */ new Date(); global.getServerStatus = async function(why) { var embed = new EmbedBuilder().setColor(65280).setTimestamp(); var joinURL = GetConvar("web_baseUrl", ""); var buttonRow = false; if (joinURL != "" && joinURL.indexOf("cfx.re" != -1) && joinURL.match(/^[^A-z0-9]/) == null) { embed.setURL(`https://${joinURL}`); buttonRow = new ActionRowBuilder(); var button = new ButtonBuilder().setURL(`https://${joinURL}`).setLabel("Join Server").setStyle(ButtonStyle.Link); buttonRow.addComponents([button]); } else { joinURL = ""; } var serverName = GetConvar("sv_projectName", GetConvar("sv_hostname", "default FXServer")); if (serverName.length > 255) { serverName = serverName.substring(0, 255); } serverName = serverName.replace(/\^[0-9]/g, ""); embed.addFields([{ name: "Server Name", value: `\`\`\`${serverName}\`\`\`` }]); var reports = await exports[EasyAdmin].getAllReports(); var activeReports = 0; var claimedReports = 0; for (let report of Object.values(reports).entries()) { activeReports += 1; if (report.claimed) { claimedReports += 1; } } embed.addFields([ { name: "Players Online", value: `\`\`\`${getPlayers().length}/${GetConvar("sv_maxClients", "")}\`\`\``, inline: true }, { name: "Admins Online", value: `\`\`\`${Object.values(exports[EasyAdmin].GetOnlineAdmins()).length}\`\`\``, inline: true }, { name: "Reports", value: `\`\`\`${activeReports} (${claimedReports} claimed)\`\`\``, inline: true }, { name: "Active Vehicles", value: `\`\`\`${GetAllVehicles().length}\`\`\``, inline: true }, { name: "Active Peds", value: `\`\`\`${GetAllPeds().length}\`\`\``, inline: true }, { name: "Active Objects", value: `\`\`\`${GetAllObjects().length}\`\`\``, inline: true } ]); if (joinURL != "") { try { let serverId = joinURL.substring(joinURL.lastIndexOf("-") + 1, joinURL.indexOf(".users.cfx.re")); let response = await exports[EasyAdmin].HTTPRequest(`https://servers-frontend.fivem.net/api/servers/single/${serverId}`); response = JSON.parse(response).Data; embed.addFields([{ name: "Upvotes", value: `\`\`\`${response.upvotePower} Upvotes, ${response.burstPower} Bursts\`\`\``, inline: false }]); embed.setAuthor({ name: `${serverName}`, iconURL: response.ownerAvatar, url: `https://${joinURL}` }); } catch (error) { console.error(error); } } embed.addFields([{ name: "Uptime", value: `\`\`\`${prettyMilliseconds(/* @__PURE__ */ new Date() - startTimestamp, { verbose: true, secondsDecimalDigits: 0 })}\`\`\``, inline: false }]); if (why) { embed.addFields([{ name: "Last Update", value: why }]); } if (buttonRow) { return { embeds: [embed], components: [buttonRow] }; } return { embeds: [embed] }; }; global.updateServerStatus = async function(why) { if (GetConvar("ea_botStatusChannel", "") == "") { return; } var channel = await client.channels.fetch(GetConvar("ea_botStatusChannel", "")); if (channel == void 0) { console.error("Failed to configure bot status channel, please make sure the channel id is correct and the bot has read and write access."); return; } if (!statusMessage) { var messagesToDelete = []; var messages = await channel.messages.fetch({ limit: 10 }).catch((error) => { console.error("^7Failed to configure server status channel, please make sure you gave the bot permission to write in the channel!\n\n"); console.error(error); }); for (var message of messages.values()) { if (messages.size == 1 && message.author.id == client.user.id) { statusMessage = message; break; } else { messagesToDelete.push(message.id); } } try { if (statusMessage) { updateServerStatus(); return; } await channel.bulkDelete(messagesToDelete); } catch (error) { console.log("Could not bulk-delete messages in botStatusChannel."); console.error(error); } let embed2 = await prepareGenericEmbed("Fetching Server Infos.."); statusMessage = await channel.send({ embeds: [embed2] }); } const embed = await getServerStatus(why); statusMessage.edit(embed); }; client.on("messageCreate", async (msg) => { if (!msg.member || msg.author.bot) { return; } if (msg.author.id == userID) { return; } if (!msg.channel) { return; } if (msg.channel.id == GetConvar("ea_botStatusChannel", "")) { msg.delete(); updateServerStatus("manual"); } }); setTimeout(updateServerStatus, 1e4); setInterval(updateServerStatus, 18e4);