Files
KianaBH3/GameServer/Command/Commands/CommandHelp.cs
2025-06-14 14:13:48 +08:00

52 lines
2.2 KiB
C#

using KianaBH.Enums.Player;
using KianaBH.Internationalization;
using KianaBH.Util.Extensions;
namespace KianaBH.GameServer.Command.Commands;
[CommandInfo("help", "Game.Command.Help.Desc", "Game.Command.Help.Usage", ["h"], [PermEnum.Support, PermEnum.Trial])]
public class CommandHelp : ICommands
{
[CommandDefault]
public async static ValueTask Help(CommandArg arg)
{
if (arg.Args.Count == 1)
{
var cmd = arg.Args[0];
if (CommandManager.CommandInfo == null || !CommandManager.CommandInfo.TryGetValue(cmd, out var command))
{
await arg.SendMsg(I18NManager.Translate("Game.Command.Notice.CommandNotFound"));
return;
}
var msg =
$"/{command.Name} - {I18NManager.Translate(command.Description)}\n{I18NManager.Translate(command.Usage)}";
if (command.Alias.Length > 0)
msg +=
$"\n{I18NManager.Translate("Game.Command.Help.CommandAlias")} {command.Alias.ToList().ToArrayString()}";
if (command.Perm != null)
msg += $"\n{I18NManager.Translate("Game.Command.Help.CommandPermission")} {string.Join(", ", command.Perm.Select(perm => perm.ToString()))}";
await arg.SendMsg(msg + "\n");
return;
}
else
{
await arg.SendMsg(I18NManager.Translate("Game.Command.Help.Commands"));
if (CommandManager.CommandInfo == null) return;
foreach (var command in CommandManager.CommandInfo.Values)
{
var msg =
$"/{command.Name} - {I18NManager.Translate(command.Description)}\n{I18NManager.Translate(command.Usage)}";
if (command.Alias.Length > 0)
msg +=
$"\n{I18NManager.Translate("Game.Command.Help.CommandAlias")} {command.Alias.ToList().ToArrayString()}";
if (command.Perm != null)
msg += $"\n{I18NManager.Translate("Game.Command.Help.CommandPermission")} {string.Join(", ", command.Perm.Select(perm => perm.ToString()))}";
await arg.SendMsg(msg + "\n");
}
}
}
}