/
list.js
95 lines (83 loc) · 6.02 KB
/
list.js
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
const util = require('axios'),
Discord = require('discord.js'),
c = require('chalk'),
fs = require('fs'),
{ commands } = require(fs.existsSync(__dirname + '/../dev-config.js') ? '../dev-config' : '../config');
module.exports.config = {
name: "list", //Name of command - RENAME THE FILE TOO!!!
description: "Sends the actual list of players online", //Description of command - you can change it :)
aliases: commands.list.aliases //Command's aliases - set them in config.js
};
module.exports.run = async (bot, message) => {
let { server, config } = bot,
text = commands.list.text,
warn = c.keyword('yellow').bold,
warns = config.settings.warns;
if (!server.work) return;
let icon = server.icon ? server.icon : message.guild.iconURL();
if (server.type === 'java') {
util.get(`https://api.mcstatus.io/v2/status/java/${server.ip}:${server.port}`)
.then((response) => {
if (!response.data.online) throw new Error(`Server ${server.ip}:${server.port} was not found!`);
if (text.title === "" || text.description === "" || text.listFormat === "") {
const trueList = response.data.players.list ? "\n\`\`\`" + response.data.players.list.map(p => ` ${p.name_clean} `).join('\r\n') + "\`\`\`" : "";
const serverEmbed = new Discord.EmbedBuilder()
.setAuthor({ name: config.server.name ? config.server.name : message.guild.name, iconURL: icon })
.setTitle("Online player list:")
.setDescription(`**${response.data.players.online}**/**${response.data.players.max}**` + trueList)
.setColor(config.embeds.color);
message.channel.send({ embeds: [serverEmbed] });
} else {
text.title = text.title.replaceAll('{serverIp}', server.ip);
text.title = text.title.replaceAll('{serverPort}', server.port);
text.title = text.title.replaceAll('{serverName}', config.server.name ? config.server.name : message.guild.name);
text.title = text.title.replaceAll('{voteLink}', config.server.vote);
text.title = text.title.replaceAll('{serverType}', config.server.type.charAt(0).toUpperCase() + config.server.type.slice(1));
text.title = text.title.replaceAll('{playersOnline}', response.data.players.online);
text.title = text.title.replaceAll('{playersMax}', response.data.players.max);
text.description = text.description.replaceAll('{serverIp}', server.ip);
text.description = text.description.replaceAll('{serverPort}', server.port);
text.description = text.description.replaceAll('{serverName}', config.server.name ? config.server.name : message.guild.name);
text.description = text.description.replaceAll('{voteLink}', config.server.vote);
text.description = text.description.replaceAll('{serverType}', config.server.type.charAt(0).toUpperCase() + config.server.type.slice(1));
text.description = text.description.replaceAll('{playersOnline}', response.data.players.online);
text.description = text.description.replaceAll('{playersMax}', response.data.players.max);
if (response.data.players.list) {
var trueList = text.listFormat.replaceAll('{playersList}', response.data.players.list.map(p => ` ${p.name_clean} `).join('\r\n'));
}
const serverEmbed = new Discord.EmbedBuilder()
.setAuthor({ name: config.server.name ? config.server.name : message.guild.name, iconURL: icon })
.setTitle(text.title)
.setDescription(text.description + (trueList ? `\n${trueList}` : ""))
.setColor(config.embeds.color);
message.channel.send({ embeds: [serverEmbed] });
}
})
.catch((error) => {
if (text.title === "" || text.description === "" || text.listFormat === "") {
const errorEmbed = new Discord.EmbedBuilder()
.setAuthor({ name: config.server.name ? config.server.name : message.guild.name, iconURL: icon })
.setTitle("Online player list:")
.setDescription(`:x: **OFFLINE**\n\n:information_source: \`${server.ip}\`:\`${server.port}\``)
.setColor(config.embeds.error);
message.channel.send({ embeds: [errorEmbed] });
} else {
text.title = text.title.replaceAll('{serverIp}', server.ip);
text.title = text.title.replaceAll('{serverPort}', server.port);
text.title = text.title.replaceAll('{serverName}', config.server.name ? config.server.name : message.guild.name);
text.title = text.title.replaceAll('{voteLink}', config.server.vote);
text.title = text.title.replaceAll('{serverType}', config.server.type.charAt(0).toUpperCase() + config.server.type.slice(1));
const errorEmbed = new Discord.EmbedBuilder()
.setAuthor({ name: config.server.name ? config.server.name : message.guild.name, iconURL: icon })
.setTitle("Online player list:")
.setDescription(`:x: **OFFLINE**\n\n:information_source: \`${server.ip}\`:\`${server.port}\``)
.setColor(config.embeds.error);
message.channel.send({ embeds: [errorEmbed] });
}
if (warns) console.log(`${bot.emotes.warn} ` + warn(`Error when using command ${module.exports.config.name}! Error:\n`) + error);
});
} else {
//Doesn't work for Bedrock edition, sorry.
message.reply({ content: 'Sorry, but this function is not working for Bedrock servers.' });
}
};