Skip to content

Commit

Permalink
Merge pull request #47 from SowinskiBraeden/update/nitrado-improvements
Browse files Browse the repository at this point in the history
Update/nitrado improvements
  • Loading branch information
SowinskiBraeden authored Nov 8, 2024
2 parents 2cb409a + c0f59cc commit b8197e1
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 8 deletions.
41 changes: 39 additions & 2 deletions commands/server.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, ModalBuilder, TextInputBuilder, TextInputStyle } = require('discord.js');
const CommandOptions = require('../util/CommandOptionTypes').CommandOptionTypes;
const bitfieldCalculator = require('discord-bitfield-calculator');
const { BanPlayer, UnbanPlayer, RestartServer, CheckServerStatus, DisableBaseDamage, DisableContainerDamage } = require('../util/NitradoAPI');
const { BanPlayer, UnbanPlayer, RestartServer, CheckServerStatus, DisableBaseDamage, DisableContainerDamage, NitradoCredentialStatus } = require('../util/NitradoAPI');
const { encrypt, decrypt } = require('../util/Cryptic');

module.exports = {
Expand All @@ -26,6 +26,18 @@ module.exports = {
value: "disconnect",
type: CommandOptions.SubCommand,
},
{
name: "credentials-status",
description: "Check the status of your Nitrado Credentials",
value: "credentials-status",
type: CommandOptions.SubCommand,
},
{
name: "retry-credentials",
description: "If your credentials are marked as FAILED, try retreiving Nitrado logs again.",
value: "retry-credentials",
type: CommandOptions.SubCommand,
},
{
name: "ban-player",
description: "Ban a player from the DayZ server",
Expand Down Expand Up @@ -180,7 +192,31 @@ module.exports = {

if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Red).setDescription(`**Notice:**\nThis Discord guild has not been configured with a Nitrado DayZ server. To configure your guild, use </server initialize:1166877457559851011>`)] });

if (args[0].name == 'ban-player') {
if (args[0].name == 'credentials-status') {

const ok = GuildDB.Nitrado.Status == NitradoCredentialStatus.OK;
const notice = ok ? "Your provided Nitrado Credentials are working correctly, logs are being checked." : "Your provided Nitrado Credentials are not working. They may be incorrect, or your server may be down. Ensure your DayZ server is online, and try to initialize your server again and verify your credentials are correct."
const statusEmbed = new EmbedBuilder()
.setColor(ok ? client.config.Colors.Green : client.config.Colors.Red)
.setTitle("Nitrado Credentials Status")
.setDescription(`**Status:** \`${GuildDB.Nitrado.Status}\`\n> ${notice}`);

return interaction.send({ embeds: [statusEmbed] });

} else if (args[0].name == 'retry-credentials') {

client.dbo.collection("guilds").updateOne({"server.serverID": GuildDB.serverID}, {$set:{"Nitrado.Status": NitradoCredentialStatus.OK}}, (err, _) => {
if (err) return client.sendInternalError(interaction, err);
});

const updatedEmbed = new EmbedBuilder()
.setColor(client.config.Colors.Green)
.setTitle("Updated Nitrado Credentials Status")
.setDescription(`**Success**\n> Successfully retrying your existing Nitrado Credentials to check DayZ logs.`);

return interaction.send({ embeds: [updatedEmbed] });

} else if (args[0].name == 'ban-player') {

let data = await BanPlayer(GuildDB.Nitrado, client, args[0].options[0].value);

Expand Down Expand Up @@ -286,6 +322,7 @@ module.exports = {
client.key,
client.encryptionIV
), // Encrypt the Authentication Token
Status: NitradoCredentialStatus.OK, // Indicate if these credentials dont work
};

await client.dbo.collection('guilds').updateOne({ "server.serverID": GuildDB.serverID }, { $set: { "Nitrado": Nitrado } }, (err, res) => {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "dayzr-bot",
"version": "13.3.2",
"version": "13.3.5",
"description": "A General Purpose Discord Bot for DayZ Nitrado Servers.",
"main": "index.js",
"nodemonConfig": {
Expand Down
14 changes: 10 additions & 4 deletions src/DayzRBot.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const Logger = require("../util/Logger");
const crypto = require('crypto');

// custom util imports
const { DownloadNitradoFile, CheckServerStatus, FetchServerSettings, PostServerSettings } = require('../util/NitradoAPI');
const { DownloadNitradoFile, CheckServerStatus, FetchServerSettings, PostServerSettings, NitradoCredentialStatus } = require('../util/NitradoAPI');
const { HandlePlayerLogs, HandleActivePlayersList } = require('../util/LogsHandler');
const { HandleKillfeed, UpdateLastDeathDate } = require('../util/KillfeedHandler');
const { HandleExpiredUAVs, HandleEvents, PlaceFireplaceInAlarm } = require('../util/AlarmsHandler');
Expand Down Expand Up @@ -308,6 +308,7 @@ class DayzRBot extends Client {
*/

if (!c.exists(GuildDB.Nitrado)) return; // Continue if no nitrado credentials
if (GuildDB.Nitrado.Status == NitradoCredentialStatus.FAILED) return; // Continue if these credentials are marked as failed

const NitradoCred = {
ServerID: GuildDB.Nitrado.ServerID,
Expand All @@ -317,17 +318,22 @@ class DayzRBot extends Client {
c.config.EncryptionMethod,
c.key,
c.encryptionIV
)
),
};

const response = await FetchServerSettings(NitradoCred, c, "logsUpdateTimer").then(res => res);
if (response == 1) return;
if (response == 1) {
c.dbo.collection("guilds").updateOne({"server.serverID": GuildDB.serverID }, {$set: { "Nitrado.Status": NitradoCredentialStatus.FAILED }}, (err, _) => {
if (err) this.error(`Failed to update Nitrado status to failed. [${GuildDB.serverID}]`);
});
return;
};
const settings = response.data.gameserver;

// Update Nitrado DayZ Mission if change is detected
if (GuildDB.Nitrado.Mission !== Missions[settings.settings.config.mission]) {
c.dbo.collection("guilds").updateOne({"server.serverID": GuildDB.serverID}, {$set: { "Nitrado.Mission": Missions[settings.settings.config.mission] }}, (err, res) => {
if (err) this.error(`Failed to save mission to guild config [${guild.serverID}] for nitrado server [${guild.Nitrado.ServerID}]`);
if (err) this.error(`Failed to save mission to guild config [${GuildDB.serverID}] for nitrado server [${GuildDB.Nitrado.ServerID}]`);
});
}

Expand Down
7 changes: 6 additions & 1 deletion util/NitradoAPI.js
Original file line number Diff line number Diff line change
Expand Up @@ -301,5 +301,10 @@ module.exports = {
if (uploaded == 1) return 1;

return 0;
}
},

NitradoCredentialStatus: {
FAILED: "FAILED",
OK: "OK",
},
}

0 comments on commit b8197e1

Please sign in to comment.