refactor/project structure
This commit is contained in:
35 files changed
+192
-167
No files matched your search
+16
-27
@@ -32,7 +32,7 @@ import { MongoClient } from "mongodb";
|
|||||||
import { Colors, Config } from "./config/config";
|
import { Colors, Config } from "./config/config";
|
||||||
|
|
||||||
// Utilities
|
// Utilities
|
||||||
import Logger from "./util/Logger";
|
import Logger from "./services/Logger";
|
||||||
import { decrypt } from "./util/Cryptic";
|
import { decrypt } from "./util/Cryptic";
|
||||||
import {
|
import {
|
||||||
DownloadNitradoFile,
|
DownloadNitradoFile,
|
||||||
@@ -40,12 +40,13 @@ import {
|
|||||||
FetchServerSettings,
|
FetchServerSettings,
|
||||||
PostServerSettings,
|
PostServerSettings,
|
||||||
NitradoCredentialStatus,
|
NitradoCredentialStatus,
|
||||||
} from "./util/NitradoAPI";
|
} from "./services/NitradoAPI";
|
||||||
import { RegisterGlobalCommands, RegisterGuildCommands } from "./util/RegisterSlashCommands";
|
import { RegisterGlobalCommands, RegisterGuildCommands } from "./services/RegisterSlashCommands";
|
||||||
import { HandlePlayerLogs, HandleActivePlayersList } from "./util/LogsHandler";
|
import { HandlePlayerLogs, HandleActivePlayersList } from "./handlers/LogsHandler";
|
||||||
import { HandleKillfeed, UpdateLastDeathDate } from "./util/KillfeedHandler";
|
import { HandleKillfeed, UpdateLastDeathDate } from "./handlers/KillfeedHandler";
|
||||||
import { HandleExpiredUAVs, HandleEvents, PlaceFireplaceInAlarm } from "./util/AlarmsHandler";
|
import { HandleExpiredUAVs, HandleEvents, PlaceFireplaceInAlarm } from "./handlers/AlarmsHandler";
|
||||||
import { GetWebhook, WebhookSend } from "./util/WebhookHandler";
|
import { GetWebhook, WebhookSend } from "./services/WebhookService";
|
||||||
|
import isDefined from "./util/Validation";
|
||||||
|
|
||||||
// Database
|
// Database
|
||||||
import { Player, UpdatePlayer, getDefaultPlayer } from "./database/player";
|
import { Player, UpdatePlayer, getDefaultPlayer } from "./database/player";
|
||||||
@@ -223,7 +224,7 @@ export default class DayZR extends Client
|
|||||||
|
|
||||||
let GuildDB: GuildConfig = await GetGuild(this, interaction.guildId);
|
let GuildDB: GuildConfig = await GetGuild(this, interaction.guildId);
|
||||||
|
|
||||||
if (this.exists(GuildDB.Nitrado) && this.exists(GuildDB.Nitrado.Auth))
|
if (isDefined(GuildDB.Nitrado) && isDefined(GuildDB.Nitrado.Auth))
|
||||||
{
|
{
|
||||||
GuildDB.Nitrado.Auth = decrypt(
|
GuildDB.Nitrado.Auth = decrypt(
|
||||||
GuildDB.Nitrado.Auth,
|
GuildDB.Nitrado.Auth,
|
||||||
@@ -545,16 +546,16 @@ export default class DayZR extends Client
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Skip this player if the player does not exist.
|
// Skip this player if the player does not exist.
|
||||||
if (!this.exists(info.player) || !this.exists(info.playerID)) continue;
|
if (!isDefined(info.player) || !isDefined(info.playerID)) continue;
|
||||||
|
|
||||||
lastDetectedTime = this.getDateEST(info.time);
|
lastDetectedTime = this.getDateEST(info.time);
|
||||||
|
|
||||||
let playerStat: Player = await this.dbo.collection("players").findOne({ "playerID": info.playerID });
|
let playerStat: Player = await this.dbo.collection("players").findOne({ "playerID": info.playerID });
|
||||||
if (!this.exists(playerStat)) playerStat = getDefaultPlayer(info.player, info.playerID, guild.Nitrado.ServerID);
|
if (!isDefined(playerStat)) playerStat = getDefaultPlayer(info.player, info.playerID, guild.Nitrado.ServerID);
|
||||||
|
|
||||||
// Skip this player if the lastDisconnectionDate time is later than the player log entry.
|
// Skip this player if the lastDisconnectionDate time is later than the player log entry.
|
||||||
if (!previouslyConnected.includes(playerStat) &&
|
if (!previouslyConnected.includes(playerStat) &&
|
||||||
this.exists(playerStat.lastDisconnectionDate) &&
|
isDefined(playerStat.lastDisconnectionDate) &&
|
||||||
playerStat.lastDisconnectionDate !== null &&
|
playerStat.lastDisconnectionDate !== null &&
|
||||||
playerStat.lastDisconnectionDate.getTime() > lastDetectedTime.getTime()
|
playerStat.lastDisconnectionDate.getTime() > lastDetectedTime.getTime()
|
||||||
) continue;
|
) continue;
|
||||||
@@ -649,7 +650,7 @@ export default class DayZR extends Client
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// Continue if no nitrado credentials
|
// Continue if no nitrado credentials
|
||||||
if (!c.exists(GuildDB.Nitrado)) return;
|
if (!isDefined(GuildDB.Nitrado)) return;
|
||||||
|
|
||||||
// Continue if these credentials are marked as failed
|
// Continue if these credentials are marked as failed
|
||||||
if (GuildDB.Nitrado.Status == NitradoCredentialStatus.FAILED) return;
|
if (GuildDB.Nitrado.Status == NitradoCredentialStatus.FAILED) return;
|
||||||
@@ -858,7 +859,7 @@ export default class DayZR extends Client
|
|||||||
for (let i = 0; i < guilds.length; i++)
|
for (let i = 0; i < guilds.length; i++)
|
||||||
{
|
{
|
||||||
// // Ignore guilds with no Nitrado configuration
|
// // Ignore guilds with no Nitrado configuration
|
||||||
if (!this.exists(guilds[i].Nitrado)) continue;
|
if (!isDefined(guilds[i].Nitrado)) continue;
|
||||||
|
|
||||||
if (guilds[i].server.autoRestart)
|
if (guilds[i].server.autoRestart)
|
||||||
{
|
{
|
||||||
@@ -909,18 +910,6 @@ export default class DayZR extends Client
|
|||||||
this.log(`[${guildId}] Initialized new Nitrado`);
|
this.log(`[${guildId}] Initialized new Nitrado`);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* exists simply ensures a given input is not
|
|
||||||
* null, undefined, an empty string or NaN.
|
|
||||||
*
|
|
||||||
* @param n to validate
|
|
||||||
* @returns if this object exists (boolean)
|
|
||||||
*/
|
|
||||||
public exists<T> (n: T | null | undefined | "" | number): n is T
|
|
||||||
{
|
|
||||||
return typeof n === "number" ? !isNaN(n) : n !== null && n !== undefined && n !== "";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* secondsToDhms converts a given number of seconds
|
* secondsToDhms converts a given number of seconds
|
||||||
* to its equivilent in days, hours, minutes and seconds.
|
* to its equivilent in days, hours, minutes and seconds.
|
||||||
@@ -967,7 +956,7 @@ export default class DayZR extends Client
|
|||||||
files.forEach((file) =>
|
files.forEach((file) =>
|
||||||
{
|
{
|
||||||
let cmd: Command = require(CommandsDir + "/" + file);
|
let cmd: Command = require(CommandsDir + "/" + file);
|
||||||
if (!this.exists(cmd.name) || !this.exists(cmd.description))
|
if (!isDefined(cmd.name) || !isDefined(cmd.description))
|
||||||
{
|
{
|
||||||
return this.error(
|
return this.error(
|
||||||
"Unable to load Command: " +
|
"Unable to load Command: " +
|
||||||
@@ -978,7 +967,7 @@ export default class DayZR extends Client
|
|||||||
|
|
||||||
this.commands.set(file.split(".")[0].toLowerCase(), cmd);
|
this.commands.set(file.split(".")[0].toLowerCase(), cmd);
|
||||||
|
|
||||||
if (this.exists(cmd.Interactions))
|
if (isDefined(cmd.Interactions))
|
||||||
{
|
{
|
||||||
for (let [interaction, handler] of Object.entries(cmd.Interactions))
|
for (let [interaction, handler] of Object.entries(cmd.Interactions))
|
||||||
{
|
{
|
||||||
|
|||||||
+15
-14
@@ -4,6 +4,7 @@ const bitfieldCalculator = require("discord-bitfield-calculator");
|
|||||||
const { Armbands } = require("../database/armbands.js");
|
const { Armbands } = require("../database/armbands.js");
|
||||||
const { createUser, addUser } = require("../database/user");
|
const { createUser, addUser } = require("../database/user");
|
||||||
const { UpdatePlayer } = require("../database/player");
|
const { UpdatePlayer } = require("../database/player");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "admin",
|
name: "admin",
|
||||||
@@ -134,7 +135,7 @@ module.exports = {
|
|||||||
|
|
||||||
if (args[0].name == "gamertag-link") {
|
if (args[0].name == "gamertag-link") {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -143,9 +144,9 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].options[1].value });
|
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].options[1].value });
|
||||||
if (!client.exists(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** This gamertag \` ${args[0].options[1].value} \` cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least \` 5 minutes \`.`)] });
|
if (!isDefined(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** This gamertag \` ${args[0].options[1].value} \` cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least \` 5 minutes \`.`)] });
|
||||||
|
|
||||||
if (client.exists(playerStat.discordID)) {
|
if (isDefined(playerStat.discordID)) {
|
||||||
const warnGTOverwrite = new EmbedBuilder()
|
const warnGTOverwrite = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription(`**Notice:**\n> The gamertag has previously been linked to <@${playerStat.discordID}>. Are you sure you would like to change this?`)
|
.setDescription(`**Notice:**\n> The gamertag has previously been linked to <@${playerStat.discordID}>. Are you sure you would like to change this?`)
|
||||||
@@ -170,12 +171,12 @@ module.exports = {
|
|||||||
await UpdatePlayer(client, playerStat, interaction);
|
await UpdatePlayer(client, playerStat, interaction);
|
||||||
|
|
||||||
let member = interaction.guild.members.cache.get(args[0].options[0].value);
|
let member = interaction.guild.members.cache.get(args[0].options[0].value);
|
||||||
if (client.exists(GuildDB.linkedGamertagRole)) {
|
if (isDefined(GuildDB.linkedGamertagRole)) {
|
||||||
let role = interaction.guild.roles.cache.get(GuildDB.linkedGamertagRole);
|
let role = interaction.guild.roles.cache.get(GuildDB.linkedGamertagRole);
|
||||||
member.roles.add(role);
|
member.roles.add(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client.exists(GuildDB.memberRole)) {
|
if (isDefined(GuildDB.memberRole)) {
|
||||||
let role = interaction.guild.roles.cache.get(GuildDB.memberRole);
|
let role = interaction.guild.roles.cache.get(GuildDB.memberRole);
|
||||||
member.roles.add(role);
|
member.roles.add(role);
|
||||||
}
|
}
|
||||||
@@ -188,7 +189,7 @@ module.exports = {
|
|||||||
|
|
||||||
} else if (args[0].name == "gamertag-unlink") {
|
} else if (args[0].name == "gamertag-unlink") {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -197,7 +198,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "discordID": args[0].options[0].value });
|
let playerStat = await client.dbo.collection("players").findOne({ "discordID": args[0].options[0].value });
|
||||||
if (!client.exists(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** <@${args[0].options[0].value}> has no gamertag linked.`)] });
|
if (!isDefined(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** <@${args[0].options[0].value}> has no gamertag linked.`)] });
|
||||||
|
|
||||||
const warnGTOverwrite = new EmbedBuilder()
|
const warnGTOverwrite = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
@@ -281,7 +282,7 @@ module.exports = {
|
|||||||
|
|
||||||
} else if (args[0].name == "bounty-clear") {
|
} else if (args[0].name == "bounty-clear") {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -290,7 +291,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].options[0].value });
|
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].options[0].value });
|
||||||
if (!client.exists(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Not Found** This player cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least ` 5 minutes `.")] });
|
if (!isDefined(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Not Found** This player cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least ` 5 minutes `.")] });
|
||||||
|
|
||||||
playerStat.bounties = [];
|
playerStat.bounties = [];
|
||||||
|
|
||||||
@@ -309,16 +310,16 @@ module.exports = {
|
|||||||
|
|
||||||
if (!banking) {
|
if (!banking) {
|
||||||
banking = await createUser(targetUserID, GuildDB.serverID, GuildDB.startingBalance, client)
|
banking = await createUser(targetUserID, GuildDB.serverID, GuildDB.startingBalance, client)
|
||||||
if (!client.exists(banking)) return client.sendInternalError(interaction, err);
|
if (!isDefined(banking)) return client.sendInternalError(interaction, err);
|
||||||
}
|
}
|
||||||
banking = banking.user;
|
banking = banking.user;
|
||||||
|
|
||||||
if (!client.exists(banking.guilds[GuildDB.serverID])) {
|
if (!isDefined(banking.guilds[GuildDB.serverID])) {
|
||||||
const success = addUser(banking.guilds, GuildDB.serverID, targetUserID, client, GuildDB.startingBalance);
|
const success = addUser(banking.guilds, GuildDB.serverID, targetUserID, client, GuildDB.startingBalance);
|
||||||
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!client.exists(banking.guilds[GuildDB.serverID].balance)) banking.guilds[GuildDB.serverID].balance = GuildDB.startingBalance;
|
if (!isDefined(banking.guilds[GuildDB.serverID].balance)) banking.guilds[GuildDB.serverID].balance = GuildDB.startingBalance;
|
||||||
|
|
||||||
const add = args[0].options[0].name == "add";
|
const add = args[0].options[0].name == "add";
|
||||||
let newBalance = add
|
let newBalance = add
|
||||||
@@ -354,12 +355,12 @@ module.exports = {
|
|||||||
await UpdatePlayer(client, playerStat);
|
await UpdatePlayer(client, playerStat);
|
||||||
|
|
||||||
let member = interaction.guild.members.cache.get(interaction.member.user.id);
|
let member = interaction.guild.members.cache.get(interaction.member.user.id);
|
||||||
if (client.exists(GuildDB.linkedGamertagRole)) {
|
if (isDefined(GuildDB.linkedGamertagRole)) {
|
||||||
let role = interaction.guild.roles.cache.get(GuildDB.linkedGamertagRole);
|
let role = interaction.guild.roles.cache.get(GuildDB.linkedGamertagRole);
|
||||||
member.roles.add(role);
|
member.roles.add(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client.exists(GuildDB.memberRole)) {
|
if (isDefined(GuildDB.memberRole)) {
|
||||||
let role = interaction.guild.roles.cache.get(GuildDB.memberRole);
|
let role = interaction.guild.roles.cache.get(GuildDB.memberRole);
|
||||||
member.roles.add(role);
|
member.roles.add(role);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, StringSelectMenuBuilder } = require("discord.js");
|
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, StringSelectMenuBuilder } = require("discord.js");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const bitfieldCalculator = require("discord-bitfield-calculator");
|
const bitfieldCalculator = require("discord-bitfield-calculator");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
const generateAlarmMenus = (alarms, customId, placeholder, description) => {
|
const generateAlarmMenus = (alarms, customId, placeholder, description) => {
|
||||||
let alarmComponents = [];
|
let alarmComponents = [];
|
||||||
@@ -237,7 +238,7 @@ module.exports = {
|
|||||||
if (GuildDB.hasBotAdmin && interaction.member.roles.filter(e => GuildDB.botAdminRoles.indexOf(e) !== -1).length > 0) 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 (!canUseCommand) return interaction.send({ content: "You don\"t have the permissions to use this command." });
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -259,8 +260,8 @@ module.exports = {
|
|||||||
role: args[0].options[5].value,
|
role: args[0].options[5].value,
|
||||||
ignoredPlayers: [],
|
ignoredPlayers: [],
|
||||||
rules: [],
|
rules: [],
|
||||||
empExempt: client.exists(args[0].options[6]) ? args[0].options[6].value : false,
|
empExempt: isDefined(args[0].options[6]) ? args[0].options[6].value : false,
|
||||||
showPlayerCoord: client.exists(args[0].options[7]) ? args[0].options[7].value : true,
|
showPlayerCoord: isDefined(args[0].options[7]) ? args[0].options[7].value : true,
|
||||||
disabled: false,
|
disabled: false,
|
||||||
empExpire: null,
|
empExpire: null,
|
||||||
};
|
};
|
||||||
@@ -451,7 +452,7 @@ module.exports = {
|
|||||||
let alarmIndex = GuildDB.alarms.indexOf(alarm);
|
let alarmIndex = GuildDB.alarms.indexOf(alarm);
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": interaction.customId.split("-")[2] });
|
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": interaction.customId.split("-")[2] });
|
||||||
if (!client.exists(playerStat)) return interaction.update({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Not Found** This player cannot be found, the gamertag may be incorrect or this player has not logged onto the server before.")], components: [] });
|
if (!isDefined(playerStat)) return interaction.update({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Not Found** This player cannot be found, the gamertag may be incorrect or this player has not logged onto the server before.")], components: [] });
|
||||||
|
|
||||||
let add = interaction.customId.split("-")[1] == "add";
|
let add = interaction.customId.split("-")[1] == "add";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder } = require("discord.js");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const { createUser, addUser } = require("../database/user");
|
const { createUser, addUser } = require("../database/user");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "bank",
|
name: "bank",
|
||||||
@@ -67,11 +68,11 @@ module.exports = {
|
|||||||
|
|
||||||
if (!banking) {
|
if (!banking) {
|
||||||
banking = await createUser(interaction.member.user.id, GuildDB.serverID, GuildDB.startingBalance, client)
|
banking = await createUser(interaction.member.user.id, GuildDB.serverID, GuildDB.startingBalance, client)
|
||||||
if (!client.exists(banking)) return client.sendInternalError(interaction, err);
|
if (!isDefined(banking)) return client.sendInternalError(interaction, err);
|
||||||
}
|
}
|
||||||
banking = banking.user;
|
banking = banking.user;
|
||||||
|
|
||||||
if (!client.exists(banking.guilds[GuildDB.serverID])) {
|
if (!isDefined(banking.guilds[GuildDB.serverID])) {
|
||||||
const success = addUser(banking.guilds, GuildDB.serverID, interaction.member.user.id, client, GuildDB.startingBalance);
|
const success = addUser(banking.guilds, GuildDB.serverID, interaction.member.user.id, client, GuildDB.startingBalance);
|
||||||
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
||||||
}
|
}
|
||||||
@@ -88,11 +89,11 @@ module.exports = {
|
|||||||
|
|
||||||
if (!targetUserBanking) {
|
if (!targetUserBanking) {
|
||||||
targetUserBanking = await createUser(targetUserID, GuildDB.serverID, GuildDB.startingBalance, client)
|
targetUserBanking = await createUser(targetUserID, GuildDB.serverID, GuildDB.startingBalance, client)
|
||||||
if (!client.exists(banking)) return client.sendInternalError(interaction, err);
|
if (!isDefined(banking)) return client.sendInternalError(interaction, err);
|
||||||
}
|
}
|
||||||
targetUserBanking = targetUserBanking.user;
|
targetUserBanking = targetUserBanking.user;
|
||||||
|
|
||||||
if (!client.exists(targetUserBanking.guilds[GuildDB.serverID])) {
|
if (!isDefined(targetUserBanking.guilds[GuildDB.serverID])) {
|
||||||
const success = addUser(banking.guilds, GuildDB.serverID, targetUserID, client, GuildDB.startingBalance);
|
const success = addUser(banking.guilds, GuildDB.serverID, targetUserID, client, GuildDB.startingBalance);
|
||||||
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
||||||
}
|
}
|
||||||
@@ -138,11 +139,11 @@ module.exports = {
|
|||||||
|
|
||||||
if (!targetUserBanking) {
|
if (!targetUserBanking) {
|
||||||
targetUserBanking = await createUser(targetUserID, GuildDB.serverID, GuildDB.startingBalance, client)
|
targetUserBanking = await createUser(targetUserID, GuildDB.serverID, GuildDB.startingBalance, client)
|
||||||
if (!client.exists(banking)) return client.sendInternalError(interaction, err);
|
if (!isDefined(banking)) return client.sendInternalError(interaction, err);
|
||||||
}
|
}
|
||||||
targetUserBanking = targetUserBanking.user;
|
targetUserBanking = targetUserBanking.user;
|
||||||
|
|
||||||
if (!client.exists(targetUserBanking.guilds[GuildDB.serverID])) {
|
if (!isDefined(targetUserBanking.guilds[GuildDB.serverID])) {
|
||||||
const success = addUser(banking.guilds, GuildDB.serverID, targetUserID, client, GuildDB.startingBalance);
|
const success = addUser(banking.guilds, GuildDB.serverID, targetUserID, client, GuildDB.startingBalance);
|
||||||
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ const { EmbedBuilder } = require("discord.js");
|
|||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const { createUser, addUser } = require("../database/user");
|
const { createUser, addUser } = require("../database/user");
|
||||||
const { UpdatePlayer } = require("../database/player");
|
const { UpdatePlayer } = require("../database/player");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "bounty",
|
name: "bounty",
|
||||||
@@ -59,7 +60,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -73,11 +74,11 @@ module.exports = {
|
|||||||
|
|
||||||
if (!banking) {
|
if (!banking) {
|
||||||
banking = await createUser(interaction.member.user.id, GuildDB.serverID, GuildDB.startingBalance, client)
|
banking = await createUser(interaction.member.user.id, GuildDB.serverID, GuildDB.startingBalance, client)
|
||||||
if (!client.exists(banking)) return client.sendInternalError(interaction, err);
|
if (!isDefined(banking)) return client.sendInternalError(interaction, err);
|
||||||
}
|
}
|
||||||
banking = banking.user;
|
banking = banking.user;
|
||||||
|
|
||||||
if (!client.exists(banking.guilds[GuildDB.serverID])) {
|
if (!isDefined(banking.guilds[GuildDB.serverID])) {
|
||||||
const success = addUser(banking.guilds, GuildDB.serverID, interaction.member.user.id, client, GuildDB.startingBalance);
|
const success = addUser(banking.guilds, GuildDB.serverID, interaction.member.user.id, client, GuildDB.startingBalance);
|
||||||
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
||||||
}
|
}
|
||||||
@@ -86,7 +87,7 @@ module.exports = {
|
|||||||
if (args[0].name == "set") {
|
if (args[0].name == "set") {
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].options[0].value });
|
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].options[0].value });
|
||||||
if (!client.exists(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Not Found** This player cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least ` 5 minutes `.")] });
|
if (!isDefined(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Not Found** This player cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least ` 5 minutes `.")] });
|
||||||
|
|
||||||
if (args[0].options[1].value > banking.guilds[GuildDB.serverID].balance) {
|
if (args[0].options[1].value > banking.guilds[GuildDB.serverID].balance) {
|
||||||
let nsf = new EmbedBuilder()
|
let nsf = new EmbedBuilder()
|
||||||
@@ -126,7 +127,7 @@ module.exports = {
|
|||||||
} else if (args[0].name == "pay") {
|
} else if (args[0].name == "pay") {
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "discordID": interaction.member.user.id });
|
let playerStat = await client.dbo.collection("players").findOne({ "discordID": interaction.member.user.id });
|
||||||
if (!client.exists(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Not Found** Your user ID could not be found, contact an Admin.")] });
|
if (!isDefined(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Not Found** Your user ID could not be found, contact an Admin.")] });
|
||||||
|
|
||||||
if (playerStat.bounties.length == 0) {
|
if (playerStat.bounties.length == 0) {
|
||||||
const noBounty = new EmbedBuilder()
|
const noBounty = new EmbedBuilder()
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
const { EmbedBuilder, } = require("discord.js");
|
const { EmbedBuilder, } = require("discord.js");
|
||||||
const { createUser, addUser } = require("../database/user");
|
const { createUser, addUser } = require("../database/user");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "collect-income",
|
name: "collect-income",
|
||||||
@@ -44,16 +45,16 @@ module.exports = {
|
|||||||
|
|
||||||
if (!banking) {
|
if (!banking) {
|
||||||
banking = await createUser(interaction.member.user.id, GuildDB.serverID, GuildDB.startingBalance, client)
|
banking = await createUser(interaction.member.user.id, GuildDB.serverID, GuildDB.startingBalance, client)
|
||||||
if (!client.exists(banking)) return client.sendInternalError(interaction, err);
|
if (!isDefined(banking)) return client.sendInternalError(interaction, err);
|
||||||
}
|
}
|
||||||
banking = banking.user;
|
banking = banking.user;
|
||||||
|
|
||||||
if (!client.exists(banking.guilds[GuildDB.serverID])) {
|
if (!isDefined(banking.guilds[GuildDB.serverID])) {
|
||||||
const success = addUser(banking.guilds, GuildDB.serverID, interaction.member.user.id, client, GuildDB.startingBalance);
|
const success = addUser(banking.guilds, GuildDB.serverID, interaction.member.user.id, client, GuildDB.startingBalance);
|
||||||
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!client.exists(banking.guilds[GuildDB.serverID].lastIncome)) banking.guilds[GuildDB.serverID].lastIncome = new Date("2000-01-01T00:00:00");
|
if (!isDefined(banking.guilds[GuildDB.serverID].lastIncome)) banking.guilds[GuildDB.serverID].lastIncome = new Date("2000-01-01T00:00:00");
|
||||||
|
|
||||||
let now = new Date();
|
let now = new Date();
|
||||||
let diff = (now - banking.guilds[GuildDB.serverID].lastIncome) / 1000;
|
let diff = (now - banking.guilds[GuildDB.serverID].lastIncome) / 1000;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder } = require("discord.js");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const { insertPVPstats } = require("../database/player");
|
const { insertPVPstats } = require("../database/player");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "compare-rating",
|
name: "compare-rating",
|
||||||
@@ -34,7 +35,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -56,8 +57,8 @@ module.exports = {
|
|||||||
if (gamertag) comp = leaderboard.find(s => s.gamertag == gamertag);
|
if (gamertag) comp = leaderboard.find(s => s.gamertag == gamertag);
|
||||||
let self = leaderboard.find(s => s.discordID == interaction.member.user.id);
|
let self = leaderboard.find(s => s.discordID == interaction.member.user.id);
|
||||||
|
|
||||||
if (!client.exists(comp)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** Unable to find any records with the gamertag or user provided.`)] });
|
if (!isDefined(comp)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** Unable to find any records with the gamertag or user provided.`)] });
|
||||||
if (!client.exists(self)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** You haven"t linked your gamertag and your stats cannot be found.`)] });
|
if (!isDefined(self)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** You haven"t linked your gamertag and your stats cannot be found.`)] });
|
||||||
|
|
||||||
let lbPosSelf = leaderboard.indexOf(self) + 1;
|
let lbPosSelf = leaderboard.indexOf(self) + 1;
|
||||||
let lbPosComp = leaderboard.indexOf(comp) + 1;
|
let lbPosComp = leaderboard.indexOf(comp) + 1;
|
||||||
@@ -69,8 +70,8 @@ module.exports = {
|
|||||||
let selfDataMax = Math.max(...selfData);
|
let selfDataMax = Math.max(...selfData);
|
||||||
let compDataMax = Math.max(...compData);
|
let compDataMax = Math.max(...compData);
|
||||||
|
|
||||||
if (!client.exists(self.highestCombatRating) || self.highestCombatRating < selfDataMax) self.highestCombatRating = selfDataMax;
|
if (!isDefined(self.highestCombatRating) || self.highestCombatRating < selfDataMax) self.highestCombatRating = selfDataMax;
|
||||||
if (!client.exists(comp.highestCombatRating) || comp.highestCombatRating < compDataMax) comp.highestCombatRating = compDataMax;
|
if (!isDefined(comp.highestCombatRating) || comp.highestCombatRating < compDataMax) comp.highestCombatRating = compDataMax;
|
||||||
|
|
||||||
let tag = comp.discordID != "" ? `<@${comp.discordID}>` : comp.gamertag;
|
let tag = comp.discordID != "" ? `<@${comp.discordID}>` : comp.gamertag;
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("
|
|||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const bitfieldCalculator = require("discord-bitfield-calculator");
|
const bitfieldCalculator = require("discord-bitfield-calculator");
|
||||||
const { getDefaultSettings } = require("../database/guild");
|
const { getDefaultSettings } = require("../database/guild");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "config",
|
name: "config",
|
||||||
@@ -712,12 +713,12 @@ module.exports = {
|
|||||||
// Role / channel display
|
// Role / channel display
|
||||||
const NONE = `${w}${m}none${w}`;
|
const NONE = `${w}${m}none${w}`;
|
||||||
const channelsInfo = GuildDB.customChannelStatus ? "\`</channels:1225869620813107246>\` to view" : NONE;
|
const channelsInfo = GuildDB.customChannelStatus ? "\`</channels:1225869620813107246>\` to view" : NONE;
|
||||||
const killfeedChannel = client.exists(GuildDB.killfeedChannel) ? `<#${GuildDB.killfeedChannel}>` : NONE;
|
const killfeedChannel = isDefined(GuildDB.killfeedChannel) ? `<#${GuildDB.killfeedChannel}>` : NONE;
|
||||||
const connectionLogs = client.exists(GuildDB.connectionLogsChannel) ? `<#${GuildDB.connectionLogsChannel}>` : NONE;
|
const connectionLogs = isDefined(GuildDB.connectionLogsChannel) ? `<#${GuildDB.connectionLogsChannel}>` : NONE;
|
||||||
const activePlayers = client.exists(GuildDB.activePlayersChannel) ? `<#${GuildDB.activePlayersChannel}>` : NONE;
|
const activePlayers = isDefined(GuildDB.activePlayersChannel) ? `<#${GuildDB.activePlayersChannel}>` : NONE;
|
||||||
const welcomeChannel = client.exists(GuildDB.welcomeChannel) ? `<#${GuildDB.welcomeChannel}>` : NONE;
|
const welcomeChannel = isDefined(GuildDB.welcomeChannel) ? `<#${GuildDB.welcomeChannel}>` : NONE;
|
||||||
const linkedGTRole = client.exists(GuildDB.linkedGamertagRole) ? `<@&${GuildDB.linkedGamertagRole}>` : NONE;
|
const linkedGTRole = isDefined(GuildDB.linkedGamertagRole) ? `<@&${GuildDB.linkedGamertagRole}>` : NONE;
|
||||||
const memberRole = client.exists(GuildDB.memberRole) ? `<@&${GuildDB.memberRole}>` : NONE;
|
const memberRole = isDefined(GuildDB.memberRole) ? `<@&${GuildDB.memberRole}>` : NONE;
|
||||||
|
|
||||||
// value display
|
// value display
|
||||||
const incomeLimiter = `${GuildDB.incomeLimiter} hours`;
|
const incomeLimiter = `${GuildDB.incomeLimiter} hours`;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
const { EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder } = require("discord.js");
|
const { EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder } = require("discord.js");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const bitfieldCalculator = require("discord-bitfield-calculator");
|
const bitfieldCalculator = require("discord-bitfield-calculator");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "event",
|
name: "event",
|
||||||
@@ -72,7 +73,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -92,7 +93,7 @@ module.exports = {
|
|||||||
if (args[0].name == "player-track") {
|
if (args[0].name == "player-track") {
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].options[0].value });
|
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].options[0].value });
|
||||||
if (!client.exists(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** This gamertag \` ${args[0].options[0].value} \` cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least \` 5 minutes \`.`)] });
|
if (!isDefined(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** This gamertag \` ${args[0].options[0].value} \` cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least \` 5 minutes \`.`)] });
|
||||||
|
|
||||||
let event = {
|
let event = {
|
||||||
type: args[0].name,
|
type: args[0].name,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js");
|
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const { UpdatePlayer } = require("../database/player");
|
const { UpdatePlayer } = require("../database/player");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "gamertag-link",
|
name: "gamertag-link",
|
||||||
@@ -29,7 +30,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -38,9 +39,9 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].value });
|
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].value });
|
||||||
if (!client.exists(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** This gamertag \` ${args[0].value} \` cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least \` 5 minutes \`.`)] });
|
if (!isDefined(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** This gamertag \` ${args[0].value} \` cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least \` 5 minutes \`.`)] });
|
||||||
|
|
||||||
if (client.exists(playerStat.discordID)) {
|
if (isDefined(playerStat.discordID)) {
|
||||||
const warnGTOverwrite = new EmbedBuilder()
|
const warnGTOverwrite = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription(`**Notice:**\n> The gamertag has previously been linked to <@${playerStat.discordID}>. Are you sure you would like to change this?`)
|
.setDescription(`**Notice:**\n> The gamertag has previously been linked to <@${playerStat.discordID}>. Are you sure you would like to change this?`)
|
||||||
@@ -65,12 +66,12 @@ module.exports = {
|
|||||||
await UpdatePlayer(client, playerStat, interaction);
|
await UpdatePlayer(client, playerStat, interaction);
|
||||||
|
|
||||||
let member = interaction.guild.members.cache.get(interaction.member.user.id);
|
let member = interaction.guild.members.cache.get(interaction.member.user.id);
|
||||||
if (client.exists(GuildDB.linkedGamertagRole)) {
|
if (isDefined(GuildDB.linkedGamertagRole)) {
|
||||||
let role = interaction.guild.roles.cache.get(GuildDB.linkedGamertagRole);
|
let role = interaction.guild.roles.cache.get(GuildDB.linkedGamertagRole);
|
||||||
member.roles.add(role);
|
member.roles.add(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client.exists(GuildDB.memberRole)) {
|
if (isDefined(GuildDB.memberRole)) {
|
||||||
let role = interaction.guild.roles.cache.get(GuildDB.memberRole);
|
let role = interaction.guild.roles.cache.get(GuildDB.memberRole);
|
||||||
member.roles.add(role);
|
member.roles.add(role);
|
||||||
}
|
}
|
||||||
@@ -98,12 +99,12 @@ module.exports = {
|
|||||||
await UpdatePlayer(client, playerStat, interaction);
|
await UpdatePlayer(client, playerStat, interaction);
|
||||||
|
|
||||||
let member = interaction.guild.members.cache.get(interaction.member.user.id);
|
let member = interaction.guild.members.cache.get(interaction.member.user.id);
|
||||||
if (client.exists(GuildDB.linkedGamertagRole)) {
|
if (isDefined(GuildDB.linkedGamertagRole)) {
|
||||||
let role = interaction.guild.roles.cache.get(GuildDB.linkedGamertagRole);
|
let role = interaction.guild.roles.cache.get(GuildDB.linkedGamertagRole);
|
||||||
member.roles.add(role);
|
member.roles.add(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client.exists(GuildDB.memberRole)) {
|
if (isDefined(GuildDB.memberRole)) {
|
||||||
let role = interaction.guild.roles.cache.get(GuildDB.memberRole);
|
let role = interaction.guild.roles.cache.get(GuildDB.memberRole);
|
||||||
member.roles.add(role);
|
member.roles.add(role);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js");
|
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js");
|
||||||
const { UpdatePlayer } = require("../database/player");
|
const { UpdatePlayer } = require("../database/player");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "gamertag-unlink",
|
name: "gamertag-unlink",
|
||||||
@@ -21,7 +22,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -30,7 +31,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "discordID": interaction.member.user.id });
|
let playerStat = await client.dbo.collection("players").findOne({ "discordID": interaction.member.user.id });
|
||||||
if (!client.exists(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**No Gamertag Linked** It Appears your don"t have a gamertag linked to your account.`)] });
|
if (!isDefined(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**No Gamertag Linked** It Appears your don"t have a gamertag linked to your account.`)] });
|
||||||
|
|
||||||
const warnGTOverwrite = new EmbedBuilder()
|
const warnGTOverwrite = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder } = require("discord.js");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "leaderboard",
|
name: "leaderboard",
|
||||||
@@ -53,7 +54,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder } = require("discord.js");
|
||||||
const { nearest } = require("../database/destinations");
|
const { nearest } = require("../database/destinations");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "location",
|
name: "location",
|
||||||
@@ -21,7 +22,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth) || !client.exists(GuildDB.Nitrado.Mission)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth) || !isDefined(GuildDB.Nitrado.Mission)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -30,8 +31,8 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "discordID": interaction.member.user.id });
|
let playerStat = await client.dbo.collection("players").findOne({ "discordID": interaction.member.user.id });
|
||||||
if (!client.exists(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** You haven"t linked your gamertag and are unable to use this command.`)], flags: (1 << 6) });
|
if (!isDefined(playerStat)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** You haven"t linked your gamertag and are unable to use this command.`)], flags: (1 << 6) });
|
||||||
if (!client.exists(playerStat.time)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** There is no location saved to your gamertag yet. Make sure you"ve logged into the server for more than **5 minutes.**`)], flags: (1 << 6) });
|
if (!isDefined(playerStat.time)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** There is no location saved to your gamertag yet. Make sure you"ve logged into the server for more than **5 minutes.**`)], flags: (1 << 6) });
|
||||||
|
|
||||||
console.log(true);
|
console.log(true);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder } = require("discord.js");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "lookup",
|
name: "lookup",
|
||||||
@@ -46,7 +47,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -59,7 +60,7 @@ module.exports = {
|
|||||||
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].options[0].value });
|
let playerStat = await client.dbo.collection("players").findOne({ "gamertag": args[0].options[0].value });
|
||||||
if (playerStat == undefined) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** This gamertag \` ${args[0].options[0].value} \` cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least \` 5 minutes \`.`)] });
|
if (playerStat == undefined) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** This gamertag \` ${args[0].options[0].value} \` cannot be found, the gamertag may be incorrect or this player has not logged onto the server before for at least \` 5 minutes \`.`)] });
|
||||||
|
|
||||||
if (client.exists(playerStat.discordID)) {
|
if (isDefined(playerStat.discordID)) {
|
||||||
const found = new EmbedBuilder()
|
const found = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription(`**Record Found**\n> The gamertag \` ${playerStat.gamertag} \` is currently linked to <@${playerStat.discordID}>.`)
|
.setDescription(`**Record Found**\n> The gamertag \` ${playerStat.gamertag} \` is currently linked to <@${playerStat.discordID}>.`)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
const { FetchServerSettings } = require("../util/NitradoAPI");
|
const { FetchServerSettings } = require("../services/NitradoAPI");
|
||||||
const { Missions } = require("../database/destinations");
|
const { Missions } = require("../database/destinations");
|
||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder } = require("discord.js");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "player-list",
|
name: "player-list",
|
||||||
@@ -23,7 +24,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }, start) => {
|
run: async (client, interaction, args, { GuildDB }, start) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder } = require("discord.js");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const { insertPVPstats } = require("../database/player");
|
const { insertPVPstats } = require("../database/player");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "player-stats",
|
name: "player-stats",
|
||||||
@@ -57,7 +58,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }, start) => {
|
run: async (client, interaction, args, { GuildDB }, start) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -84,7 +85,7 @@ module.exports = {
|
|||||||
if (gamertag) query = leaderboard.find(u => u.user.userID == playerStat.discordID); // Searching by gamertag
|
if (gamertag) query = leaderboard.find(u => u.user.userID == playerStat.discordID); // Searching by gamertag
|
||||||
if (self) query = leaderboard.find(u => u.user.userID == interaction.member.user.id); // Searching for self
|
if (self) query = leaderboard.find(u => u.user.userID == interaction.member.user.id); // Searching for self
|
||||||
|
|
||||||
if (!client.exists(query)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** Unable to find any records with the gamertag or user provided.`)] });
|
if (!isDefined(query)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** Unable to find any records with the gamertag or user provided.`)] });
|
||||||
leaderboardPos = leaderboard.indexOf(query);
|
leaderboardPos = leaderboard.indexOf(query);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -97,7 +98,7 @@ module.exports = {
|
|||||||
if (gamertag) query = leaderboard.find(s => s.gamertag == gamertag); // Searching by gamertag
|
if (gamertag) query = leaderboard.find(s => s.gamertag == gamertag); // Searching by gamertag
|
||||||
if (self) query = leaderboard.find(s => s.discordID == interaction.member.user.id); // Searching for self
|
if (self) query = leaderboard.find(s => s.discordID == interaction.member.user.id); // Searching for self
|
||||||
|
|
||||||
if (!client.exists(query)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** Unable to find any records with the gamertag or user provided.`)] });
|
if (!isDefined(query)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** Unable to find any records with the gamertag or user provided.`)] });
|
||||||
leaderboardPos = leaderboard.indexOf(query);
|
leaderboardPos = leaderboard.indexOf(query);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -142,7 +143,7 @@ module.exports = {
|
|||||||
|
|
||||||
statsEmbed.addFields({ name: "Leaderboard Position", value: `# ${leaderboardPos}`, inline: true });
|
statsEmbed.addFields({ name: "Leaderboard Position", value: `# ${leaderboardPos}`, inline: true });
|
||||||
|
|
||||||
if ((category == "shotsLanded" || category == "timesShot") && !client.exists(query.shotsLanded)) query = insertPVPstats(query);
|
if ((category == "shotsLanded" || category == "timesShot") && !isDefined(query.shotsLanded)) query = insertPVPstats(query);
|
||||||
|
|
||||||
if (category == "totalSessionTime") {
|
if (category == "totalSessionTime") {
|
||||||
statsEmbed.addFields(
|
statsEmbed.addFields(
|
||||||
@@ -242,8 +243,8 @@ module.exports = {
|
|||||||
|
|
||||||
let dataMax = Math.max(...query.combatRatingHistory);
|
let dataMax = Math.max(...query.combatRatingHistory);
|
||||||
let dataMin = Math.min(...query.combatRatingHistory);
|
let dataMin = Math.min(...query.combatRatingHistory);
|
||||||
if (!client.exists(query.highestCombatRating) || query.highestCombatRating < dataMax) query.highestCombatRating = dataMax;
|
if (!isDefined(query.highestCombatRating) || query.highestCombatRating < dataMax) query.highestCombatRating = dataMax;
|
||||||
if (!client.exists(query.lowestCombatRating) || query.lowestCombatRating > dataMin) query.lowestCombatRating = dataMin;
|
if (!isDefined(query.lowestCombatRating) || query.lowestCombatRating > dataMin) query.lowestCombatRating = dataMin;
|
||||||
|
|
||||||
statsEmbed.addFields(
|
statsEmbed.addFields(
|
||||||
{ name: "Combat Rating", value: `${query.combatRating}`, inline: true },
|
{ name: "Combat Rating", value: `${query.combatRating}`, inline: true },
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
const { EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder } = require("discord.js");
|
const { EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder } = require("discord.js");
|
||||||
const { createUser, addUser } = require("../database/user");
|
const { createUser, addUser } = require("../database/user");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "purchase-emp",
|
name: "purchase-emp",
|
||||||
@@ -33,7 +34,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -41,18 +42,18 @@ module.exports = {
|
|||||||
return interaction.send({ embeds: [warnNitradoNotInitialized], flags: (1 << 6) });
|
return interaction.send({ embeds: [warnNitradoNotInitialized], flags: (1 << 6) });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client.exists(GuildDB.purchaseEMP) && !GuildDB.purchaseEMP) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Notice:** The admins have disabled this feature")] });
|
if (isDefined(GuildDB.purchaseEMP) && !GuildDB.purchaseEMP) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Notice:** The admins have disabled this feature")] });
|
||||||
|
|
||||||
const duration = args[0].value;
|
const duration = args[0].value;
|
||||||
let banking = await client.dbo.collection("users").findOne({ "user.userID": interaction.member.user.id }).then(banking => banking);
|
let banking = await client.dbo.collection("users").findOne({ "user.userID": interaction.member.user.id }).then(banking => banking);
|
||||||
|
|
||||||
if (!banking) {
|
if (!banking) {
|
||||||
banking = await createUser(interaction.member.user.id, GuildDB.serverID, GuildDB.startingBalance, client)
|
banking = await createUser(interaction.member.user.id, GuildDB.serverID, GuildDB.startingBalance, client)
|
||||||
if (!client.exists(banking)) return client.sendInternalError(interaction, err);
|
if (!isDefined(banking)) return client.sendInternalError(interaction, err);
|
||||||
}
|
}
|
||||||
banking = banking.user;
|
banking = banking.user;
|
||||||
|
|
||||||
if (!client.exists(banking.guilds[GuildDB.serverID])) {
|
if (!isDefined(banking.guilds[GuildDB.serverID])) {
|
||||||
const success = addUser(banking.guilds, GuildDB.serverID, interaction.member.user.id, client, GuildDB.startingBalance);
|
const success = addUser(banking.guilds, GuildDB.serverID, interaction.member.user.id, client, GuildDB.startingBalance);
|
||||||
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder } = require("discord.js");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const { createUser, addUser } = require("../database/user")
|
const { createUser, addUser } = require("../database/user");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "purchase-uav",
|
name: "purchase-uav",
|
||||||
@@ -40,7 +41,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -48,17 +49,17 @@ module.exports = {
|
|||||||
return interaction.send({ embeds: [warnNitradoNotInitialized], flags: (1 << 6) });
|
return interaction.send({ embeds: [warnNitradoNotInitialized], flags: (1 << 6) });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client.exists(GuildDB.purchaseUAV) && !GuildDB.purchaseUAV) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Notice:** The admins have disabled this feature")] });
|
if (isDefined(GuildDB.purchaseUAV) && !GuildDB.purchaseUAV) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription("**Notice:** The admins have disabled this feature")] });
|
||||||
|
|
||||||
let banking = await client.dbo.collection("users").findOne({ "user.userID": interaction.member.user.id }).then(banking => banking);
|
let banking = await client.dbo.collection("users").findOne({ "user.userID": interaction.member.user.id }).then(banking => banking);
|
||||||
|
|
||||||
if (!banking) {
|
if (!banking) {
|
||||||
banking = await createUser(interaction.member.user.id, GuildDB.serverID, GuildDB.startingBalance, client)
|
banking = await createUser(interaction.member.user.id, GuildDB.serverID, GuildDB.startingBalance, client)
|
||||||
if (!client.exists(banking)) return client.sendInternalError(interaction, err);
|
if (!isDefined(banking)) return client.sendInternalError(interaction, err);
|
||||||
}
|
}
|
||||||
banking = banking.user;
|
banking = banking.user;
|
||||||
|
|
||||||
if (!client.exists(banking.guilds[GuildDB.serverID])) {
|
if (!isDefined(banking.guilds[GuildDB.serverID])) {
|
||||||
const success = addUser(banking.guilds, GuildDB.serverID, interaction.member.user.id, client, GuildDB.startingBalance);
|
const success = addUser(banking.guilds, GuildDB.serverID, interaction.member.user.id, client, GuildDB.startingBalance);
|
||||||
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("
|
|||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const { addUser } = require("../database/user");
|
const { addUser } = require("../database/user");
|
||||||
const bitfieldCalculator = require("discord-bitfield-calculator");
|
const bitfieldCalculator = require("discord-bitfield-calculator");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "reset",
|
name: "reset",
|
||||||
@@ -33,7 +34,7 @@ module.exports = {
|
|||||||
let canUseCommand = false;
|
let canUseCommand = false;
|
||||||
|
|
||||||
if (permissions.includes("MANAGE_GUILD")) canUseCommand = true;
|
if (permissions.includes("MANAGE_GUILD")) canUseCommand = true;
|
||||||
if (client.exists(GuildDB.botAdmin) && interaction.member.roles.includes(GuildDB.botAdmin)) canUseCommand = true;
|
if (isDefined(GuildDB.botAdmin) && interaction.member.roles.includes(GuildDB.botAdmin)) canUseCommand = true;
|
||||||
if (!canUseCommand) return interaction.send({ content: "You don\"t have the permissions to use this command." });
|
if (!canUseCommand) return interaction.send({ content: "You don\"t have the permissions to use this command." });
|
||||||
|
|
||||||
const targetUserID = args[0].value.replace("<@!", "").replace(">", "");
|
const targetUserID = args[0].value.replace("<@!", "").replace(">", "");
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, ModalBuilder, TextInputBuilder, TextInputStyle } = require("discord.js");
|
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, ModalBuilder, TextInputBuilder, TextInputStyle } = require("discord.js");
|
||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const bitfieldCalculator = require("discord-bitfield-calculator");
|
const bitfieldCalculator = require("discord-bitfield-calculator");
|
||||||
const { BanPlayer, UnbanPlayer, RestartServer, CheckServerStatus, DisableBaseDamage, DisableContainerDamage, NitradoCredentialStatus } = require("../util/NitradoAPI");
|
const { BanPlayer, UnbanPlayer, RestartServer, CheckServerStatus, DisableBaseDamage, DisableContainerDamage, NitradoCredentialStatus } = require("../services/NitradoAPI");
|
||||||
const { encrypt, decrypt } = require("../util/Cryptic");
|
const { encrypt, decrypt } = require("../util/Cryptic");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "server",
|
name: "server",
|
||||||
@@ -117,7 +118,7 @@ module.exports = {
|
|||||||
|
|
||||||
if (args[0].name == "initialize") {
|
if (args[0].name == "initialize") {
|
||||||
|
|
||||||
if (client.exists(GuildDB.Nitrado)) {
|
if (isDefined(GuildDB.Nitrado)) {
|
||||||
const prompt = new EmbedBuilder()
|
const prompt = new EmbedBuilder()
|
||||||
.setTitle(`Nitrado Server Information Already Configured!`)
|
.setTitle(`Nitrado Server Information Already Configured!`)
|
||||||
.setDescription("**Notice:** This will overwrite your previously configured Nitrado Server Information")
|
.setDescription("**Notice:** This will overwrite your previously configured Nitrado Server Information")
|
||||||
@@ -190,7 +191,7 @@ module.exports = {
|
|||||||
return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) });
|
return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) });
|
||||||
}
|
}
|
||||||
|
|
||||||
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 (!isDefined(GuildDB.Nitrado) || !isDefined(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 == "credentials-status") {
|
if (args[0].name == "credentials-status") {
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ const { EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder } = require("dis
|
|||||||
const { ApplicationCommandOptionType } = require("discord.js");
|
const { ApplicationCommandOptionType } = require("discord.js");
|
||||||
const { weapons } = require("../database/weapons");
|
const { weapons } = require("../database/weapons");
|
||||||
const { insertPVPstats, createWeaponStats } = require("../database/player");
|
const { insertPVPstats, createWeaponStats } = require("../database/player");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "weapon-stats",
|
name: "weapon-stats",
|
||||||
@@ -54,7 +55,7 @@ module.exports = {
|
|||||||
*/
|
*/
|
||||||
run: async (client, interaction, args, { GuildDB }) => {
|
run: async (client, interaction, args, { GuildDB }) => {
|
||||||
|
|
||||||
if (!client.exists(GuildDB.Nitrado) || !client.exists(GuildDB.Nitrado.ServerID) || !client.exists(GuildDB.Nitrado.UserID) || !client.exists(GuildDB.Nitrado.Auth)) {
|
if (!isDefined(GuildDB.Nitrado) || !isDefined(GuildDB.Nitrado.ServerID) || !isDefined(GuildDB.Nitrado.UserID) || !isDefined(GuildDB.Nitrado.Auth)) {
|
||||||
const warnNitradoNotInitialized = new EmbedBuilder()
|
const warnNitradoNotInitialized = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Yellow)
|
.setColor(client.config.Colors.Yellow)
|
||||||
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
.setDescription("**WARNING:** The DayZ Nitrado Server has not been configured for this guild yet. This command or feature is currently unavailable.");
|
||||||
@@ -78,7 +79,7 @@ module.exports = {
|
|||||||
// Searching for self
|
// Searching for self
|
||||||
if (self) query = await client.dbo.collection("players").findOne({ "discordID": interaction.member.user.id });
|
if (self) query = await client.dbo.collection("players").findOne({ "discordID": interaction.member.user.id });
|
||||||
|
|
||||||
if (!client.exists(query)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** Unable to find any records with the gamertag or user provided.`)] });
|
if (!isDefined(query)) return interaction.send({ embeds: [new EmbedBuilder().setColor(client.config.Colors.Yellow).setDescription(`**Not Found** Unable to find any records with the gamertag or user provided.`)] });
|
||||||
|
|
||||||
let weaponSelect = new StringSelectMenuBuilder()
|
let weaponSelect = new StringSelectMenuBuilder()
|
||||||
.setCustomId(`ViewWeaponStats-${query.playerID}-${interaction.member.user.id}`)
|
.setCustomId(`ViewWeaponStats-${query.playerID}-${interaction.member.user.id}`)
|
||||||
@@ -110,8 +111,8 @@ module.exports = {
|
|||||||
let player = await client.dbo.collection("players").findOne({ "playerID": playerID });
|
let player = await client.dbo.collection("players").findOne({ "playerID": playerID });
|
||||||
const tag = player.discordID != "" ? `<@${player.discordID}>"s` : `**${player.gamertag}"s**`;
|
const tag = player.discordID != "" ? `<@${player.discordID}>"s` : `**${player.gamertag}"s**`;
|
||||||
|
|
||||||
if (!client.exists(player.shotsLanded)) player = insertPVPstats(player);
|
if (!isDefined(player.shotsLanded)) player = insertPVPstats(player);
|
||||||
if (!client.exists(player.weaponStats[weapon])) player = createWeaponStats(player, weapon);
|
if (!isDefined(player.weaponStats[weapon])) player = createWeaponStats(player, weapon);
|
||||||
|
|
||||||
let stats = new EmbedBuilder()
|
let stats = new EmbedBuilder()
|
||||||
.setColor(client.config.Colors.Default)
|
.setColor(client.config.Colors.Default)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Snowflake } from "discord.js";
|
import { Snowflake } from "discord.js";
|
||||||
import DayZR from "../DayZRBot";
|
import DayZR from "../DayZRBot";
|
||||||
import { NitradoCredentialStatus } from "../util/NitradoAPI";
|
import { NitradoCredentialStatus } from "../services/NitradoAPI";
|
||||||
import { ArmbandName } from "./armbands";
|
import { ArmbandName } from "./armbands";
|
||||||
import { MissionName } from "./destinations";
|
import { MissionName } from "./destinations";
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
module.exports = (client, guild) => {
|
module.exports = (client, guild) => {
|
||||||
require("../util/RegisterSlashCommands").RegisterGuildCommands(client, guild.id);
|
require("../services/RegisterSlashCommands").RegisterGuildCommands(client, guild.id);
|
||||||
};
|
};
|
||||||
@@ -4,7 +4,7 @@ const { GetGuild } = require("../database/guild");
|
|||||||
module.exports = async (client, member) => {
|
module.exports = async (client, member) => {
|
||||||
|
|
||||||
let GuildDB = await GetGuild(client, member.guild.id);
|
let GuildDB = await GetGuild(client, member.guild.id);
|
||||||
if (!client.exists(GuildDB.welcomeChannel)) return;
|
if (!isDefined(GuildDB.welcomeChannel)) return;
|
||||||
const channel = client.GetChannel(GuildDB.welcomeChannel);
|
const channel = client.GetChannel(GuildDB.welcomeChannel);
|
||||||
|
|
||||||
if (GuildDB.serverName == "") GuildDB.serverName = "our server!"
|
if (GuildDB.serverName == "") GuildDB.serverName = "our server!"
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder } = require("discord.js");
|
||||||
const { nearest } = require("../database/destinations");
|
const { nearest } = require("../database/destinations");
|
||||||
const { GetWebhook, WebhookSend } = require("./WebhookHandler");
|
const { GetWebhook, WebhookSend } = require("../services/WebhookService");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
||||||
SendConnectionLogs: async (client, guild, data) => {
|
SendConnectionLogs: async (client, guild, data) => {
|
||||||
if (!client.exists(guild.connectionLogsChannel)) return;
|
if (!isDefined(guild.connectionLogsChannel)) return;
|
||||||
const channel = client.GetChannel(guild.connectionLogsChannel);
|
const channel = client.GetChannel(guild.connectionLogsChannel);
|
||||||
if (!channel) return;
|
if (!channel) return;
|
||||||
|
|
||||||
@@ -27,13 +28,13 @@ module.exports = {
|
|||||||
} else connectionLog.addFields({ name: "**Session Time**", value: `**Unknown**`, inline: false });
|
} else connectionLog.addFields({ name: "**Session Time**", value: `**Unknown**`, inline: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (client.exists(channel)) await channel.send({ embeds: [connectionLog] });
|
// if (isDefined(channel)) await channel.send({ embeds: [connectionLog] });
|
||||||
await WebhookSend(client, webhook, { embeds: [connectionLog] });
|
await WebhookSend(client, webhook, { embeds: [connectionLog] });
|
||||||
},
|
},
|
||||||
|
|
||||||
DetectCombatLog: async (client, guild, data) => {
|
DetectCombatLog: async (client, guild, data) => {
|
||||||
if (!client.exists(data.lastDamageDate)) return;
|
if (!isDefined(data.lastDamageDate)) return;
|
||||||
if (!client.exists(guild.connectionLogsChannel)) return;
|
if (!isDefined(guild.connectionLogsChannel)) return;
|
||||||
const channel = client.GetChannel(guild.connectionLogsChannel);
|
const channel = client.GetChannel(guild.connectionLogsChannel);
|
||||||
if (!channel) return; // Ensure channel exists
|
if (!channel) return; // Ensure channel exists
|
||||||
|
|
||||||
@@ -61,7 +62,7 @@ module.exports = {
|
|||||||
const webhook = await GetWebhook(client, NAME, guild.connectionLogsChannel);
|
const webhook = await GetWebhook(client, NAME, guild.connectionLogsChannel);
|
||||||
|
|
||||||
let content = { embeds: [combatLog] };
|
let content = { embeds: [combatLog] };
|
||||||
if (client.exists(guild.adminRole)) content.content = `<@&${guild.adminRole}>`;
|
if (isDefined(guild.adminRole)) content.content = `<@&${guild.adminRole}>`;
|
||||||
WebhookSend(client, webhook, content);
|
WebhookSend(client, webhook, content);
|
||||||
// return channel.send({ embeds: [combatLog] });
|
// return channel.send({ embeds: [combatLog] });
|
||||||
}
|
}
|
||||||
@@ -2,14 +2,15 @@ const { BanPlayer, UnbanPlayer } = require("./NitradoAPI");
|
|||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder } = require("discord.js");
|
||||||
const { nearest } = require("../database/destinations");
|
const { nearest } = require("../database/destinations");
|
||||||
const { GetGuild } = require("../database/guild");
|
const { GetGuild } = require("../database/guild");
|
||||||
const { GetWebhook, WebhookSend } = require("./WebhookHandler");
|
const { GetWebhook, WebhookSend } = require("../services/WebhookService");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
// Private functions (only called locally)
|
// Private functions (only called locally)
|
||||||
|
|
||||||
const ExpireEvent = async (client, guild, e) => {
|
const ExpireEvent = async (client, guild, e) => {
|
||||||
let hasMR = (guild.memberRole != "");
|
let hasMR = (guild.memberRole != "");
|
||||||
const channel = client.GetChannel(e.channel);
|
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!**`)] });
|
if (isDefined(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 }, {
|
client.dbo.collection("guilds").updateOne({ "server.serverID": guild.serverID }, {
|
||||||
$pull: {
|
$pull: {
|
||||||
@@ -21,7 +22,7 @@ const ExpireEvent = async (client, guild, e) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const HandlePlayerTrackEvent = async (client, guild, e) => {
|
const HandlePlayerTrackEvent = async (client, guild, e) => {
|
||||||
if (!client.exists(e.channel)) return ExpireEvent(client, guild, e); // Expire event since it has invalid channel.
|
if (!isDefined(e.channel)) return ExpireEvent(client, guild, e); // Expire event since it has invalid channel.
|
||||||
const channel = client.GetChannel(e.channel);
|
const channel = client.GetChannel(e.channel);
|
||||||
if (!channel) return;
|
if (!channel) return;
|
||||||
|
|
||||||
@@ -40,7 +41,7 @@ const HandlePlayerTrackEvent = async (client, guild, e) => {
|
|||||||
const webhook = await GetWebhook(client, NAME, e.channel);
|
const webhook = await GetWebhook(client, NAME, e.channel);
|
||||||
|
|
||||||
let content = { embeds: [trackEvent] };
|
let content = { embeds: [trackEvent] };
|
||||||
if (client.exists(guild.adminRole)) content.content = `<@&${e.role}>`;
|
if (isDefined(guild.adminRole)) content.content = `<@&${e.role}>`;
|
||||||
WebhookSend(client, webhook, content);
|
WebhookSend(client, webhook, content);
|
||||||
|
|
||||||
// if (e.role) channel.send({ content: `<@&${e.role}>`, embeds: [trackEvent] });
|
// if (e.role) channel.send({ content: `<@&${e.role}>`, embeds: [trackEvent] });
|
||||||
@@ -3,9 +3,10 @@ const { createUser, addUser } = require("../database/user");
|
|||||||
const { KillInAlarm } = require("./AlarmsHandler");
|
const { KillInAlarm } = require("./AlarmsHandler");
|
||||||
const { nearest } = require("../database/destinations");
|
const { nearest } = require("../database/destinations");
|
||||||
const { getDefaultPlayer, UpdatePlayer } = require("../database/player");
|
const { getDefaultPlayer, UpdatePlayer } = require("../database/player");
|
||||||
const { calculateNewCombatRating } = require("./CombatRatingHandler");
|
const { calculateNewCombatRating } = require("../util/CombatRating");
|
||||||
const { weapons, weaponClassOf } = require("../database/weapons");
|
const { weapons, weaponClassOf } = require("../database/weapons");
|
||||||
const { GetWebhook, WebhookSend } = require("../util/WebhookHandler");
|
const { GetWebhook, WebhookSend } = require("../util/WebhookHandler");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
const Templates = {
|
const Templates = {
|
||||||
Killed: 1,
|
Killed: 1,
|
||||||
@@ -71,7 +72,7 @@ module.exports = {
|
|||||||
const newDt = await client.getDateEST(info.time);
|
const newDt = await client.getDateEST(info.time);
|
||||||
|
|
||||||
let victimStat = await client.dbo.collection("players").findOne({ "playerID": info.playerID });
|
let victimStat = await client.dbo.collection("players").findOne({ "playerID": info.playerID });
|
||||||
if (!client.exists(victimStat)) victimStat = getDefaultPlayer(info.player, info.playerID, NitradoServerID);
|
if (!isDefined(victimStat)) victimStat = getDefaultPlayer(info.player, info.playerID, NitradoServerID);
|
||||||
|
|
||||||
victimStat.lastDeathDate = newDt;
|
victimStat.lastDeathDate = newDt;
|
||||||
|
|
||||||
@@ -126,15 +127,15 @@ module.exports = {
|
|||||||
const newDt = await client.getDateEST(info.time);
|
const newDt = await client.getDateEST(info.time);
|
||||||
const unixTime = Math.floor(newDt.getTime() / 1000);
|
const unixTime = Math.floor(newDt.getTime() / 1000);
|
||||||
|
|
||||||
const showCoords = client.exists(guild.showKillfeedCoords) ? guild.showKillfeedCoords : false; // default to false if no record of configuration.
|
const showCoords = isDefined(guild.showKillfeedCoords) ? guild.showKillfeedCoords : false; // default to false if no record of configuration.
|
||||||
const showWeapon = client.exists(guild.showKillfeedWeapon) ? guild.showKillfeedWeapon : false; // default to false if no record of configuration.
|
const showWeapon = isDefined(guild.showKillfeedWeapon) ? guild.showKillfeedWeapon : false; // default to false if no record of configuration.
|
||||||
|
|
||||||
const destination = nearest(info.victimPOS, guild.Nitrado.Mission);
|
const destination = nearest(info.victimPOS, guild.Nitrado.Mission);
|
||||||
|
|
||||||
if ([Templates.LandMine, Templates.Explosion, Templates.Vehicle].includes(killedBy))
|
if ([Templates.LandMine, Templates.Explosion, Templates.Vehicle].includes(killedBy))
|
||||||
if (killedBy == Templates.LandMine || killedBy == Templates.Explosion || killedBy == Templates.Vehicle) {
|
if (killedBy == Templates.LandMine || killedBy == Templates.Explosion || killedBy == Templates.Vehicle) {
|
||||||
let victimStat = await client.dbo.collection("players").findOne({ "playerID": info.victimID });
|
let victimStat = await client.dbo.collection("players").findOne({ "playerID": info.victimID });
|
||||||
if (!client.exists(victimStat)) victimStat = getDefaultPlayer(info.victim, info.victimID, NitradoServerID);
|
if (!isDefined(victimStat)) victimStat = getDefaultPlayer(info.victim, info.victimID, NitradoServerID);
|
||||||
victimStat.deaths++;
|
victimStat.deaths++;
|
||||||
victimStat.deathStreak++;
|
victimStat.deathStreak++;
|
||||||
victimStat.worstDeathStreak = victimStat.deathStreak > victimStat.worstDeathStreak ? victimStat.deathStreak : victimStat.worstDeathStreak;
|
victimStat.worstDeathStreak = victimStat.deathStreak > victimStat.worstDeathStreak ? victimStat.deathStreak : victimStat.worstDeathStreak;
|
||||||
@@ -157,18 +158,18 @@ module.exports = {
|
|||||||
const webhook = await GetWebhook(client, NAME, guild.killfeedChannel);
|
const webhook = await GetWebhook(client, NAME, guild.killfeedChannel);
|
||||||
WebhookSend(client, webhook, { embeds: [killEvent] });
|
WebhookSend(client, webhook, { embeds: [killEvent] });
|
||||||
|
|
||||||
// if (client.exists(channel)) await channel.send({ embeds: [killEvent] });
|
// if (isDefined(channel)) await channel.send({ embeds: [killEvent] });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
KillInAlarm(client, guild.serverID, info); // check if kill happened in a no kill zone
|
KillInAlarm(client, guild.serverID, info); // check if kill happened in a no kill zone
|
||||||
|
|
||||||
if (!client.exists(info.victim) || !client.exists(info.victimID) || !client.exists(info.killer) || !client.exists(info.killerID)) return;
|
if (!isDefined(info.victim) || !isDefined(info.victimID) || !isDefined(info.killer) || !isDefined(info.killerID)) return;
|
||||||
|
|
||||||
let victimStat = await client.dbo.collection("players").findOne({ "playerID": info.victimID });
|
let victimStat = await client.dbo.collection("players").findOne({ "playerID": info.victimID });
|
||||||
let killerStat = await client.dbo.collection("players").findOne({ "playerID": info.killerID });
|
let killerStat = await client.dbo.collection("players").findOne({ "playerID": info.killerID });
|
||||||
if (!client.exists(victimStat)) victimStat = getDefaultPlayer(info.victim, info.victimID, NitradoServerID);
|
if (!isDefined(victimStat)) victimStat = getDefaultPlayer(info.victim, info.victimID, NitradoServerID);
|
||||||
if (!client.exists(killerStat)) killerStat = getDefaultPlayer(info.killer, info.killerID, NitradoServerID);
|
if (!isDefined(killerStat)) killerStat = getDefaultPlayer(info.killer, info.killerID, NitradoServerID);
|
||||||
|
|
||||||
let weapon = info.weapon.includes("Engraved") ? info.weapon.split("Engraved ")[1] :
|
let weapon = info.weapon.includes("Engraved") ? info.weapon.split("Engraved ")[1] :
|
||||||
info.weapon.includes("Sawed-off") ? info.weapon.split("Sawed-off ")[1] :
|
info.weapon.includes("Sawed-off") ? info.weapon.split("Sawed-off ")[1] :
|
||||||
@@ -181,7 +182,7 @@ module.exports = {
|
|||||||
killerStat.KDR = killerStat.kills / (killerStat.deaths == 0 ? 1 : killerStat.deaths); // prevent division by 0
|
killerStat.KDR = killerStat.kills / (killerStat.deaths == 0 ? 1 : killerStat.deaths); // prevent division by 0
|
||||||
killerStat.longestKill = info.distance > killerStat.longestKill ? info.distance : killerStat.longestKill;
|
killerStat.longestKill = info.distance > killerStat.longestKill ? info.distance : killerStat.longestKill;
|
||||||
killerStat.deathStreak = 0;
|
killerStat.deathStreak = 0;
|
||||||
if (!client.exists(killerStat.weaponStats[weapon].kills)) killerStat.weaponStats[weapon].kills = 0;
|
if (!isDefined(killerStat.weaponStats[weapon].kills)) killerStat.weaponStats[weapon].kills = 0;
|
||||||
killerStat.weaponStats[weapon].kills++;
|
killerStat.weaponStats[weapon].kills++;
|
||||||
|
|
||||||
// Update victim stats
|
// Update victim stats
|
||||||
@@ -191,21 +192,21 @@ module.exports = {
|
|||||||
victimStat.KDR = victimStat.kills / (victimStat.deaths == 0 ? 1 : victimStat.deaths); // prevent division by 0
|
victimStat.KDR = victimStat.kills / (victimStat.deaths == 0 ? 1 : victimStat.deaths); // prevent division by 0
|
||||||
victimStat.killStreak = 0;
|
victimStat.killStreak = 0;
|
||||||
victimStat.lastDeathDate = newDt;
|
victimStat.lastDeathDate = newDt;
|
||||||
if (!client.exists(victimStat.weaponStats[weapon].deaths)) victimStat.weaponStats[weapon].death = 0;
|
if (!isDefined(victimStat.weaponStats[weapon].deaths)) victimStat.weaponStats[weapon].death = 0;
|
||||||
victimStat.weaponStats[weapon].deaths++;
|
victimStat.weaponStats[weapon].deaths++;
|
||||||
|
|
||||||
// Create defaults for non-existing ratings
|
// Create defaults for non-existing ratings
|
||||||
if (!client.exists(killerStat.combatRating)) killerStat.combatRating = 800;
|
if (!isDefined(killerStat.combatRating)) killerStat.combatRating = 800;
|
||||||
if (!client.exists(victimStat.combatRating)) victimStat.combatRating = 800;
|
if (!isDefined(victimStat.combatRating)) victimStat.combatRating = 800;
|
||||||
if (!client.exists(killerStat.combatRatingHistory)) killerStat.combatRatingHistory = [800];
|
if (!isDefined(killerStat.combatRatingHistory)) killerStat.combatRatingHistory = [800];
|
||||||
if (!client.exists(victimStat.combatRatingHistory)) victimStat.combatRatingHistory = [800];
|
if (!isDefined(victimStat.combatRatingHistory)) victimStat.combatRatingHistory = [800];
|
||||||
if (!client.exists(killerStat.highestCombatRating)) killerStat.highestCombatRating = Math.max(...killerStat.combatRatingHistory);
|
if (!isDefined(killerStat.highestCombatRating)) killerStat.highestCombatRating = Math.max(...killerStat.combatRatingHistory);
|
||||||
if (!client.exists(victimStat.lowestCombatRating)) victimStat.lowestCombatRating = Math.min(...victimStat.combatRatingHistory);
|
if (!isDefined(victimStat.lowestCombatRating)) victimStat.lowestCombatRating = Math.min(...victimStat.combatRatingHistory);
|
||||||
|
|
||||||
// Calculate new ratings
|
// Calculate new ratings
|
||||||
let killerOldRating = killerStat.combatRating;
|
let killerOldRating = killerStat.combatRating;
|
||||||
let victimOldRating = victimStat.combatRating;
|
let victimOldRating = victimStat.combatRating;
|
||||||
killerStat.combatRating = calculateNewCombatRating(killerStat.combatRating, victimStat.combatRating, client.exists(info.bodyPart) && info.bodyPart.includes("Head") ? 1.25 : 1);
|
killerStat.combatRating = calculateNewCombatRating(killerStat.combatRating, victimStat.combatRating, isDefined(info.bodyPart) && info.bodyPart.includes("Head") ? 1.25 : 1);
|
||||||
victimStat.combatRating = calculateNewCombatRating(victimStat.combatRating, killerStat.combatRating, 0);
|
victimStat.combatRating = calculateNewCombatRating(victimStat.combatRating, killerStat.combatRating, 0);
|
||||||
|
|
||||||
// Update combat rating records
|
// Update combat rating records
|
||||||
@@ -230,11 +231,11 @@ module.exports = {
|
|||||||
|
|
||||||
if (!banking) {
|
if (!banking) {
|
||||||
banking = await createUser(interaction.member.user.id, guild.serverID, guild.startingBalance, client)
|
banking = await createUser(interaction.member.user.id, guild.serverID, guild.startingBalance, client)
|
||||||
if (!client.exists(banking)) return client.sendInternalError(interaction, err);
|
if (!isDefined(banking)) return client.sendInternalError(interaction, err);
|
||||||
}
|
}
|
||||||
banking = banking.user;
|
banking = banking.user;
|
||||||
|
|
||||||
if (!client.exists(banking.guilds[guild.serverID])) {
|
if (!isDefined(banking.guilds[guild.serverID])) {
|
||||||
const success = addUser(banking.guilds, guild.serverID, interaction.member.user.id, client, guild.startingBalance);
|
const success = addUser(banking.guilds, guild.serverID, interaction.member.user.id, client, guild.startingBalance);
|
||||||
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
if (!success) return client.sendInternalError(interaction, "Failed to add bank");
|
||||||
}
|
}
|
||||||
@@ -280,10 +281,10 @@ module.exports = {
|
|||||||
const webhook = await GetWebhook(client, NAME, guild.killfeedChannel);
|
const webhook = await GetWebhook(client, NAME, guild.killfeedChannel);
|
||||||
|
|
||||||
WebhookSend(client, webhook, { embeds: [killEvent] });
|
WebhookSend(client, webhook, { embeds: [killEvent] });
|
||||||
if (client.exists(receivedBounty) && client.exists(channel)) WebhookSend(client, webhook, { content: `<@${killerStat.discordID}>`, embeds: [receivedBounty] });
|
if (isDefined(receivedBounty) && isDefined(channel)) WebhookSend(client, webhook, { content: `<@${killerStat.discordID}>`, embeds: [receivedBounty] });
|
||||||
|
|
||||||
// if (client.exists(channel)) await channel.send({ embeds: [killEvent] });
|
// if (isDefined(channel)) await channel.send({ embeds: [killEvent] });
|
||||||
// if (client.exists(receivedBounty) && client.exists(channel)) await channel.send({ content: `<@${killerStat.discordID}>`, embeds: [receivedBounty] });
|
// if (isDefined(receivedBounty) && isDefined(channel)) await channel.send({ content: `<@${killerStat.discordID}>`, embeds: [receivedBounty] });
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,8 @@ const { getDefaultPlayer } = require("../database/player");
|
|||||||
const { FetchServerSettings } = require("./NitradoAPI");
|
const { FetchServerSettings } = require("./NitradoAPI");
|
||||||
const { UpdatePlayer, insertPVPstats, createWeaponStats } = require("../database/player")
|
const { UpdatePlayer, insertPVPstats, createWeaponStats } = require("../database/player")
|
||||||
const { Missions } = require("../database/destinations");
|
const { Missions } = require("../database/destinations");
|
||||||
const { GetWebhook, WebhookSend, WebhookMessageEdit } = require("./WebhookHandler");
|
const { GetWebhook, WebhookSend, WebhookMessageEdit } = require("../services/WebhookService");
|
||||||
|
const isDefined = require("../util/Validation.js");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
||||||
@@ -27,15 +28,15 @@ module.exports = {
|
|||||||
playerID: data[3],
|
playerID: data[3],
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!client.exists(info.player) || !client.exists(info.playerID)) return;
|
if (!isDefined(info.player) || !isDefined(info.playerID)) return;
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "playerID": info.playerID });
|
let playerStat = await client.dbo.collection("players").findOne({ "playerID": info.playerID });
|
||||||
if (!client.exists(playerStat)) playerStat = getDefaultPlayer(info.player, info.playerID, NitradoServerID);
|
if (!isDefined(playerStat)) playerStat = getDefaultPlayer(info.player, info.playerID, NitradoServerID);
|
||||||
const newDt = await client.getDateEST(info.time);
|
const newDt = await client.getDateEST(info.time);
|
||||||
|
|
||||||
playerStat.lastConnectionDate = newDt;
|
playerStat.lastConnectionDate = newDt;
|
||||||
playerStat.connected = true;
|
playerStat.connected = true;
|
||||||
if (!client.exists(playerStat.connections)) playerStat.connections = 0;
|
if (!isDefined(playerStat.connections)) playerStat.connections = 0;
|
||||||
playerStat.connections++;
|
playerStat.connections++;
|
||||||
|
|
||||||
// Track adjusted sessions this instance has handled (e.g. no bot crashes or restarts).
|
// Track adjusted sessions this instance has handled (e.g. no bot crashes or restarts).
|
||||||
@@ -72,10 +73,10 @@ module.exports = {
|
|||||||
playerID: data[3],
|
playerID: data[3],
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!client.exists(info.player) || !client.exists(info.playerID)) return;
|
if (!isDefined(info.player) || !isDefined(info.playerID)) return;
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "playerID": info.playerID });
|
let playerStat = await client.dbo.collection("players").findOne({ "playerID": info.playerID });
|
||||||
if (!client.exists(playerStat)) playerStat = getDefaultPlayer(info.player, info.playerID, NitradoServerID);
|
if (!isDefined(playerStat)) playerStat = getDefaultPlayer(info.player, info.playerID, NitradoServerID);
|
||||||
|
|
||||||
let oldUnixTime;
|
let oldUnixTime;
|
||||||
let sessionTimeSeconds;
|
let sessionTimeSeconds;
|
||||||
@@ -85,7 +86,7 @@ module.exports = {
|
|||||||
oldUnixTime = Math.round(playerStat.lastConnectionDate.getTime() / 1000); // Seconds
|
oldUnixTime = Math.round(playerStat.lastConnectionDate.getTime() / 1000); // Seconds
|
||||||
sessionTimeSeconds = unixTime - oldUnixTime;
|
sessionTimeSeconds = unixTime - oldUnixTime;
|
||||||
} else sessionTimeSeconds = 0;
|
} else sessionTimeSeconds = 0;
|
||||||
if (!client.exists(playerStat.longestSessionTime)) playerStat.longestSessionTime = 0;
|
if (!isDefined(playerStat.longestSessionTime)) playerStat.longestSessionTime = 0;
|
||||||
|
|
||||||
playerStat.totalSessionTime = playerStat.totalSessionTime + sessionTimeSeconds;
|
playerStat.totalSessionTime = playerStat.totalSessionTime + sessionTimeSeconds;
|
||||||
playerStat.lastSessionTime = sessionTimeSeconds;
|
playerStat.lastSessionTime = sessionTimeSeconds;
|
||||||
@@ -126,11 +127,11 @@ module.exports = {
|
|||||||
pos: data[4].split(", ").map(v => parseFloat(v))
|
pos: data[4].split(", ").map(v => parseFloat(v))
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!client.exists(info.player) || !client.exists(info.playerID)) return;
|
if (!isDefined(info.player) || !isDefined(info.playerID)) return;
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "playerID": info.playerID });
|
let playerStat = await client.dbo.collection("players").findOne({ "playerID": info.playerID });
|
||||||
if (!client.exists(playerStat)) playerStat = getDefaultPlayer(info.player, info.playerID, NitradoServerID);
|
if (!isDefined(playerStat)) playerStat = getDefaultPlayer(info.player, info.playerID, NitradoServerID);
|
||||||
if (!client.exists(playerStat.lastConnectionDate)) playerStat.lastConnectionDate = await client.getDateEST(info.time);
|
if (!isDefined(playerStat.lastConnectionDate)) playerStat.lastConnectionDate = await client.getDateEST(info.time);
|
||||||
|
|
||||||
playerStat.lastPos = playerStat.pos;
|
playerStat.lastPos = playerStat.pos;
|
||||||
playerStat.pos = info.pos;
|
playerStat.pos = info.pos;
|
||||||
@@ -165,18 +166,18 @@ module.exports = {
|
|||||||
weapon: data[12],
|
weapon: data[12],
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!client.exists(info.player) || !client.exists(info.playerID) || !client.exists(info.attacker) || !client.exists(info.attackerID)) return;
|
if (!isDefined(info.player) || !isDefined(info.playerID) || !isDefined(info.attacker) || !isDefined(info.attackerID)) return;
|
||||||
|
|
||||||
let playerStat = await client.dbo.collection("players").findOne({ "playerID": info.playerID });
|
let playerStat = await client.dbo.collection("players").findOne({ "playerID": info.playerID });
|
||||||
let attackerStat = await client.dbo.collection("players").findOne({ "playerID": info.attackerID });
|
let attackerStat = await client.dbo.collection("players").findOne({ "playerID": info.attackerID });
|
||||||
if (!client.exists(playerStat)) playerStat = getDefaultPlayer(info.player, info.playerID, NitradoServerID);
|
if (!isDefined(playerStat)) playerStat = getDefaultPlayer(info.player, info.playerID, NitradoServerID);
|
||||||
if (!client.exists(attackerStat)) attackerStat = getDefaultPlayer(info.attacker, info.attackerID, NitradoServerID);
|
if (!isDefined(attackerStat)) attackerStat = getDefaultPlayer(info.attacker, info.attackerID, NitradoServerID);
|
||||||
|
|
||||||
playerStat.lastDamageDate = await client.getDateEST(info.time);
|
playerStat.lastDamageDate = await client.getDateEST(info.time);
|
||||||
playerStat.lastHitBy = info.attacker;
|
playerStat.lastHitBy = info.attacker;
|
||||||
|
|
||||||
if (!client.exists(playerStat.shotsLanded)) playerStat = insertPVPstats(playerStat);
|
if (!isDefined(playerStat.shotsLanded)) playerStat = insertPVPstats(playerStat);
|
||||||
if (!client.exists(attackerStat.shotsLanded)) attackerStat = insertPVPstats(attackerStat);
|
if (!isDefined(attackerStat.shotsLanded)) attackerStat = insertPVPstats(attackerStat);
|
||||||
|
|
||||||
// Update in depth PVP stats if non Melee weapon
|
// Update in depth PVP stats if non Melee weapon
|
||||||
if (info.weapon.includes("Engraved")) info.weapon = info.weapon.split("Engraved ")[1];
|
if (info.weapon.includes("Engraved")) info.weapon = info.weapon.split("Engraved ")[1];
|
||||||
@@ -184,13 +185,13 @@ module.exports = {
|
|||||||
if (info.weapon in playerStat.weaponStats) {
|
if (info.weapon in playerStat.weaponStats) {
|
||||||
playerStat.timesShot++;
|
playerStat.timesShot++;
|
||||||
playerStat.timesShotPerBodyPart[info.bodyPart]++;
|
playerStat.timesShotPerBodyPart[info.bodyPart]++;
|
||||||
if (!client.exists(playerStat.weaponStats[info.weapon])) playerStat = createWeaponStats(playerStat, info.weapon);
|
if (!isDefined(playerStat.weaponStats[info.weapon])) playerStat = createWeaponStats(playerStat, info.weapon);
|
||||||
playerStat.weaponStats[info.weapon].timesShot++;
|
playerStat.weaponStats[info.weapon].timesShot++;
|
||||||
playerStat.weaponStats[info.weapon].timesShotPerBodyPart[info.bodyPart]++;
|
playerStat.weaponStats[info.weapon].timesShotPerBodyPart[info.bodyPart]++;
|
||||||
|
|
||||||
attackerStat.shotsLanded++;
|
attackerStat.shotsLanded++;
|
||||||
attackerStat.shotsLandedPerBodyPart[info.bodyPart]++;
|
attackerStat.shotsLandedPerBodyPart[info.bodyPart]++;
|
||||||
if (!client.exists(attackerStat.weaponStats[info.weapon])) attackerStat = createWeaponStats(attackerStat, info.weapon);
|
if (!isDefined(attackerStat.weaponStats[info.weapon])) attackerStat = createWeaponStats(attackerStat, info.weapon);
|
||||||
attackerStat.weaponStats[info.weapon].shotsLanded++;
|
attackerStat.weaponStats[info.weapon].shotsLanded++;
|
||||||
attackerStat.weaponStats[info.weapon].shotsLandedPerBodyPart[info.bodyPart]++;
|
attackerStat.weaponStats[info.weapon].shotsLandedPerBodyPart[info.bodyPart]++;
|
||||||
}
|
}
|
||||||
@@ -205,7 +206,7 @@ module.exports = {
|
|||||||
HandleActivePlayersList: async (nitrado_cred, client, guild) => {
|
HandleActivePlayersList: async (nitrado_cred, client, guild) => {
|
||||||
client.activePlayersTick = 0; // reset hour tick
|
client.activePlayersTick = 0; // reset hour tick
|
||||||
|
|
||||||
if (!client.exists(guild.activePlayersChannel)) return;
|
if (!isDefined(guild.activePlayersChannel)) return;
|
||||||
const channel = client.GetChannel(guild.activePlayersChannel);
|
const channel = client.GetChannel(guild.activePlayersChannel);
|
||||||
if (!channel) return;
|
if (!channel) return;
|
||||||
|
|
||||||
File renamed without changes.
@@ -3,6 +3,7 @@ const concat = require("concat-stream"); // convert to import ?
|
|||||||
import { Readable } from "stream";
|
import { Readable } from "stream";
|
||||||
import FormData from "form-data";
|
import FormData from "form-data";
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
|
import isDefined from "../util/Validation";
|
||||||
|
|
||||||
const MAX_RETRIES = 5;
|
const MAX_RETRIES = 5;
|
||||||
const RETRY_DELAY_MS = 5000; // 5 seconds
|
const RETRY_DELAY_MS = 5000; // 5 seconds
|
||||||
@@ -73,7 +74,7 @@ const HandlePlayerBan = async (nitrado_cred: any, client: any, gamertag: any, ba
|
|||||||
}
|
}
|
||||||
|
|
||||||
const GetRemoteDir = async (nitrado_cred: any, client: any, dir = "") => {
|
const GetRemoteDir = async (nitrado_cred: any, client: any, dir = "") => {
|
||||||
const dirParam = client.exists(dir) ? `?dir=${dir}` : "";
|
const dirParam = isDefined(dir) ? `?dir=${dir}` : "";
|
||||||
for (let retries = 0; retries <= MAX_RETRIES; retries++) {
|
for (let retries = 0; retries <= MAX_RETRIES; retries++) {
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`https://api.nitrado.net/services/${nitrado_cred.ServerID}/gameservers/file_server/list${dirParam}`, {
|
const res = await fetch(`https://api.nitrado.net/services/${nitrado_cred.ServerID}/gameservers/file_server/list${dirParam}`, {
|
||||||
File renamed without changes.
File renamed without changes.
Whitespace-only changes.
File renamed without changes.
@@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* isDefined simply ensures a given input is not
|
||||||
|
* null, undefined, an empty string or NaN.
|
||||||
|
*
|
||||||
|
* @param n to validate
|
||||||
|
* @returns if this object exists (boolean)
|
||||||
|
*/
|
||||||
|
export default function isDefined<T>(n: T | null | undefined | "" | number): n is T
|
||||||
|
{
|
||||||
|
return typeof n === "number" ? !isNaN(n) : n !== null && n !== undefined && n !== "";
|
||||||
|
}
|
||||||
Reference in new issue
Block a user