mirror of
https://github.com/RaidMax/IW4M-Admin.git
synced 2025-06-11 15:52:25 -05:00
Fix Threading Duplicate for Mute Penalty & Added !MuteInfo & Fix PM (#269)
* Resolve duplicate migration Resolve unmuting state double penalties * Change order of operation * Added MuteInfoCommand.cs * Resolve !pm and @broadcast permanently being disabled
This commit is contained in:
50
Plugins/Mute/Commands/MuteInfoCommand.cs
Normal file
50
Plugins/Mute/Commands/MuteInfoCommand.cs
Normal file
@ -0,0 +1,50 @@
|
||||
using Data.Models.Client;
|
||||
using Humanizer;
|
||||
using SharedLibraryCore;
|
||||
using SharedLibraryCore.Commands;
|
||||
using SharedLibraryCore.Configuration;
|
||||
using SharedLibraryCore.Interfaces;
|
||||
|
||||
namespace Mute.Commands;
|
||||
|
||||
public class MuteInfoCommand : Command
|
||||
{
|
||||
public MuteInfoCommand(CommandConfiguration config, ITranslationLookup translationLookup) : base(config,
|
||||
translationLookup)
|
||||
{
|
||||
Name = "muteinfo";
|
||||
Description = translationLookup["PLUGINS_MUTE_COMMANDS_MUTEINFO_DESC"];
|
||||
Alias = "mi";
|
||||
Permission = EFClient.Permission.Moderator;
|
||||
RequiresTarget = true;
|
||||
SupportedGames = Plugin.SupportedGames;
|
||||
Arguments = new[]
|
||||
{
|
||||
new CommandArgument
|
||||
{
|
||||
Name = translationLookup["COMMANDS_ARGS_PLAYER"],
|
||||
Required = true
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent gameEvent)
|
||||
{
|
||||
var currentMuteMeta = await Plugin.MuteManager.GetCurrentMuteState(gameEvent.Target);
|
||||
switch (currentMuteMeta.MuteState)
|
||||
{
|
||||
case MuteState.Muted when currentMuteMeta.Expiration is null:
|
||||
gameEvent.Origin.Tell(_translationLookup["PLUGINS_MUTE_COMMANDS_MUTEINFO_SUCCESS"]
|
||||
.FormatExt(gameEvent.Target.Name, currentMuteMeta.Reason));
|
||||
return;
|
||||
case MuteState.Muted when currentMuteMeta.Expiration.HasValue && currentMuteMeta.Expiration.Value > DateTime.UtcNow:
|
||||
var remainingTime = (currentMuteMeta.Expiration.Value - DateTime.UtcNow).HumanizeForCurrentCulture();
|
||||
gameEvent.Origin.Tell(_translationLookup["PLUGINS_MUTE_COMMANDS_MUTEINFO_TM_SUCCESS"]
|
||||
.FormatExt(gameEvent.Target.Name, currentMuteMeta.Reason, remainingTime));
|
||||
return;
|
||||
default:
|
||||
gameEvent.Origin.Tell(_translationLookup["PLUGINS_MUTE_COMMANDS_MUTEINFO_NONE"]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user