diff --git a/Content.Server/White/Commands/PoshelnahuiCommand.cs b/Content.Server/White/Commands/PoshelnahuiCommand.cs new file mode 100644 index 0000000000..598a6dccaa --- /dev/null +++ b/Content.Server/White/Commands/PoshelnahuiCommand.cs @@ -0,0 +1,49 @@ +using System.Linq; +using Content.Server.Administration; +using Content.Shared.Administration; +using Robust.Server.Player; +using Robust.Shared.Console; + +namespace Content.Server.White.Commands; + +[AdminCommand(AdminFlags.Admin)] +public sealed class PoshelnahuiCommand : IConsoleCommand +{ + public string Command => "poshelnahui"; + public string Description => "Close client game lol"; + public string Help => "poshelnahui "; + public void Execute(IConsoleShell shell, string argStr, string[] args) + { + if (args.Length != 1 || string.IsNullOrEmpty(args[0])) + { + shell.WriteLine("Wrong number of arguments"); + return; + } + + var playerManager = IoCManager.Resolve(); + var players = playerManager.ServerSessions.ToList(); + + var player = players.Find(x => x.Name == args[0]); + + if (player == null) + { + shell.WriteLine("Player not found"); + return; + } + + var consoleHost = IoCManager.Resolve(); + consoleHost.RemoteExecuteCommand(player, "hardquit"); + shell.WriteLine("Message sent"); + } + + public CompletionResult GetCompletion(IConsoleShell shell, string[] args) { + if (args.Length == 1) + { + var playerMgr = IoCManager.Resolve(); + var options = playerMgr.ServerSessions.Select(c => c.Name).OrderBy(c => c).ToArray(); + return CompletionResult.FromHintOptions(options, "ckey"); + } + + return CompletionResult.Empty; + } +}