diff --git a/logger.js b/logger.js index 2292a70..f5cffac 100644 --- a/logger.js +++ b/logger.js @@ -16,7 +16,7 @@ const users = {}; fs.mkdir("./logs", {recursive: true}, (err) => { if (err) { - logger.error("An error occurred while creating the logs directory: " + err); + logger.error("an error occurred while creating the logs directory: " + err); } }); @@ -49,23 +49,6 @@ try { } steamUser.on('loggedOn', () => { logger.info(`login to Steam as ${steamUser.steamID}`); - - steamUser.chat.getFriendMessageHistory( - "76561198453448510", - { - maxCount: 10, - }, - (err, messages) => { - console.log(typeof messages) - for (let message of messages.messages) { - console.log(typeof message.server_timestamp); - console.log(Object.keys(message.server_timestamp)); - } - logger.info("chat history", { - messages: messages, - err: err, - }); - }); }); /** @@ -81,9 +64,12 @@ async function getUserInfo(steamID) { users[steamID.getSteamID64()] = personasResult.personas[steamID.getSteamID64()]; sender = users[steamID.getSteamID64()]; - logger.info("User data received: " + JSON.stringify(sender)); + importChatHistory(steamID); + + // noinspection ES6MissingAwait + logger.info("user data received: " + JSON.stringify(sender)); } catch (err) { - logger.error("An error occurred while getting user data: ", err); + logger.error("an error occurred while getting user data: ", err); sender = { player_name: "Unknown", }; @@ -97,9 +83,13 @@ async function getUserInfo(steamID) { * @param {SteamID} steamID * @param {string} message * @param {boolean} echo + * @param {number} ordinal * @returns {Promise<void>} */ async function logMessage(date, steamID, message, echo, ordinal) { + // try to get chat history + await getUserInfo(steamID); + let sender = await getUserInfo(echo ? steamUser.steamID : steamID); logger.info("log steam chat message", { echo: echo, @@ -117,23 +107,19 @@ async function logMessage(date, steamID, message, echo, ordinal) { ordinal: ordinal, }) + "\n", (e) => { if (e) { - logger.error("An error occurred while writing FullLogs jsonl file: " + e); + logger.error("an error occurred while writing chat log file: " + e); } }); } steamUser.chat.on("friendMessage", (message) => { - logger.info("friend message", message); - // noinspection JSIgnoredPromiseFromCall - logMessage(dateToString(message.server_timestamp), message.steamid_friend, message.message, false); + logMessage(dateToString(message.server_timestamp), message.steamid_friend, message.message, false, message.ordinal); }); steamUser.chat.on("friendMessageEcho", (message) => { - logger.info("friend message echo", message); - // noinspection JSIgnoredPromiseFromCall - logMessage(dateToString(message.server_timestamp), message.steamid_friend, message.message, true); + logMessage(dateToString(message.server_timestamp), message.steamid_friend, message.message, true, message.ordinal); }); /** @@ -145,3 +131,31 @@ function dateToString(date) { return `${date.toLocaleString()}.${milliseconds}` } + +function importChatHistory(steamID) { + if (steamID === steamUser.steamID) { + return; + } + + steamUser.chat.getFriendMessageHistory(steamID.getSteamID64(), (err, messages) => { + if (err) { + logger.error("an error occurred while getting chat history: ", err); + return + } + + for (let message of messages.messages) { + logger.info("get chat history", message); + logMessage( + dateToString(message.server_timestamp), + steamID, message.message, + message.sender === steamUser.steamID, + message.ordinal, + ); + } + }); +} + +module.exports = { + steamUser: steamUser, + getUserInfo: getUserInfo, +}