From cfe322f58ecc6f5f337c3a6b52f4e4b6123d5a9c Mon Sep 17 00:00:00 2001 From: MrAshieB Date: Tue, 17 Jun 2025 21:30:54 +0100 Subject: [PATCH] feat: Add event logging for chat setting changes --- .../game/client/handler/ChatSetModeHandler.ts | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/src/network/game/client/handler/ChatSetModeHandler.ts b/src/network/game/client/handler/ChatSetModeHandler.ts index 8539036c5..e4e641d37 100644 --- a/src/network/game/client/handler/ChatSetModeHandler.ts +++ b/src/network/game/client/handler/ChatSetModeHandler.ts @@ -2,12 +2,44 @@ import Player from '#/engine/entity/Player.js'; import World from '#/engine/World.js'; import MessageHandler from '#/network/game/client/handler/MessageHandler.js'; import ChatSetMode from '#/network/game/client/model/ChatSetMode.js'; +import { LoggerEventType } from '#/server/logger/LoggerEventType.js'; + +const CHAT_MODE_MAP: Record = { + 0: 'On', + 1: 'Friends', + 2: 'Off', + 3: 'Hide' +}; + +const CHAT_MODE_NAME_MAP: Partial> = { + publicChat: 'Public chat', + privateChat: 'Private chat', + tradeDuel: 'Trade/duel' +}; export default class ChatSetModeHandler extends MessageHandler { handle(_message: ChatSetMode, player: Player): boolean { - player.publicChat = _message.publicChat; - player.privateChat = _message.privateChat; - player.tradeDuel = _message.tradeDuel; + const changes: Partial> = {}; + + if (_message.publicChat !== player.publicChat) { + changes.publicChat = CHAT_MODE_MAP[_message.publicChat] || String(_message.publicChat); + player.publicChat = _message.publicChat; + } + if (_message.privateChat !== player.privateChat) { + changes.privateChat = CHAT_MODE_MAP[_message.privateChat] || String(_message.privateChat); + player.privateChat = _message.privateChat; + } + if (_message.tradeDuel !== player.tradeDuel) { + changes.tradeDuel = CHAT_MODE_MAP[_message.tradeDuel] || String(_message.tradeDuel); + player.tradeDuel = _message.tradeDuel; + } + + if (Object.keys(changes).length > 0) { + player.addSessionLog(LoggerEventType.MODERATOR, + Object.entries(changes).map(([key, value]) => + `Set ${CHAT_MODE_NAME_MAP[key as keyof ChatSetMode]} to '${value}'`).join('; ') + ); + } World.sendPrivateChatModeToFriendsServer(player);