namespace SharpChat; public class ClientCommandContext { public string Name { get; } public string[] Args { get; } public Context Chat { get; } public User User { get; } public Connection Connection { get; } public Channel Channel { get; } public ClientCommandContext( string text, Context chat, User user, Connection connection, Channel channel ) { ArgumentNullException.ThrowIfNull(text); Chat = chat ?? throw new ArgumentNullException(nameof(chat)); User = user ?? throw new ArgumentNullException(nameof(user)); Connection = connection ?? throw new ArgumentNullException(nameof(connection)); Channel = channel ?? throw new ArgumentNullException(nameof(channel)); string[] parts = text[1..].Split(' '); Name = parts.First().Replace(".", string.Empty); Args = [.. parts.Skip(1)]; } public ClientCommandContext( string name, string[] args, Context chat, User user, Connection connection, Channel channel ) { Name = name ?? throw new ArgumentNullException(nameof(name)); Args = args ?? throw new ArgumentNullException(nameof(args)); Chat = chat ?? throw new ArgumentNullException(nameof(chat)); User = user ?? throw new ArgumentNullException(nameof(user)); Connection = connection ?? throw new ArgumentNullException(nameof(connection)); Channel = channel ?? throw new ArgumentNullException(nameof(channel)); } public bool NameEquals(string name) { return Name.Equals(name, StringComparison.InvariantCultureIgnoreCase); } }