1
0

NukeChatMessagesCommand.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Diagnostics;
  2. using Content.Server.Administration;
  3. using Content.Server.Chat.V2.Repository;
  4. using Content.Shared.Administration;
  5. using Robust.Shared.Toolshed;
  6. using Robust.Shared.Toolshed.Errors;
  7. using Robust.Shared.Utility;
  8. namespace Content.Server.Chat.V2.Commands;
  9. [ToolshedCommand, AdminCommand(AdminFlags.Admin)]
  10. public sealed class NukeChatMessagesCommand : ToolshedCommand
  11. {
  12. [Dependency] private readonly IEntitySystemManager _manager = default!;
  13. [CommandImplementation("usernames")]
  14. public void Command(IInvocationContext ctx, string usernamesCsv)
  15. {
  16. var usernames = usernamesCsv.Split(',');
  17. foreach (var username in usernames)
  18. {
  19. if (!_manager.GetEntitySystem<ChatRepositorySystem>().NukeForUsername(username, out var reason))
  20. {
  21. ctx.ReportError(new NukeMessagesForUsernameError(reason));
  22. }
  23. }
  24. }
  25. }
  26. public record struct NukeMessagesForUsernameError(string Reason) : IConError
  27. {
  28. public FormattedMessage DescribeInner()
  29. {
  30. return FormattedMessage.FromUnformatted(Reason);
  31. }
  32. public string? Expression { get; set; }
  33. public Vector2i? IssueSpan { get; set; }
  34. public StackTrace? Trace { get; set; }
  35. }