diff --git a/commands/alarm.js b/commands/alarm.js index 810ada8..2302853 100644 --- a/commands/alarm.js +++ b/commands/alarm.js @@ -130,31 +130,30 @@ module.exports = { description: "Enable an Zone Alarm", value: "enable", type: 1, + }, + { + name: "set-rule", + description: "Add a Rule to an Alarm", + value: "set-rule", + type: 1, + options: [{ + name: "rule", + description: "Rule to Add to an Alarm", + value: "rule", + type: 3, + required: true, + choices: [ + { name: 'Ban on Entry', value: 'ban_on_entry' }, + { name: 'Ban on Kill', value: 'ban_on_kill' } + ] + }] + }, + { + name: "remove-rule", + description: "Remove a Rule from an Alarm", + value: "remove-rule", + type: 1, } - // { - // name: "set-rule", - // description: "Add a Rule to an Alarm", - // value: "set-rule", - // type: 1, - // options: [{ - // name: "rule", - // description: "Rule to Add to an Alarm", - // value: "rule", - // type: 3, - // required: true, - // choices: [ - // { name: 'Ban on Entry', value: 'ban_on_entry' }, - // { name: 'Ban on Kill', value: 'ban_on_kill' }, - // { name: 'Ban on IED Set', value: 'ban_on_ied_set' }, - // ] - // }] - // }, - // { - // name: "remove-rule", - // description: "Remove a Rule from an Alarm", - // value: "remove-rule", - // type: 1, - // } ], SlashCommand: { /** diff --git a/package.json b/package.json index ca90bd1..af2c18e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dayz-armbands", - "version": "6.0.4", + "version": "6.1.0", "description": "A General Purpose Discord Bot for DayZ Servers.", "main": "index.js", "nodemonConfig": { diff --git a/util/AlarmsHandler.js b/util/AlarmsHandler.js index c9715d9..7d896f7 100644 --- a/util/AlarmsHandler.js +++ b/util/AlarmsHandler.js @@ -6,17 +6,6 @@ module.exports = { HandleAlarms: async (client, guildId, data) => { let guild = await client.GetGuild(guildId); - - if (!client.exists(guild.alarms)) { - guild.alarms = []; - await client.dbo.collection("guilds").updateOne({ 'server.serverID': guildId }, { - $set: { - 'server.alarms': [], - } - }, function (err, res) { - if (err) client.error(err); - }); - } for (let i = 0; i < guild.alarms.length; i++) { let alarm = guild.alarms[i]; @@ -32,15 +21,18 @@ module.exports = { let newDt = await client.getDateEST(data.time); let unixTime = Math.floor(newDt.getTime()/1000); - // if (alarm.rules.includes['ban_on_entry']) { + if (alarm.rules.includes['ban_on_entry']) { - // let alarmEmbed = new EmbedBuilder() - // .setColor(client.config.Colors.Default) - // .setDescription(`**Zone Ping - **\n**${data.player}** was located within **${distance} meters** of the Zone **${alarm.name}** __and has been banned.__`) - // .addFields({ name: '**Location**', value: `**[${data.pos[0]}, ${data.pos[1]}](https://www.izurvive.com/chernarusplussatmap/#location=${data.pos[0]};${data.pos[1]})**`, inline: false }) + let alarmEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Default) + .setDescription(`**Zone Ping - **\n**${data.player}** was located within **${distance} meters** of the Zone **${alarm.name}** __and has been banned.__`) + .addFields({ name: '**Location**', value: `**[${data.pos[0]}, ${data.pos[1]}](https://www.izurvive.com/chernarusplussatmap/#location=${data.pos[0]};${data.pos[1]})**`, inline: false }) - // channel.send({ content: `<@&${alarm.role}>`, embeds: [alarmEmbed] }); - // } else { + channel.send({ content: `<@&${alarm.role}>`, embeds: [alarmEmbed] }); + + HandlePlayerBan(client, data.player, true); + } + let alarmEmbed = new EmbedBuilder() .setColor(client.config.Colors.Default) .setDescription(`**Zone Ping - **\n**${data.player}** was located within **${distance} meters** of the Zone **${alarm.name}**`) @@ -50,5 +42,35 @@ module.exports = { // } } } + }, + + KillInAlarm: async (client, guildId, data) => { + + let guild = await client.GetGuild(guildId); + + for (let i = 0; i < guild.alarms.length; i++) { + let alarm = guild.alarms[i]; + if (alarm.disabled || !alarm.rules.includes('ban_on_kill')) continue; // ignore if alarm is disabled or not ban on kill; + if (alarm.ignoredPlayers.includes(data.killerID)) continue; + + let diff = [Math.round(alarm.origin[0] - data.killerPOS[0]), Math.round(alarm.origin[1] - data.killerPOS[1])]; + let distance = Math.sqrt(Math.pow(diff[0], 2) + Math.pow(diff[1], 2)).toFixed(2) + + if (distance < alarm.radius) { + const channel = client.channels.cache.get(alarm.channel); + + let newDt = await client.getDateEST(data.time); + let unixTime = Math.floor(newDt.getTime()/1000); + + let alarmEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Default) + .setDescription(`**Zone Ping - **\n**${data.killer}** was located within **${distance} meters** of the Zone **${alarm.name}** __and has been banned for killing **${data.victim}**.__`) + .addFields({ name: '**Location**', value: `**[${data.killerPOS[0]}, ${data.killerPOS[1]}](https://www.izurvive.com/chernarusplussatmap/#location=${data.killerPOS[0]};${data.killerPOS[1]})**`, inline: false }) + + channel.send({ content: `<@&${alarm.role}>`, embeds: [alarmEmbed] }); + + HandlePlayerBan(client, data.player, true); + } + } } } \ No newline at end of file diff --git a/util/NitradoAPI.js b/util/NitradoAPI.js index 190046c..48c6695 100644 --- a/util/NitradoAPI.js +++ b/util/NitradoAPI.js @@ -32,8 +32,8 @@ module.exports = { let bans = res.data.gameserver.settings.general.bans; if (ban) bans += `${gamertag}\r\n`; - if (!ban) bans = bans.replace(`${gamertag}\r\n`, ''); - if (ban != true && ban != false) { + else if (!ban) bans = bans.replace(`${gamertag}\r\n`, ''); + else { client.error("Incorrect Ban Option: HandlePlayerBan") throw "Incorrect Ban Option: HandlePlayerBan" }