change/make certain functions private

This commit is contained in:
SowinskiBraeden committed 2023-09-03 17:09:48 -07:00
1 parent a8f99d0fc8
commit d3b211a30a
3 files changed
+54 -91

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "dayzr-bot", "name": "dayzr-bot",
"version": "9.4.3", "version": "9.4.4",
"description": "A General Purpose Discord Bot for DayZ Nitrado Servers.", "description": "A General Purpose Discord Bot for DayZ Nitrado Servers.",
"main": "index.js", "main": "index.js",
"nodemonConfig": { "nodemonConfig": {
+41 -39
View File
@@ -1,10 +1,49 @@
const { BanPlayer, UnbanPlayer } = require('./NitradoAPI'); const { BanPlayer, UnbanPlayer } = require('./NitradoAPI');
const { EmbedBuilder } = require('discord.js'); const { EmbedBuilder } = require('discord.js');
// Private functions (only called locally)
const ExpireEvent = async(client, guild, e) => {
let hasMR = (guild.memberRole != "");
const channel = client.GetChannel(e.channel);
if (client.exists(e.channel)) channel.send({ embeds: [new EmbedBuilder().setColor(client.config.colors.Default).setDescription(`${hasMR ? `<@&${guild.memberRole}>\n`:''}**The ${e.name} Event has ended!**`)] });
client.dbo.collection("guilds").updateOne({ "server.serverID": guild.serverID }, {
$pull: {
"server.events": e
}
}, function(err, res) {
if (err) return client.sendError(client.GetChannel(guild.adminLogsChannel), err);
});
}
const HandlePlayerTrackEvent = async (client, guild, e) => {
let player = guild.playerstats.find(stat => stat.gamertag == e.gamertag );
let hasMR = (guild.memberRole != "")
let newDt = await client.getDateEST(player.time);
let unixTime = Math.floor(newDt.getTime()/1000);
const trackEvent = new EmbedBuilder()
.setColor(client.config.Colors.Default)
.setDescription(`**${e.name} Event**\n${e.gamertag} was located at **[${player.pos[0]}, ${player.pos[1]}](https://www.izurvive.com/chernarusplussatmap/#location=${player.pos[0]};${player.pos[1]})** at <t:${unixTime}>`);
if (!client.exists(e.channel)) return ExpireEvent(client, guild, e); // Expire event since it has invalid channel.
const channel = client.GetChannel(e.channel);
channel.send({ embeds: [trackEvent], content: `${hasMR ? `\n<@&${guild.memberRole}>`:'@here'}` });
let now = new Date();
let diff = ((now - e.creationDate) / 1000) / 60;
let minutesBetweenDates = Math.abs(Math.round(diff));
if (minutesBetweenDates >= e.time) ExpireEvent(client, guild, e);
}
// Public functions (called externally)
module.exports = { module.exports = {
HandleAlarmsAndUAVs: async (client, guildId, data) => { HandleAlarmsAndUAVs: async (client, guildId, data) => {
let guild = await client.GetGuild(guildId); let guild = await client.GetGuild(guildId);
for (let i = 0; i < guild.alarms.length; i++) { for (let i = 0; i < guild.alarms.length; i++) {
@@ -125,50 +164,13 @@ module.exports = {
} }
}, },
ExpireEvent: async(client, guild, e) => {
let hasMR = (guild.memberRole != "");
const channel = client.GetChannel(e.channel);
if (client.exists(e.channel)) channel.send({ embeds: [new EmbedBuilder().setColor(client.config.colors.Default).setDescription(`${hasMR ? `<@&${guild.memberRole}>\n`:''}**The ${e.name} Event has ended!**`)] });
client.dbo.collection("guilds").updateOne({ "server.serverID": guild.serverID }, {
$pull: {
"server.events": e
}
}, function(err, res) {
if (err) return client.sendError(client.GetChannel(guild.adminLogsChannel), err);
});
},
HandlePlayerTrackEvent: async (client, guild, e) => {
let player = guild.playerstats.find(stat => stat.gamertag == e.gamertag );
let hasMR = (guild.memberRole != "")
let newDt = await client.getDateEST(player.time);
let unixTime = Math.floor(newDt.getTime()/1000);
const trackEvent = new EmbedBuilder()
.setColor(client.config.Colors.Default)
.setDescription(`**${e.name} Event**\n${e.gamertag} was located at **[${player.pos[0]}, ${player.pos[1]}](https://www.izurvive.com/chernarusplussatmap/#location=${player.pos[0]};${player.pos[1]})** at <t:${unixTime}>`);
if (!client.exists(e.channel)) return module.exports.ExpireEvent(client, guild, e); // Expire event since it has invalid channel.
const channel = client.GetChannel(e.channel);
channel.send({ embeds: [trackEvent], content: `${hasMR ? `\n<@&${guild.memberRole}>`:'@here'}` });
let now = new Date();
let diff = ((now - e.creationDate) / 1000) / 60;
let minutesBetweenDates = Math.abs(Math.round(diff));
if (minutesBetweenDates >= e.time) module.exports.ExpireEvent(client, guild, e);
},
HandleEvents: async (client, guildId) => { HandleEvents: async (client, guildId) => {
let guild = await client.GetGuild(guildId); let guild = await client.GetGuild(guildId);
for (let i = 0; i < guild.events.length; i++) { for (let i = 0; i < guild.events.length; i++) {
let event = guild.events[i]; let event = guild.events[i];
if (event.type == 'player-track') module.exports.HandlePlayerTrackEvent(client, guild, event); if (event.type == 'player-track') HandlePlayerTrackEvent(client, guild, event);
} }
}, },
} }
+12 -51
View File
@@ -4,10 +4,11 @@ const { Readable } = require('stream');
const FormData = require('form-data'); const FormData = require('form-data');
const fs = require('fs'); const fs = require('fs');
const maxRetries = 5; const maxRetries = 5;
const retryDelay = 5000; // 5 second const retryDelay = 5000; // 5 seconds
module.exports = { // Private functions (only called locally)
DownloadNitradoFile: async (client, filename, outputDir) => {
const DownloadNitradoFile = async(client, filename, outputDir) => {
for (let retries = 0; retries <= maxRetries; retries++) { for (let retries = 0; retries <= maxRetries; retries++) {
try { try {
const res = await fetch(`https://api.nitrado.net/services/${client.config.Nitrado.ServerID}/gameservers/file_server/download?file=${filename}`, { const res = await fetch(`https://api.nitrado.net/services/${client.config.Nitrado.ServerID}/gameservers/file_server/download?file=${filename}`, {
@@ -32,59 +33,19 @@ module.exports = {
} }
await new Promise(resolve => setTimeout(resolve, retryDelay)); // Delay before retrying await new Promise(resolve => setTimeout(resolve, retryDelay)); // Delay before retrying
} }
}, }
HandlePlayerBan: async (client, gamertag, ban) => { // Public functions (called externally)
for (let retries = 0; retries <= maxRetries; retries++) {
try {
// get current bans
const res = await fetch(`https://api.nitrado.net/services/${client.config.Nitrado.ServerID}/gameservers`, {
headers: {
"Authorization": client.config.Nitrado.Auth
}
}).then(response =>
response.json().then(data => data)
).then(res => res);
let bans = res.data.gameserver.settings.general.bans;
if (ban) bans += `\r\n${gamertag}`;
else if (!ban) bans = bans.replace(gamertag, '');
else client.error("Incorrect Ban Option: HandlePlayerBan");
const formData = new FormData();
formData.append("category", "general");
formData.append("key", "bans");
formData.append("value", bans);
formData.pipe(concat(data => {
async function sendList() {
await fetch(`https://api.nitrado.net/services/${client.config.Nitrado.ServerID}/gameservers/settings`, {
method: "POST",
credentials: 'include',
headers: {
...formData.getHeaders(),
"Authorization": client.config.Nitrado.Auth
},
body: data,
});
}
sendList();
}));
} catch (error) {
if (retries === maxRetries) throw new Error(`HandlePlayerBans: Failed to fetch data after ${maxRetries} retries`);
}
await new Promise(resolve => setTimeout(resolve, retryDelay)); // Delay before retrying
}
},
module.exports = {
/* /*
Allows more explicit function names outside this file; Export explicit function names; i.e BanPlayer() & UnbanPlayer()
i.e BanPlayer() & UnbanPlayer() that both call to the that call to the private parent function HandlePlayerBan()
parent function HandlePlayerBan() rather than write rather than write two whole different functions for each.
two whole different functions for each.
*/ */
BanPlayer: async (client, gamertag) => module.exports.HandlePlayerBan(client, gamertag, true), BanPlayer: async (client, gamertag) => HandlePlayerBan(client, gamertag, true),
UnbanPlayer: async (client, gamertag) => module.exports.HandlePlayerBan(client, gamertag, false), UnbanPlayer: async (client, gamertag) => HandlePlayerBan(client, gamertag, false),
RestartServer: async (client) => { RestartServer: async (client) => {
for (let retries = 0; retries < maxRetries; retries++) { for (let retries = 0; retries < maxRetries; retries++) {