-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
137 lines (133 loc) · 8.17 KB
/
index.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
const { Client, MessageEmbed } = require('discord.js');
const snek = require('snekfetch');
const client = new Client({ disableEveryone: true });
const config = require('./config.json');
client.login(config.discordToken);
client.on('ready', async () => {
console.log(client.user.tag + ' is ready. Made by Jellz (https://jellz.fun/).');
client.user.setActivity(config.discordPrefix + `help`);
});
client.on('message', async (msg) => {
if (msg.author.bot || msg.author.id == client.user.id) return;
client.user.setActivity(config.discordPrefix + `help`);
const args = msg.content.slice(0).trim(config.discordPrefix.length).split(/ +/g);
args.shift();
if (msg.content.toLowerCase().startsWith(config.discordPrefix + 'player')) {
if (!args[0]) return msg.channel.send(`**Usage!** ${config.discordPrefix}player <playername>`);
const response = await snek.get(config.apiURI + '/mc/player/' + args[0].toLowerCase());
if (response.body['notFound']) return msg.channel.send('Invalid player.');
const embed = new MessageEmbed();
embed.setTitle(`${args[0]}'s Warzone statistics`);
embed.setColor('RED');
embed.setURL('https://warz.one/' + args[0]);
embed.setDescription(`Displaying **${args[0]}**'s Warzone statistics.`);
embed.setThumbnail('https://crafatar.com/avatars/' + response.body.user['uuid']);
embed.addField('Kills', response.body.user['kills'] ? response.body.user['kills'] : '0', true);
embed.addField('Deaths', response.body.user['deaths'] ? response.body.user['deaths'] : '0', true);
embed.addField('Matches played', response.body.user['matches'] ? response.body.user['matches'].length : '0', true);
embed.addField('First joined', new Date(response.body.user['initialJoinDate']).toUTCString(), true);
embed.addField('Last joined', new Date(response.body.user['lastOnlineDate']).toUTCString(), true);
embed.addField('Wins', response.body.user['wins'] ? response.body.user['wins'] : '0', true);
embed.addField('Losses', response.body.user['losses'] ? response.body.user['losses'] : '0', true);
// embed.addField('W/L', response.body.user['wins'] ? response.body.user['wins'] : '0' + '/' + response.body.user['losses'] ? response.body.user['losses'] : '0', true);
// embed.addField('K/D', response.body.user['kills'] ? response.body.user['kills'] : 0 / response.body.user['deaths'] ? response.body.user['deaths'] : 0, true);
msg.channel.send({ embed: embed });
} else if (msg.content.toLowerCase().startsWith(config.discordPrefix + 'leaderboard')) {
const response = await snek.get(config.apiURI + '/mc/leaderboard/kills');
const leaderboard = response.body;
var count = 0;
const lbMsg = [];
leaderboard.slice(0, 10).forEach(player => {
count++;
if (count !== 11) {
lbMsg.push(`**[#${count}]** | **${player.name}** with **${player.kills}** kills.`);
}
});
const embed = new MessageEmbed();
embed.setTitle(`Displaying Top 10 Warzone players based on Kills...`);
embed.setColor('RED');
embed.setURL('https://warz.one/leaderboard');
embed.setDescription(lbMsg.join('\n'));
msg.channel.send({ embed: embed });
} else if (msg.content.toLowerCase().startsWith(config.discordPrefix + 'help')) {
const embed = new MessageEmbed();
embed.setTitle('Displaying bot help');
embed.setColor('RED');
const helpMsg = [
'This bot was made by [Jellz#1337](https://jellz.fun/) to assist Warzone community members with viewing players\' statistics.',
`Commands: \`${config.discordPrefix}help\` \`${config.discordPrefix}player <playername>\` \`${config.discordPrefix}leaderboard\` \`${config.discordPrefix}punishments\` \`${config.discordPrefix}server\` `,
'This bot is open-sourced on [Github.](https://github.com/jellz/warzonestats)'
// 'If you would like to view Jellz\'s other projects, head over to [his website](https://jellz.fun/).'
].join('\n');
embed.setDescription(helpMsg);
msg.channel.send({ embed: embed });
} else if (msg.content.toLowerCase().startsWith(config.discordPrefix + 'ping')) {
msg.channel.send('Pong!');
} else if (msg.content.toLowerCase().startsWith(config.discordPrefix + 'punishments')) {
try {
const response = await snek.get(config.apiURI + '/mc/punishment/latest?limit=10');
const punishments = response.body;
const punMsg = [];
var punType;
punishments.forEach(punishment => {
if (!punishment['punisherLoaded'].name) punishment['punisherLoaded'].name = 'Console';
time = new Date(punishment['issued']).toString().split(' ')[4];
punishment['type'].toLowerCase() == 'warn' ? punType = 'warned' : punType;
punishment['type'].toLowerCase() == 'mute' ? punType = 'muted' : punType;
punishment['type'].toLowerCase() == 'ban' ? punType = 'banned' : punType;
punishment['type'].toLowerCase() == 'kick' ? punType = 'kicked' : punType;
punMsg.push(`🔹 \`${time}\` **${punishment['punisherLoaded'].name}** ${punType} **${punishment['punishedLoaded'].name}** for **${punishment['reason']}**`);
});
const embed = new MessageEmbed();
embed.setTitle(`Displaying last 10 punishments on Warzone...`);
embed.setColor('RED');
embed.setDescription(punMsg.join('\n'));
msg.channel.send({ embed: embed });
} catch(err) {
msg.channel.send('An error occurred. Please contact **daniel#0004** as you shouldn\'t be seeing this message.\n\n\n```js\n' + err + '```');
}
// Benny was mad that the Discord API could view all roles... :bloblul:
// } else if (msg.content.toLowerCase().startsWith(config.discordPrefix + 'roles')) {
// msg.channel.send(msg.guild.roles.map(r => `**${r.name}** (${r.id})`).join(', '));
} else if (msg.content.toLowerCase().startsWith(config.discordPrefix + 'server')) {
if (!args[0]) return msg.channel.send(`**Usage!** ${config.discordPrefix}server <"game"|"discord">`);
if (args[0].toLowerCase() == 'discord') {
if (!msg.guild) return msg.author.send('You need to use this command in a Discord server.');
const embed = new MessageEmbed();
embed.setTitle('Discord server information');
const infoDesc = [
`**Name** ${msg.guild.name}`,
`**ID** ${msg.guild.id}`,
`**Members** ${msg.guild.memberCount}`,
`**Verification level** ${msg.guild.verificationLevel}`,
`**Channels** ${msg.guild.channels.size}`,
`**Roles** ${msg.guild.roles.size}`,
`**Owner** ${msg.guild.owner.user.tag}`,
`**Region** ${msg.guild.region}`,
`**Emojis** ${msg.guild.emojis.size}`,
].join('\n');
embed.setDescription(infoDesc);
// embed.setImage(msg.guild.iconURL());
embed.setThumbnail(msg.guild.iconURL());
embed.setColor('RED');
msg.channel.send({ embed: embed });
} else if (args[0].toLowerCase() == 'game') {
const response = await snek.post(config.apiURI + '/mc/server/stats').send({ name: 'Warzone' });
const info = response.body;
const infoDesc = [
'**IP** Warzone.minehut.gg',
`**Name** ${info['name']}`,
`**MOTD** ${info['motd']}`,
`**Players (${info['playerCount']}/${info['maxPlayers']})** ${info['players'].length > 0 ? info['players'].join(', ') : 'Currently no players online.'}`,
`**Spectators** ${info['spectatorCount']}`,
`**Map** ${info['map']}`,
`**Gamemode** ${info['gametype']}`
].join('\n');
const embed = new MessageEmbed();
embed.setTitle('Minecraft server information');
embed.setDescription(infoDesc);
embed.setColor('RED');
msg.channel.send({ embed: embed });
}
}
});