From 4d6efc8dfe0c041c7209178f6bba787a84745fe2 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Wed, 23 Sep 2026 13:31:53 +0000 Subject: [PATCH] Announce logging (#46147) * Announce logging * 2 * 3 --- .../Administration/UI/AdminAnnounceEui.cs | 3 +-- Content.Server/Announcements/AnnounceCommand.cs | 15 +++++++++++++++ Content.Server/Chat/Managers/ChatManager.cs | 17 +++++++++++------ Content.Server/Chat/Managers/IChatManager.cs | 3 ++- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/Content.Server/Administration/UI/AdminAnnounceEui.cs b/Content.Server/Administration/UI/AdminAnnounceEui.cs index 0abd11524c..eab5f138c6 100644 --- a/Content.Server/Administration/UI/AdminAnnounceEui.cs +++ b/Content.Server/Administration/UI/AdminAnnounceEui.cs @@ -1,5 +1,4 @@ using Content.Server.Administration.Managers; -using Content.Server.Chat; using Content.Server.Chat.Managers; using Content.Server.Chat.Systems; using Content.Server.EUI; @@ -46,7 +45,7 @@ namespace Content.Server.Administration.UI switch (doAnnounce.AnnounceType) { case AdminAnnounceType.Server: - _chatManager.DispatchServerAnnouncement(doAnnounce.Announcement); + _chatManager.DispatchServerAnnouncement(doAnnounce.Announcement, sender: Player); break; // TODO: Per-station announcement support case AdminAnnounceType.Station: diff --git a/Content.Server/Announcements/AnnounceCommand.cs b/Content.Server/Announcements/AnnounceCommand.cs index 0edf27dd4e..d0774f4f44 100644 --- a/Content.Server/Announcements/AnnounceCommand.cs +++ b/Content.Server/Announcements/AnnounceCommand.cs @@ -1,6 +1,8 @@ using Content.Server.Administration; +using Content.Server.Administration.Logs; using Content.Server.Chat.Systems; using Content.Shared.Administration; +using Content.Shared.Database; using Robust.Shared.Audio; using Robust.Shared.Console; using Robust.Shared.ContentPack; @@ -14,6 +16,7 @@ public sealed partial class AnnounceCommand : LocalizedEntityCommands [Dependency] private ChatSystem _chat = default!; [Dependency] private IPrototypeManager _proto = default!; [Dependency] private IResourceManager _res = default!; + [Dependency] private IAdminLogManager _adminLogger = default!; public override string Command => "announce"; public override string Description => Loc.GetString("cmd-announce-desc"); @@ -59,6 +62,18 @@ public sealed partial class AnnounceCommand : LocalizedEntityCommands sound = new SoundPathSpecifier(args[3]); _chat.DispatchGlobalAnnouncement(message, sender, true, sound, color); + + if (shell.Player is null) + { + _adminLogger.Add(LogType.Chat, LogImpact.Low, + $"LOCAL used 'announce' with displayed sender {sender}: {message}"); + } + else + { + _adminLogger.Add(LogType.Chat, LogImpact.Low, + $"{shell.Player:Player} used 'announce' with displayed sender {sender}: {message}"); + } + shell.WriteLine(Loc.GetString("shell-command-success")); } diff --git a/Content.Server/Chat/Managers/ChatManager.cs b/Content.Server/Chat/Managers/ChatManager.cs index bba3fdb080..9b9a2d06d0 100644 --- a/Content.Server/Chat/Managers/ChatManager.cs +++ b/Content.Server/Chat/Managers/ChatManager.cs @@ -92,10 +92,10 @@ private ISawmill? _sawmill = default!; DispatchServerAnnouncement(Loc.GetString(val ? "chat-manager-admin-ooc-chat-enabled-message" : "chat-manager-admin-ooc-chat-disabled-message")); } - public void DeleteMessagesBy(NetUserId uid) - { - if (!_players.TryGetValue(uid, out var user)) - return; + public void DeleteMessagesBy(NetUserId uid) + { + if (!_players.TryGetValue(uid, out var user)) + return; var msg = new MsgDeleteChatMessagesBy { Key = user.Key, Entities = user.Entities }; _netManager.ServerSendToAll(msg); @@ -116,7 +116,7 @@ private ISawmill? _sawmill = default!; #region Server Announcements - public void DispatchServerAnnouncement(string message, Color? colorOverride = null) + public void DispatchServerAnnouncement(string message, Color? colorOverride = null, ICommonSession? sender = null) { var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", FormattedMessage.EscapeText(message))); ChatMessageToAll(ChatChannel.Server, message, wrappedMessage, EntityUid.Invalid, hideChat: false, recordReplay: true, colorOverride: colorOverride); @@ -125,7 +125,12 @@ private ISawmill? _sawmill = default!; // during server setup when some cvars are changed _sawmill?.Info(message); - _adminLogger.Add(LogType.Chat, LogImpact.Low, $"Server announcement: {message}"); + if (sender is null) //just so that log search works... + _adminLogger.Add(LogType.Chat, LogImpact.Low, + $"Server announcement from SYSTEM: {message}"); + else + _adminLogger.Add(LogType.Chat, LogImpact.Low, + $"Server announcement from {sender:Player}: {message}"); } public void DispatchServerMessage(ICommonSession player, string message, bool suppressLog = false) diff --git a/Content.Server/Chat/Managers/IChatManager.cs b/Content.Server/Chat/Managers/IChatManager.cs index 9ac2a27c4e..6e57df42be 100644 --- a/Content.Server/Chat/Managers/IChatManager.cs +++ b/Content.Server/Chat/Managers/IChatManager.cs @@ -14,7 +14,8 @@ namespace Content.Server.Chat.Managers /// /// /// Override the color of the message being sent. - void DispatchServerAnnouncement(string message, Color? colorOverride = null); + /// Session of the administrator who initiated the announcement. + void DispatchServerAnnouncement(string message, Color? colorOverride = null, ICommonSession? sender = null); void DispatchServerMessage(ICommonSession player, string message, bool suppressLog = false);