Merge pull request #22 from IrPgFKS0/co-work

This commit is contained in:
SowinskiBraeden authored and GitHub committed 2023-09-10 18:21:37 -07:00
commit 924f64cf00
3 files changed
+19 -5

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "dayzr-bot", "name": "dayzr-bot",
"version": "9.9.7", "version": "9.9.8",
"description": "A General Purpose Discord Bot for DayZ Nitrado Servers.", "description": "A General Purpose Discord Bot for DayZ Nitrado Servers.",
"main": "index.js", "main": "index.js",
"nodemonConfig": { "nodemonConfig": {
+4 -4
View File
@@ -41,6 +41,7 @@ class DayzRBot extends Client {
this.databaseConnected = false; this.databaseConnected = false;
this.arInterval = arInterval; this.arInterval = arInterval;
this.arIntervalId; // Interval for auto-restart functions this.arIntervalId; // Interval for auto-restart functions
this.playerSessions = new Map();
this.autoRestartInit(); this.autoRestartInit();
this.LoadCommandsAndInteractionHandlers(); this.LoadCommandsAndInteractionHandlers();
this.LoadEvents(); this.LoadEvents();
@@ -154,7 +155,6 @@ class DayzRBot extends Client {
} }
const playerTemplate = /(.*) \| Player \"(.*)\" \(id=(.*) pos=<(.*)>\)/g; const playerTemplate = /(.*) \| Player \"(.*)\" \(id=(.*) pos=<(.*)>\)/g;
const playerSessions = new Map();
let previouslyConnected = s.filter(p => p.connected); // All players with connection log captured above and no disconnect log let previouslyConnected = s.filter(p => p.connected); // All players with connection log captured above and no disconnect log
let lastDetectedTime; let lastDetectedTime;
@@ -182,9 +182,9 @@ class DayzRBot extends Client {
if (!previouslyConnected.includes(playerStat) && this.exists(playerStat.lastDisconnectionDate) && playerStat.lastDisconnectionDate !== null && playerStat.lastDisconnectionDate.getTime() > lastDetectedTime.getTime()) continue; // Skip this player if the lastDisconnectionDate time is later than the player log entry. if (!previouslyConnected.includes(playerStat) && this.exists(playerStat.lastDisconnectionDate) && playerStat.lastDisconnectionDate !== null && playerStat.lastDisconnectionDate.getTime() > lastDetectedTime.getTime()) continue; // Skip this player if the lastDisconnectionDate time is later than the player log entry.
// 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).
if (playerSessions.has(info.playerID)) { if (this.playerSessions.has(info.playerID)) {
// Player is already in a session, update the session's end time. // Player is already in a session, update the session's end time.
const session = playerSessions.get(info.playerID); const session = this.playerSessions.get(info.playerID);
session.endTime = lastDetectedTime; // Update end time. session.endTime = lastDetectedTime; // Update end time.
} else { } else {
// Player is not in a session, create a new session. // Player is not in a session, create a new session.
@@ -192,7 +192,7 @@ class DayzRBot extends Client {
startTime: lastDetectedTime, startTime: lastDetectedTime,
endTime: null, // Initialize end time as null. endTime: null, // Initialize end time as null.
}; };
playerSessions.set(info.playerID, newSession); this.playerSessions.set(info.playerID, newSession);
// Check if the player has been marked as connected before, but only if a session doesn't exist // Check if the player has been marked as connected before, but only if a session doesn't exist
// in the map, indicating the connection was discovered in the logs during this session. // in the map, indicating the connection was discovered in the logs during this session.
+14
View File
@@ -38,6 +38,20 @@ module.exports = {
playerStat.lastConnectionDate = newDt; playerStat.lastConnectionDate = newDt;
playerStat.connected = true; playerStat.connected = true;
// Track adjusted sessions this instance has handled (e.g. no bot crashes or restarts).
if (client.playerSessions.has(info.playerID)) {
// Player is already in a session, update the session's end time.
const session = client.playerSessions.get(info.playerID);
session.endTime = newDt; // Update end time.
} else {
// Player is not in a session, create a new session.
const newSession = {
startTime: newDt,
endTime: null, // Initialize end time as null.
};
client.playerSessions.set(info.playerID, newSession);
}
if (playerStatIndex === -1) stats.push(playerStat); if (playerStatIndex === -1) stats.push(playerStat);
else stats[playerStatIndex] = playerStat; else stats[playerStatIndex] = playerStat;