steam-chat/logger.js

101 lines
2.7 KiB
JavaScript
Raw Normal View History

2024-03-18 10:33:21 +08:00
dateformat = require('@matteo.collina/dateformat');
2024-04-28 10:21:21 +08:00
client = require("./client.js")
steamUser = client.steamUser
2024-03-17 21:58:42 +08:00
fs.mkdir("./logs", {recursive: true}, (err) => {
if (err) {
2024-03-17 23:13:10 +08:00
logger.error("an error occurred while creating the logs directory: " + err);
2024-03-17 21:58:42 +08:00
}
});
/**
* @param {string} date
* @param {SteamID} steamID
* @param {string} message
* @param {boolean} echo
2024-03-17 23:13:10 +08:00
* @param {number} ordinal
2024-03-17 21:58:42 +08:00
* @returns {Promise<void>}
*/
async function logMessage(date, steamID, message, echo, ordinal) {
2024-03-17 23:13:10 +08:00
// try to get chat history
await getUserInfo(steamID);
2024-03-17 21:58:42 +08:00
let sender = await getUserInfo(echo ? steamUser.steamID : steamID);
logger.info("log steam chat message", {
echo: echo,
id: steamID.getSteamID64(),
name: sender.player_name,
message: message,
ordinal: ordinal,
});
fs.appendFile("./logs/chat.jsonl", JSON.stringify({
date: date,
echo: echo,
id: steamID.getSteamID64(),
name: sender.player_name,
message: message,
ordinal: ordinal,
}) + "\n", (e) => {
if (e) {
2024-03-17 23:13:10 +08:00
logger.error("an error occurred while writing chat log file: " + e);
2024-03-17 21:58:42 +08:00
}
});
}
steamUser.chat.on("friendMessage", (message) => {
// noinspection JSIgnoredPromiseFromCall
2024-03-17 23:13:10 +08:00
logMessage(dateToString(message.server_timestamp), message.steamid_friend, message.message, false, message.ordinal);
2024-03-17 21:58:42 +08:00
});
steamUser.chat.on("friendMessageEcho", (message) => {
// noinspection JSIgnoredPromiseFromCall
2024-03-17 23:13:10 +08:00
logMessage(dateToString(message.server_timestamp), message.steamid_friend, message.message, true, message.ordinal);
2024-03-17 21:58:42 +08:00
});
/**
* @param {Date} date
* @returns {string}
*/
function dateToString(date) {
2024-03-18 10:33:21 +08:00
return dateformat(date, "yyyy-mm-dd HH:MM:ss.l");
2024-03-17 21:58:42 +08:00
}
2024-03-17 23:13:10 +08:00
2024-04-28 10:21:21 +08:00
/**
* @param {SteamID} steamID
* @returns {Promise<{player_name: string}>}
*/
async function getUserInfo(steamID) {
return client.getUserInfo("76561199051592938", (ignore) => {
importChatHistory(steamID);
});
}
2024-03-17 23:13:10 +08:00
function importChatHistory(steamID) {
if (steamID === steamUser.steamID) {
return;
}
2024-03-18 00:22:09 +08:00
steamUser.chat.getFriendMessageHistory(steamID.getSteamID64(), (err, messages) => {
2024-03-17 23:13:10 +08:00
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,
2024-03-18 00:18:38 +08:00
message.sender.getSteamID64() === steamUser.steamID.getSteamID64(),
2024-03-17 23:13:10 +08:00
message.ordinal,
);
}
});
}
module.exports = {
steamUser: steamUser,
getUserInfo: getUserInfo,
}