EraseCommand.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System.Linq;
  2. using Content.Server.Administration.Systems;
  3. using Content.Shared.Administration;
  4. using Robust.Server.Player;
  5. using Robust.Shared.Console;
  6. namespace Content.Server.Administration.Commands;
  7. [AdminCommand(AdminFlags.Admin)]
  8. public sealed class EraseCommand : LocalizedEntityCommands
  9. {
  10. [Dependency] private readonly IPlayerLocator _locator = default!;
  11. [Dependency] private readonly IPlayerManager _players = default!;
  12. [Dependency] private readonly AdminSystem _admin = default!;
  13. public override string Command => "erase";
  14. public override async void Execute(IConsoleShell shell, string argStr, string[] args)
  15. {
  16. if (args.Length != 1)
  17. {
  18. shell.WriteError(Loc.GetString("cmd-erase-invalid-args"));
  19. shell.WriteLine(Help);
  20. return;
  21. }
  22. var located = await _locator.LookupIdByNameOrIdAsync(args[0]);
  23. if (located == null)
  24. {
  25. shell.WriteError(Loc.GetString("cmd-erase-player-not-found"));
  26. return;
  27. }
  28. _admin.Erase(located.UserId);
  29. }
  30. public override CompletionResult GetCompletion(IConsoleShell shell, string[] args)
  31. {
  32. if (args.Length != 1)
  33. return CompletionResult.Empty;
  34. var options = _players.Sessions.OrderBy(c => c.Name).Select(c => c.Name).ToArray();
  35. return CompletionResult.FromHintOptions(options, Loc.GetString("cmd-erase-player-completion"));
  36. }
  37. }