Skip to content

Commit e208977

Browse files
committed
Allow staff-only logging of commands when non-staff logs are disabled.
Remove redacted userids from Hurting & Dying events for staff-only logs.
1 parent 18186ff commit e208977

File tree

5 files changed

+26
-11
lines changed

5 files changed

+26
-11
lines changed

DiscordIntegration.Bot/Bot.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,16 +102,21 @@ private async void OnReceived(object? sender, ReceivedFullEventArgs ev)
102102
switch (command.Action)
103103
{
104104
case ActionType.Log:
105+
Log.Debug(ServerNumber, nameof(OnReceived), $"{Enum.TryParse(command.Parameters[0].ToString(), true, out ChannelType _)}");
105106
if (Enum.TryParse(command.Parameters[0].ToString(), true, out ChannelType type))
106107
{
107108
foreach (LogChannel channel in Program.Config.Channels[ServerNumber].Logs[type])
108109
{
110+
Log.Debug(ServerNumber, nameof(OnReceived), "Adding message to queue..");
109111
if (!Messages.ContainsKey(channel))
110112
Messages.Add(channel, string.Empty);
111113
Messages[channel] += $"[{DateTime.Now}] {command.Parameters[1]}\n";
112114
}
115+
116+
break;
113117
}
114118

119+
Log.Debug(ServerNumber, nameof(OnReceived), "Failed to add message to queue.");
115120
break;
116121
case ActionType.SendMessage:
117122
if (ulong.TryParse(command.Parameters[0].ToString(), out ulong chanId))
@@ -191,6 +196,7 @@ private async Task DequeueMessages()
191196
{
192197
for (;;)
193198
{
199+
Log.Debug(ServerNumber, nameof(DequeueMessages), "Dequeue loop");
194200
List<KeyValuePair<LogChannel, string>> toSend = new();
195201
lock (Messages)
196202
{
@@ -229,17 +235,21 @@ private async Task DequeueMessages()
229235
Messages.Add(message.Key, message.Value.Substring(msg.Length));
230236
}
231237
else
238+
{
239+
Log.Debug(ServerNumber, nameof(DequeueMessages), $"Sending message to {message.Key.Id}: {message.Key.LogType} -- {message.Value}");
232240
switch (message.Key.LogType)
233241
{
234242
case LogType.Embed:
235-
_ = Guild.GetTextChannel(message.Key.Id).SendMessageAsync(embed: await EmbedBuilderService.CreateBasicEmbed($"Server {ServerNumber} Logs", message.Value, Color.Green));
243+
await Guild.GetTextChannel(message.Key.Id).SendMessageAsync(embed: await EmbedBuilderService.CreateBasicEmbed($"Server {ServerNumber} Logs", message.Value, Color.Green));
236244
break;
237245
case LogType.Text:
238-
_ = Guild.GetTextChannel(message.Key.Id).SendMessageAsync($"[{ServerNumber}]: {message.Value}");
246+
await Guild.GetTextChannel(message.Key.Id).SendMessageAsync($"[{ServerNumber}]: {message.Value}");
239247
break;
240248
default:
241249
throw new ArgumentOutOfRangeException();
242250
}
251+
Log.Debug(ServerNumber, nameof(DequeueMessages), "Message sent.");
252+
}
243253
}
244254
catch (Exception e)
245255
{
@@ -248,6 +258,7 @@ private async Task DequeueMessages()
248258
}
249259
}
250260

261+
Log.Debug(ServerNumber, nameof(DequeueMessages), $"Waiting {Program.Config.MessageDelay} ms");
251262
await Task.Delay(Program.Config.MessageDelay);
252263
}
253264
}

DiscordIntegration/DiscordIntegration.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<PropertyGroup>
44
<ImplicitUsings>enable</ImplicitUsings>
55
<Nullable>annotations</Nullable>
6-
<AssemblyVersion>6.0.5</AssemblyVersion>
7-
<FileVersion>6.0.5</FileVersion>
6+
<AssemblyVersion>6.0.6</AssemblyVersion>
7+
<FileVersion>6.0.6</FileVersion>
88
<LangVersion>10</LangVersion>
99
<TargetFramework>net472</TargetFramework>
1010
</PropertyGroup>

DiscordIntegration/Events/PlayerHandler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public async void OnHurting(HurtingEventArgs ev)
218218
await Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.GameEvents, string.Format(Language.HasDamagedForWith, ev.Attacker != null ? ev.Attacker.Nickname : "Server", Instance.Config.ShouldLogUserIds ? ev.Attacker != null ? ev.Attacker.UserId : string.Empty : Language.Redacted, ev.Attacker?.Role ?? RoleType.None, ev.Target.Nickname, Instance.Config.ShouldLogUserIds ? ev.Target.UserId : Language.Redacted, ev.Target.Role, ev.Amount, ev.Handler.Type))).ConfigureAwait(false);
219219

