feature/fix disableBaseDamage command + move to /server command
This commit is contained in:
6 files changed
+217
-140
No files matched your search
+2
-127
@@ -1,7 +1,6 @@
|
||||
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, StringSelectMenuBuilder } = require('discord.js');
|
||||
const CommandOptions = require('../util/CommandOptionTypes').CommandOptionTypes;
|
||||
const bitfieldCalculator = require('discord-bitfield-calculator');
|
||||
const { BanPlayer, UnbanPlayer, RestartServer, CheckServerStatus, DisableBaseDamage } = require('../util/NitradoAPI');
|
||||
const { Armbands } = require('../database/armbands.js');
|
||||
const { createUser, addUser } = require('../database/user')
|
||||
|
||||
@@ -70,31 +69,8 @@ module.exports = {
|
||||
type: CommandOptions.String,
|
||||
required: true,
|
||||
}]
|
||||
}, {
|
||||
name: "ban-player",
|
||||
description: "Ban a player from the DayZ server",
|
||||
value: "ban-player",
|
||||
type: CommandOptions.SubCommand,
|
||||
options: [{
|
||||
name: "gamertag",
|
||||
description: "gamertag of the player to ban.",
|
||||
value: "gamertag",
|
||||
type: CommandOptions.String,
|
||||
required: true,
|
||||
}]
|
||||
}, {
|
||||
name: "unban-player",
|
||||
description: "Unban a player from the DayZ server",
|
||||
value: "unban-player",
|
||||
type: CommandOptions.SubCommand,
|
||||
options: [{
|
||||
name: "gamertag",
|
||||
description: "gamertag of the player to unban.",
|
||||
value: "gamertag",
|
||||
type: CommandOptions.String,
|
||||
required: true,
|
||||
}]
|
||||
}, {
|
||||
},
|
||||
{
|
||||
name: "add-money",
|
||||
description: "Add money to user",
|
||||
value: "add",
|
||||
@@ -139,32 +115,9 @@ module.exports = {
|
||||
required: true,
|
||||
},
|
||||
]
|
||||
}, {
|
||||
name: "restart",
|
||||
description: "Restart the DayZ Server",
|
||||
value: "restart",
|
||||
type: CommandOptions.SubCommand,
|
||||
}, {
|
||||
name: "auto-restart",
|
||||
description: "Enable/Disable periodic server checks and restart if stopped.",
|
||||
value: "auto-restart",
|
||||
type: CommandOptions.SubCommand,
|
||||
}, {
|
||||
name: "disable-base-damage",
|
||||
description: "Disable/Enable base damage",
|
||||
value: "disable-base-damage",
|
||||
type: CommandOptions.SubCommand,
|
||||
options: [{
|
||||
name: "preference",
|
||||
description: "DisableBaseDamage Preference",
|
||||
value: true,
|
||||
type: CommandOptions.Boolean,
|
||||
required: true,
|
||||
}]
|
||||
}],
|
||||
SlashCommand: {
|
||||
/**
|
||||
*
|
||||
* @param {require("../structures/DayzRBot")} client
|
||||
* @param {import("discord.js").Message} message
|
||||
* @param {string[]} args
|
||||
@@ -362,42 +315,6 @@ module.exports = {
|
||||
|
||||
return interaction.send({ embeds: [clearedBounty] });
|
||||
|
||||
} else if (args[0].name == 'ban-player') {
|
||||
|
||||
let data = await BanPlayer(client, args[0].options[0].value);
|
||||
|
||||
if (data == 1) {
|
||||
let failed = new EmbedBuilder()
|
||||
.setColor(client.config.Colors.Red)
|
||||
.setDescription(`Failed to ban **${args[0].options[0].value}**. Check internal logs for an error.`);
|
||||
|
||||
return interaciton.send({ embeds: [failed] });
|
||||
}
|
||||
|
||||
let banned = new EmbedBuilder()
|
||||
.setColor(client.config.Colors.Default)
|
||||
.setDescription(`Successfully **banned** **${args[0].options[0].value}** from the DayZ Server`);
|
||||
|
||||
return interaction.send({ embeds: [banned] });
|
||||
|
||||
} else if (args[0].name == 'unban-player') {
|
||||
|
||||
let data = UnbanPlayer(client, args[0].options[0].value);
|
||||
|
||||
if (data == 1) {
|
||||
let failed = new EmbedBuilder()
|
||||
.setColor(client.config.Colors.Red)
|
||||
.setDescription(`Failed to ban **${args[0].options[0].value}**. Check internal logs for an error.`);
|
||||
|
||||
return interaction.send({ embeds: [failed] });
|
||||
}
|
||||
|
||||
let banned = new EmbedBuilder()
|
||||
.setColor(client.config.Colors.Default)
|
||||
.setDescription(`Successfully **unbanned** **${args[0].options[0].value}** from the DayZ Server`);
|
||||
|
||||
return interaction.send({ embeds: [banned] });
|
||||
|
||||
} else if (args[0].name == 'add-money' || args[0].name == 'remove-money') {
|
||||
|
||||
const targetUserID = args[0].options[1].value;
|
||||
@@ -428,48 +345,6 @@ module.exports = {
|
||||
|
||||
return interaction.send({ embeds: [successEmbed] });
|
||||
|
||||
} else if (args[0].name == "restart") {
|
||||
// Write optional "restart_message" to set in the Nitrado server logs and send a notice "message" to your server community.
|
||||
restart_message = 'Server being restarted by an admin.';
|
||||
message = 'The server was restarted by an admin!';
|
||||
|
||||
RestartServer(client, restart_message, message);
|
||||
return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription('The server will restart shortly.')], flags: (1 << 6) });
|
||||
|
||||
} else if (args[0].name == "auto-restart") {
|
||||
msg = 'Auto server restart periodic check enabled.';
|
||||
pref = 0;
|
||||
|
||||
// Enable/Disable a 10min periodic server status check.
|
||||
if (!client.arIntervalId) {
|
||||
client.arIntervalId = setInterval(CheckServerStatus, client.arInterval, client);
|
||||
client.log('Enabled and starting periodic Nitrado server status check.');
|
||||
pref = 1;
|
||||
} else {
|
||||
msg = 'Auto server restart periodic check disabled.'
|
||||
clearInterval(client.arIntervalId);
|
||||
client.arIntervalId = 0;
|
||||
client.log('Disabled periodic Nitrado server status check.');
|
||||
}
|
||||
|
||||
// Update DB preference
|
||||
client.dbo.collection("guilds").updateOne({ "server.serverID": GuildDB.serverID }, {
|
||||
$set: {
|
||||
"server.autoRestart": pref
|
||||
}
|
||||
}, function (err, res) {
|
||||
if (err) return client.sendInternalError(interaction, err);
|
||||
});
|
||||
|
||||
return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(msg)], flags: (1 << 6) });
|
||||
} else if (args[0].name == 'disable-base-damage') {
|
||||
return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Green).setDescription('This command is disabled as it is currently in development.')] });
|
||||
const preference = args[0].options[0].value;
|
||||
|
||||
const toggle = await DisableBaseDamage(client, preference);
|
||||
if (toggle == 1) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Red).setDescription('Failed to update ` disableBaseDamage `, try again later.')] });
|
||||
|
||||
return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Green).setDescription(`Successfully updated \` disableBaseDamage \` to ${preference}.\nRestart the DayZ server to apply these changes.`)] });
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, StringSelectMenuBuilder } = require('discord.js');
|
||||
const CommandOptions = require('../util/CommandOptionTypes').CommandOptionTypes;
|
||||
const bitfieldCalculator = require('discord-bitfield-calculator');
|
||||
const { BanPlayer, UnbanPlayer, RestartServer, CheckServerStatus, DisableBaseDamage } = require('../util/NitradoAPI');
|
||||
|
||||
module.exports = {
|
||||
name: "server",
|
||||
debug: false,
|
||||
global: false,
|
||||
description: "DayZ Server Administrative Commands",
|
||||
usage: "[command] [options]",
|
||||
permissions: {
|
||||
channel: ["VIEW_CHANNEL", "SEND_MESSAGES", "EMBED_LINKS"],
|
||||
member: [],
|
||||
},
|
||||
options: [
|
||||
{
|
||||
name: "ban-player",
|
||||
description: "Ban a player from the DayZ server",
|
||||
value: "ban-player",
|
||||
type: CommandOptions.SubCommand,
|
||||
options: [{
|
||||
name: "gamertag",
|
||||
description: "gamertag of the player to ban.",
|
||||
value: "gamertag",
|
||||
type: CommandOptions.String,
|
||||
required: true,
|
||||
}]
|
||||
}, {
|
||||
name: "unban-player",
|
||||
description: "Unban a player from the DayZ server",
|
||||
value: "unban-player",
|
||||
type: CommandOptions.SubCommand,
|
||||
options: [{
|
||||
name: "gamertag",
|
||||
description: "gamertag of the player to unban.",
|
||||
value: "gamertag",
|
||||
type: CommandOptions.String,
|
||||
required: true,
|
||||
}]
|
||||
},
|
||||
{
|
||||
name: "restart",
|
||||
description: "Restart the DayZ Server",
|
||||
value: "restart",
|
||||
type: CommandOptions.SubCommand,
|
||||
}, {
|
||||
name: "auto-restart",
|
||||
description: "Enable/Disable periodic server checks and restart if stopped.",
|
||||
value: "auto-restart",
|
||||
type: CommandOptions.SubCommand,
|
||||
}, {
|
||||
name: "disable-base-damage",
|
||||
description: "Disable/Enable base damage",
|
||||
value: "disable-base-damage",
|
||||
type: CommandOptions.SubCommand,
|
||||
options: [{
|
||||
name: "preference",
|
||||
description: "DisableBaseDamage Preference",
|
||||
value: true,
|
||||
type: CommandOptions.Boolean,
|
||||
required: true,
|
||||
}]
|
||||
}],
|
||||
SlashCommand: {
|
||||
/**
|
||||
*
|
||||
* @param {require("../structures/DayzRBot")} client
|
||||
* @param {import("discord.js").Message} message
|
||||
* @param {string[]} args
|
||||
* @param {*} param3
|
||||
*/
|
||||
run: async (client, interaction, args, { GuildDB }) => {
|
||||
|
||||
const permissions = bitfieldCalculator.permissions(interaction.member.permissions);
|
||||
let canUseCommand = false;
|
||||
|
||||
if (permissions.includes("MANAGE_GUILD")) canUseCommand = true;
|
||||
if (GuildDB.hasBotAdmin && interaction.member.roles.filter(e => GuildDB.botAdminRoles.indexOf(e) !== -1).length > 0) canUseCommand = true;
|
||||
if (!canUseCommand) return interaction.send({ content: 'You don\'t have the permissions to use this command.' });
|
||||
|
||||
if (args[0].name == 'ban-player') {
|
||||
|
||||
let data = await BanPlayer(client, args[0].options[0].value);
|
||||
|
||||
if (data == 1) {
|
||||
let failed = new EmbedBuilder()
|
||||
.setColor(client.config.Colors.Red)
|
||||
.setDescription(`Failed to ban **${args[0].options[0].value}**. Check internal logs for an error.`);
|
||||
|
||||
return interaciton.send({ embeds: [failed] });
|
||||
}
|
||||
|
||||
let banned = new EmbedBuilder()
|
||||
.setColor(client.config.Colors.Default)
|
||||
.setDescription(`Successfully **banned** **${args[0].options[0].value}** from the DayZ Server`);
|
||||
|
||||
return interaction.send({ embeds: [banned] });
|
||||
|
||||
} else if (args[0].name == 'unban-player') {
|
||||
|
||||
let data = UnbanPlayer(client, args[0].options[0].value);
|
||||
|
||||
if (data == 1) {
|
||||
let failed = new EmbedBuilder()
|
||||
.setColor(client.config.Colors.Red)
|
||||
.setDescription(`Failed to ban **${args[0].options[0].value}**. Check internal logs for an error.`);
|
||||
|
||||
return interaction.send({ embeds: [failed] });
|
||||
}
|
||||
|
||||
let banned = new EmbedBuilder()
|
||||
.setColor(client.config.Colors.Default)
|
||||
.setDescription(`Successfully **unbanned** **${args[0].options[0].value}** from the DayZ Server`);
|
||||
|
||||
return interaction.send({ embeds: [banned] });
|
||||
|
||||
} else if (args[0].name == "restart") {
|
||||
// Write optional "restart_message" to set in the Nitrado server logs and send a notice "message" to your server community.
|
||||
restart_message = 'Server being restarted by an admin.';
|
||||
message = 'The server was restarted by an admin!';
|
||||
|
||||
RestartServer(client, restart_message, message);
|
||||
return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription('The server will restart shortly.')], flags: (1 << 6) });
|
||||
|
||||
} else if (args[0].name == "auto-restart") {
|
||||
msg = 'Auto server restart periodic check enabled.';
|
||||
pref = 0;
|
||||
|
||||
// Enable/Disable a 10min periodic server status check.
|
||||
if (!client.arIntervalId) {
|
||||
client.arIntervalId = setInterval(CheckServerStatus, client.arInterval, client);
|
||||
client.log('Enabled and starting periodic Nitrado server status check.');
|
||||
pref = 1;
|
||||
} else {
|
||||
msg = 'Auto server restart periodic check disabled.'
|
||||
clearInterval(client.arIntervalId);
|
||||
client.arIntervalId = 0;
|
||||
client.log('Disabled periodic Nitrado server status check.');
|
||||
}
|
||||
|
||||
// Update DB preference
|
||||
client.dbo.collection("guilds").updateOne({ "server.serverID": GuildDB.serverID }, {
|
||||
$set: {
|
||||
"server.autoRestart": pref
|
||||
}
|
||||
}, function (err, res) {
|
||||
if (err) return client.sendInternalError(interaction, err);
|
||||
});
|
||||
|
||||
return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(msg)], flags: (1 << 6) });
|
||||
} else if (args[0].name == 'disable-base-damage') {
|
||||
const preference = args[0].options[0].value;
|
||||
await interaction.deferReply({ flags: (1 << 6) });
|
||||
|
||||
const toggle = await DisableBaseDamage(client, preference);
|
||||
|
||||
if (toggle == 1) return interaction.editReply({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Red).setDescription('Failed to set **disableBaseDamage**, try again later.')], flags: (1 << 6) });
|
||||
return interaction.editReply({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Green).setDescription(`Successfully set **disableBaseDamage** to ${preference}.\nRestart the DayZ server to apply these changes.`)], flags: (1 << 6) });
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Interactions: {}
|
||||
}
|
||||
Reference in new issue
Block a user