Skip to content

Commit

Permalink
new command kick_hide (#718)
Browse files Browse the repository at this point in the history
## Описание PR
<!-- Что вы изменили в этом пулл реквесте? -->
Команда на тихий кик пользователя, аналог в покарашках только командой

## Требования
<!--
В связи с наплывом ПР'ов нам необходимо убедиться, что ПР'ы следуют
правильным рекомендациям.

Пожалуйста, уделите время прочтению, если делаете пулл реквест (ПР)
впервые.

Отметьте поля ниже, чтобы подтвердить, что Вы действительно видели их
(поставьте X в скобках, например [X]):
-->
- [x] Я прочитал(а) и следую [Руководство по созданию пулл
реквестов](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html).
Я понимаю, что в противном случае мой ПР может быть закрыт по усмотрению
мейнтейнера.
- [x] Я добавил скриншоты/видео к этому пулл реквесту, демонстрирующие
его изменения в игре, **или** этот пулл реквест не требует демонстрации
в игре


**Чейнджлог**
### NO CL. NO FUN
  • Loading branch information
Schrodinger71 authored Oct 31, 2024
1 parent 629a0ac commit 474062b
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 2 deletions.
56 changes: 56 additions & 0 deletions Content.Server/ADT/Administration/Commands/KickHideCommand.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
using System.Linq;
using Content.Shared.Administration;
using Robust.Server.Player;
using Robust.Shared.Console;
using Content.Server.GhostKick;
using Serilog;
using Robust.Shared.Player;

namespace Content.Server.Administration.Commands;

// Команда для тихого кика
// Автор: Discord: schrodinger71
// Данная команда предназначена для глав проекта "Время Приключений" и позволяет тихо какать разрывая соединение пользователя.
[AdminCommand(AdminFlags.Permissions)]
public sealed class KickHideCommand : LocalizedCommands
{
[Dependency] private readonly IPlayerLocator _locator = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly GhostKickManager _ghostKickManager = default!;

public override string Command => "kick_hide";

public override async void Execute(IConsoleShell shell, string argStr, string[] args)
{
if (args.Length == 0)
{
shell.WriteError("cmd-kick_hide-error-arg");
return;
}

var target = args[0];
var located = await _locator.LookupIdByNameOrIdAsync(target);

if (located == null)
{
shell.WriteError(Loc.GetString("cmd-kick_hide-player"));
return;
}

var targetSession = _playerManager.GetSessionById(located.UserId);
_ghostKickManager.DoDisconnect(targetSession.Channel, "Smitten.");
}

public override CompletionResult GetCompletion(IConsoleShell shell, string[] args)
{
if (args.Length == 1)
{
var options = _playerManager.Sessions.Select(c => c.Name).OrderBy(c => c).ToArray();
return CompletionResult.FromHintOptions(
options,
LocalizationManager.GetString("cmd-ban-hint"));
}

return CompletionResult.Empty;
}
}
8 changes: 8 additions & 0 deletions Resources/Locale/ru-RU/ADT/administration/commands.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
cmd-banmass-desc = Банит сразу нескольких игроков по никнейму или ID.
cmd-banmass-help = Использование: banmass "Причина" <время> name1 name2 name3.. Время - продолжительность в минутах, 0 для пермабана.
cmd-kick_hide-desc = Тихо кикает пользователя разрывая соединение.
cmd-kick_hide-help = Использование: kick_hide <nickname>
cmd-kick_hide-player = Сессия игрока не найдена.
cmd-kick_hide-error-arg = Не указан аргумент для команды.
2 changes: 0 additions & 2 deletions Resources/Locale/ru-RU/ADT/info/ban.ftl

This file was deleted.

0 comments on commit 474062b

Please sign in to comment.