220220
if (Instance.Config.StaffOnlyEventsToLog.HurtingPlayer && ev.Target != null && (ev.Attacker == null || !Instance.Config.ShouldLogFriendlyFireDamageOnly || ev.Attacker.Role.Side == ev.Target.Role.Side) && !Instance.Config.BlacklistedDamageTypes.Contains(ev.Handler.Type) && (!Instance.Config.OnlyLogPlayerDamage || ev.Attacker != null))
221-
await Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.StaffCopy, string.Format(Language.HasDamagedForWith, ev.Attacker != null ? ev.Attacker.Nickname : "Server", Instance.Config.ShouldLogUserIds ? ev.Attacker != null ? ev.Attacker.UserId : string.Empty : Language.Redacted, ev.Attacker?.Role ?? RoleType.None, ev.Target.Nickname, Instance.Config.ShouldLogUserIds ? ev.Target.UserId : Language.Redacted, ev.Target.Role, ev.Amount, ev.Handler.Type))).ConfigureAwait(false);
221+
await Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.StaffCopy, string.Format(Language.HasDamagedForWith, ev.Attacker != null ? ev.Attacker.Nickname : "Server", ev.Attacker != null ? ev.Attacker.UserId : string.Empty, ev.Attacker?.Role ?? RoleType.None, ev.Target.Nickname, ev.Target.UserId, ev.Target.Role, ev.Amount, ev.Handler.Type))).ConfigureAwait(false);
222222
}
223223

224224
public async void OnDying(DyingEventArgs ev)
@@ -227,7 +227,7 @@ public async void OnDying(DyingEventArgs ev)
227227
await Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.GameEvents, string.Format(Language.HasKilledWith, ev.Killer != null ? ev.Killer.Nickname : "Server", Instance.Config.ShouldLogUserIds ? ev.Killer != null ? ev.Killer.UserId : string.Empty : Language.Redacted, ev.Killer?.Role ?? RoleType.None, ev.Target.Nickname, Instance.Config.ShouldLogUserIds ? ev.Target.UserId : Language.Redacted, ev.Target.Role, ev.Handler.Type))).ConfigureAwait(false);
228228

229229
if (Instance.Config.StaffOnlyEventsToLog.PlayerDying && ev.Target != null && (ev.Killer == null || !Instance.Config.ShouldLogFriendlyFireKillsOnly || ev.Killer.Role.Side == ev.Target.Role.Side))
230-
await Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.StaffCopy, string.Format(Language.HasKilledWith, ev.Killer != null ? ev.Killer.Nickname : "Server", Instance.Config.ShouldLogUserIds ? ev.Killer != null ? ev.Killer.UserId : string.Empty : Language.Redacted, ev.Killer?.Role ?? RoleType.None, ev.Target.Nickname, Instance.Config.ShouldLogUserIds ? ev.Target.UserId : Language.Redacted, ev.Target.Role, ev.Handler.Type))).ConfigureAwait(false);
230+
await Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.StaffCopy, string.Format(Language.HasKilledWith, ev.Killer != null ? ev.Killer.Nickname : "Server", ev.Killer != null ? ev.Killer.UserId : string.Empty, ev.Killer?.Role ?? RoleType.None, ev.Target.Nickname, ev.Target.UserId, ev.Target.Role, ev.Handler.Type))).ConfigureAwait(false);
231231
}
232232

233233
public async void OnThrowingGrenade(ThrowingItemEventArgs ev)
@@ -318,7 +318,7 @@ public async void OnChangingGroup(ChangingGroupEventArgs ev)
318318
{
319319
if (ev.Player != null && Instance.Config.EventsToLog.ChangingPlayerGroup && (!ev.Player.DoNotTrack || !Instance.Config.ShouldRespectDoNotTrack))
320320
await Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.GameEvents, string.Format(Language.GroupSet, ev.Player.Nickname, Instance.Config.ShouldLogUserIds ? ev.Player.UserId : Language.Redacted, ev.Player.Role, ev.NewGroup?.BadgeText ?? Language.None, ev.NewGroup?.BadgeColor ?? Language.None))).ConfigureAwait(false);
321-
if (Instance.Config.StaffOnlyEventsToLog.ChangingPlayerGroup)
321+
if (ev.Player != null && Instance.Config.StaffOnlyEventsToLog.ChangingPlayerGroup)
322322
await Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.StaffCopy, string.Format(Language.GroupSet, ev.Player.Nickname, ev.Player.UserId, ev.Player.Role, ev.NewGroup?.BadgeText ?? Language.None, ev.NewGroup?.BadgeColor ?? Language.None))).ConfigureAwait(false);
323323
}
324324
}

