forked from RahulR100/mcstatusbot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstatus.js
More file actions
60 lines (59 loc) · 2.81 KB
/
status.js
File metadata and controls
60 lines (59 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const { SlashCommandBuilder } = require('@discordjs/builders');
const mcping = require('mcping-js');
const Discord = require("discord.js");
module.exports = {
data: new SlashCommandBuilder()
.setName('status')
.setDescription('Displays the current status and active players for your server')
.addStringOption(option =>
option
.setName('ip')
.setDescription('IP Address')
.setRequired(false)
),
async execute(interaction) {
const monitoredServers = await serverDB.get(interaction.guildId) ? await serverDB.get(interaction.guildId) : [];
defaultIp = monitoredServers[0] ? monitoredServers[0].ip : null;
ipFull = interaction.options.getString('ip') ? interaction.options.getString('ip') : defaultIp;
if (!ipFull) {
const responseEmbed = new Discord.MessageEmbed()
.setDescription('You must monitor a server or specify an IP address to use this command!')
.setColor(embedColor)
await interaction.reply({ embeds: [responseEmbed], ephemeral: true });
return;
}
ip = ipFull.split(":")[0];
port = ipFull.split(":")[1] ? ipFull.split(":")[1] : 25565;
const server = new mcping.MinecraftServer(ip, port);
server.ping(2500, 47, async function (err, res) {
if (err) {
const responseEmbed = new Discord.MessageEmbed()
.setTitle(`Status for ${ipFull}:`)
.setDescription(`*The server is offline!*`)
.setColor(embedColor)
await interaction.reply({ embeds: [responseEmbed], ephemeral: true });
return;
}
else {
if (typeof res.players.sample == 'undefined') {
serverStatus = `*No one is playing!*`;
}
else {
let onlinePlayers = [];
for (var i = 0; i < res.players.sample.length; i++) {
onlinePlayers.push(res.players.sample[i].name);
};
onlinePlayers = onlinePlayers.sort().join(', ').replace(/\u00A7[0-9A-FK-OR]|\\n/ig, '');
serverStatus = `**${res.players.online}/${res.players.max}** player(s) online.\n\n${onlinePlayers}`;
};
const responseEmbed = new Discord.MessageEmbed()
.setTitle(`Status for ${ipFull}:`)
.setColor(embedColor)
.setDescription(serverStatus)
.addField('Server version:', res.version.name)
.setThumbnail(`https://api.mcsrvstat.us/icon/${ip}:${port}`)
interaction.reply({ embeds: [responseEmbed], ephemeral: true });
}
});
},
};