ClearAlert.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Content.Server.Administration;
  2. using Content.Server.Commands;
  3. using Content.Shared.Administration;
  4. using Content.Shared.Alert;
  5. using Robust.Shared.Console;
  6. namespace Content.Server.Alert.Commands
  7. {
  8. [AdminCommand(AdminFlags.Debug)]
  9. public sealed class ClearAlert : IConsoleCommand
  10. {
  11. [Dependency] private readonly IEntityManager _e = default!;
  12. public string Command => "clearalert";
  13. public string Description => "Clears an alert for a player, defaulting to current player";
  14. public string Help => "clearalert <alertType> <name or userID, omit for current player>";
  15. public void Execute(IConsoleShell shell, string argStr, string[] args)
  16. {
  17. var player = shell.Player;
  18. if (player?.AttachedEntity == null)
  19. {
  20. shell.WriteLine("You don't have an entity.");
  21. return;
  22. }
  23. var attachedEntity = player.AttachedEntity.Value;
  24. if (args.Length > 1)
  25. {
  26. var target = args[1];
  27. if (!CommandUtils.TryGetAttachedEntityByUsernameOrId(shell, target, player, out attachedEntity)) return;
  28. }
  29. if (!_e.TryGetComponent(attachedEntity, out AlertsComponent? alertsComponent))
  30. {
  31. shell.WriteLine("user has no alerts component");
  32. return;
  33. }
  34. var alertType = args[0];
  35. var alertsSystem = _e.System<AlertsSystem>();
  36. if (!alertsSystem.TryGet(alertType, out var alert))
  37. {
  38. shell.WriteLine("unrecognized alertType " + alertType);
  39. return;
  40. }
  41. alertsSystem.ClearAlert(attachedEntity, alert.ID);
  42. }
  43. }
  44. }