DiscordIntegration/Patches/ClientCommandLogging.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
5353

5454
private static void LogCommand(string query, CommandSender sender)
5555
{
56-
if (!DiscordIntegration.Instance.Config.EventsToLog.SendingConsoleCommands)
56+
if (!DiscordIntegration.Instance.Config.EventsToLog.SendingConsoleCommands && !DiscordIntegration.Instance.Config.StaffOnlyEventsToLog.SendingConsoleCommands)
5757
return;
58+
5859
string[] args = query.Trim().Split(QueryProcessor.SpaceArray, 512, StringSplitOptions.RemoveEmptyEntries);
5960
if (args[0].StartsWith("$"))
6061
return;
@@ -64,7 +65,8 @@ private static void LogCommand(string query, CommandSender sender)
6465
: Server.Host;
6566
if (player == null || (!string.IsNullOrEmpty(player.UserId) && DiscordIntegration.Instance.Config.TrustedAdmins.Contains(player.UserId)))
6667
return;
67-
_ = DiscordIntegration.Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.Command, string.Format(DiscordIntegration.Language.UsedCommand, sender.Nickname, sender.SenderId ?? DiscordIntegration.Language.DedicatedServer, player.Role, args[0], string.Join(" ", args.Where(a => a != args[0])))));
68+
if (DiscordIntegration.Instance.Config.EventsToLog.SendingConsoleCommands)
69+
_ = DiscordIntegration.Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.Command, string.Format(DiscordIntegration.Language.UsedCommand, sender.Nickname, sender.SenderId ?? DiscordIntegration.Language.DedicatedServer, player.Role, args[0], string.Join(" ", args.Where(a => a != args[0])))));
6870
if (DiscordIntegration.Instance.Config.StaffOnlyEventsToLog.SendingConsoleCommands)
6971
_ = DiscordIntegration.Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.StaffCopy, string.Format(DiscordIntegration.Language.UsedCommand, sender.Nickname, sender.SenderId ?? DiscordIntegration.Language.DedicatedServer, player.Role, args[0], string.Join(" ", args.Where(a => a != args[0])))));
7072
}

DiscordIntegration/Patches/CommandLogging.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,9 @@ private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstructi
4949

5050
private static void LogCommand(string query, CommandSender sender)
5151
{
52-
if (!DiscordIntegration.Instance.Config.EventsToLog.SendingRemoteAdminCommands)
52+
if (!DiscordIntegration.Instance.Config.EventsToLog.SendingRemoteAdminCommands && !DiscordIntegration.Instance.Config.StaffOnlyEventsToLog.SendingRemoteAdminCommands)
5353
return;
54+
5455
string[] args = query.Trim().Split(QueryProcessor.SpaceArray, 512, StringSplitOptions.RemoveEmptyEntries);
5556
if (args[0].StartsWith("$"))
5657
return;
@@ -60,7 +61,8 @@ private static void LogCommand(string query, CommandSender sender)
6061
: Server.Host;
6162
if (player == null || (!string.IsNullOrEmpty(player.UserId) && DiscordIntegration.Instance.Config.TrustedAdmins.Contains(player.UserId)))
6263
return;
63-
_ = DiscordIntegration.Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.Command, string.Format(DiscordIntegration.Language.UsedCommand, sender.Nickname, sender.SenderId ?? DiscordIntegration.Language.DedicatedServer, player.Role, args[0], string.Join(" ", args.Where(a => a != args[0])))));
64+
if (DiscordIntegration.Instance.Config.EventsToLog.SendingRemoteAdminCommands)
65+
_ = DiscordIntegration.Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.Command, string.Format(DiscordIntegration.Language.UsedCommand, sender.Nickname, sender.SenderId ?? DiscordIntegration.Language.DedicatedServer, player.Role, args[0], string.Join(" ", args.Where(a => a != args[0])))));
6466
if (DiscordIntegration.Instance.Config.StaffOnlyEventsToLog.SendingRemoteAdminCommands)
6567
_ = DiscordIntegration.Network.SendAsync(new RemoteCommand(ActionType.Log, ChannelType.StaffCopy, string.Format(DiscordIntegration.Language.UsedCommand, sender.Nickname, sender.SenderId ?? DiscordIntegration.Language.DedicatedServer, player.Role, args[0], string.Join(" ", args.Where(a => a != args[0])))));
6668
}

0 commit comments

Comments
 (0)