const cfx = require('cfx-api');
const { ActivityType, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, Webhook } = require('discord.js');
const { set } = require('lodash');
const FiveMStatusSchema = require("../../Models/FiveMstatus")
module.exports = new Object({
name: "ready",
once: true,
/**
* @param {import("../../Base/Apera")} client
*/
async execute(client, message, guild) {
client.console.log(`FiveM Server Status Ready`, "fivem");
setInterval(function() {
const guildids = client.guilds.cache.map((r) => r.id)
guildids.forEach(async guildID => {
const guildm = await client.guilds.cache.get(guildID)
let data = await FiveMStatusSchema.findOne({
guildId: await guildm.id
})
const liveServerStatus = async () =>
{
try {
console.log(data?.FiveMID)
var FiveMServerID = data?.FiveMID
var FiveMChannelID = data?.channelId
var FiveMMessageID = data?.mssgId
var liveStatus = await cfx.fetchStatus()
var liveServer = await cfx.fetchServer(FiveMServerID)
const Button3 = new ActionRowBuilder()
.addComponents(
new ButtonBuilder()
.setLabel('Connect to Live Server')
.setStyle(ButtonStyle.Link)
.setURL(`https://cfx.re/join/${FiveMServerID}`),
);
if (FiveMChannelID !== '')
{
const liveChannelName = client.channels.cache.find(channel => channel.id == (FiveMChannelID))
if (FiveMMessageID !== '')
{
if (liveServer !== undefined)
{
liveChannelName?.messages.fetch(FiveMMessageID).then((message) =>
{
const liveStatusMessage = new EmbedBuilder()
.setThumbnail(client.ThumnailImage)
.setColor('#a082ff')
.addFields(
{ name: '• Server Status •', value: 'Online ✅', inline: true },
{ name: '• CFX Status •', value: liveStatus?.everythingOk ? "Online ✅" : "Issues ❗", inline: true },
{ name: '• Conected Players •', value: `${liveServer?.playersCount} / ${liveServer?.maxPlayers}`, inline: true },
)
.setFooter({ text: 'IERP Server Last update: ', iconURL: client.FooterImage })
.setTimestamp()
message.edit({ embeds: [liveStatusMessage], components: [Button3] });
console.log(`1st Check Done`)
})
}
else
{
liveChannelName?.messages.fetch(FiveMMessageID).then((message) =>
{
try {
const liveStatusMessage = new EmbedBuilder()
.setThumbnail('https://media.discordapp.net/attachments/895571838049083422/1003915341568675861/ezgif.com-gif-maker.gif')
.setColor('#a082ff')
.addFields(
{ name: '• Server Status •', value: 'Offline ❌', inline: true },
{ name: '• Conected Players •', value: `0/0`, inline: true },
{ name: 'Player Information', value: `None to Display`, inline: false },
)
//.setFooter({ text: 'IERP Server Last update: ', iconURL: client.FooterImage })
.setTimestamp()
message.edit({ embeds: [liveStatusMessage] });
console.log(`2st Check Done`)
} catch (error) {
}
})
}
setTimeout(liveServerStatus, 1000 * parseInt(120, 10))
} else
{
return;
}
}
else
{
console.log('Please fill in the .env file, you need to define : FiveMChannelID', 'error')
console.log(`3st Check Done`)
return
}
} catch (error) {
}
}
liveServerStatus()
})
}, 1000)
}
})