using System.Text.RegularExpressions; using Data.Models.Client; using SharedLibraryCore; using SharedLibraryCore.Commands; using SharedLibraryCore.Configuration; using SharedLibraryCore.Interfaces; namespace IW4MAdmin.Plugins.Mute.Commands; public class TempMuteCommand : Command { private readonly MuteManager _muteManager; private const string TempBanRegex = @"([0-9]+\w+)\ (.+)"; public TempMuteCommand(CommandConfiguration config, ITranslationLookup translationLookup, MuteManager muteManager) : base(config, translationLookup) { _muteManager = muteManager; Name = "tempmute"; Description = translationLookup["PLUGINS_MUTE_COMMANDS_TEMPMUTE_DESC"]; Alias = "tm"; Permission = EFClient.Permission.Moderator; RequiresTarget = true; SupportedGames = Plugin.SupportedGames; Arguments = new[] { new CommandArgument { Name = translationLookup["COMMANDS_ARGS_PLAYER"], Required = true }, new CommandArgument { Name = translationLookup["COMMANDS_ARGS_DURATION"], Required = true }, new CommandArgument { Name = translationLookup["COMMANDS_ARGS_REASON"], Required = true } }; } public override async Task ExecuteAsync(GameEvent gameEvent) { if (gameEvent.Origin.ClientId == gameEvent.Target.ClientId) { gameEvent.Origin.Tell(_translationLookup["COMMANDS_DENY_SELF_TARGET"]); return; } var match = Regex.Match(gameEvent.Data, TempBanRegex); if (match.Success) { var expiration = DateTime.UtcNow + match.Groups[1].ToString().ParseTimespan(); var reason = match.Groups[2].ToString(); if (await _muteManager.Mute(gameEvent.Owner, gameEvent.Origin, gameEvent.Target, expiration, reason)) { gameEvent.Origin.Tell(_translationLookup["PLUGINS_MUTE_COMMANDS_TEMPMUTE_TEMPMUTED"] .FormatExt(gameEvent.Target.CleanedName)); gameEvent.Target.Tell(_translationLookup["PLUGINS_MUTE_COMMANDS_TEMPMUTE_TARGET_TEMPMUTED"] .FormatExt(expiration.HumanizeForCurrentCulture(), reason)); return; } gameEvent.Origin.Tell(_translationLookup["PLUGINS_MUTE_COMMANDS_MUTE_NOT_UNMUTED"] .FormatExt(gameEvent.Target.CleanedName)); return; } gameEvent.Origin.Tell(_translationLookup["PLUGINS_MUTE_COMMANDS_TEMPMUTE_BAD_FORMAT"]); } }