using System.Linq; using Content.Server.Administration.Notes; using Content.Shared.Administration; using Robust.Server.Player; using Robust.Shared.Console; namespace Content.Server.Administration.Commands; [AdminCommand(AdminFlags.ViewNotes)] public sealed class OpenAdminNotesCommand : LocalizedCommands { public const string CommandName = "adminnotes"; public override string Command => CommandName; public override async void Execute(IConsoleShell shell, string argStr, string[] args) { if (shell.Player is not { } player) { shell.WriteError(Loc.GetString("shell-cannot-run-command-from-server")); return; } Guid notedPlayer; switch (args.Length) { case 1 when Guid.TryParse(args[0], out notedPlayer): break; case 1: var locator = IoCManager.Resolve(); var dbGuid = await locator.LookupIdByNameAsync(args[0]); if (dbGuid == null) { shell.WriteError(Loc.GetString("cmd-adminnotes-wrong-target", ("user", args[0]))); return; } notedPlayer = dbGuid.UserId; break; default: shell.WriteError(Loc.GetString("cmd-adminnotes-args-error")); return; } await IoCManager.Resolve().OpenEui(player, notedPlayer); } public override CompletionResult GetCompletion(IConsoleShell shell, string[] args) { if (args.Length != 1) return CompletionResult.Empty; var playerMgr = IoCManager.Resolve(); var options = playerMgr.Sessions.Select(c => c.Name).OrderBy(c => c).ToArray(); return CompletionResult.FromHintOptions(options, Loc.GetString("cmd-adminnotes-hint")); } }