Files
tbd-station-14/Content.Server/Administration/Commands/PardonCommand.cs
Kyle Tyo 57babe15ee Command resolve mega pr 6 (#38398)
commit progress
2025-06-17 19:22:03 +02:00

59 lines
1.8 KiB
C#

using Content.Server.Database;
using Content.Shared.Administration;
using Robust.Shared.Console;
namespace Content.Server.Administration.Commands
{
[AdminCommand(AdminFlags.Ban)]
public sealed class PardonCommand : LocalizedCommands
{
[Dependency] private readonly IServerDbManager _dbManager = default!;
public override string Command => "pardon";
public override async void Execute(IConsoleShell shell, string argStr, string[] args)
{
var player = shell.Player;
if (args.Length != 1)
{
shell.WriteLine(Help);
return;
}
if (!int.TryParse(args[0], out var banId))
{
shell.WriteLine(Loc.GetString($"cmd-pardon-unable-to-parse", ("id", args[0]), ("help", Help)));
return;
}
var ban = await _dbManager.GetServerBanAsync(banId);
if (ban == null)
{
shell.WriteLine($"No ban found with id {banId}");
return;
}
if (ban.Unban != null)
{
if (ban.Unban.UnbanningAdmin != null)
{
shell.WriteLine(Loc.GetString($"cmd-pardon-already-pardoned-specific",
("admin", ban.Unban.UnbanningAdmin.Value),
("time", ban.Unban.UnbanTime)));
}
else
shell.WriteLine(Loc.GetString($"cmd-pardon-already-pardoned"));
return;
}
await _dbManager.AddServerUnbanAsync(new ServerUnbanDef(banId, player?.UserId, DateTimeOffset.Now));
shell.WriteLine(Loc.GetString($"cmd-pardon-success", ("id", banId)));
}
}
}