using System; namespace SharpChat.Events { public class MessageCreateEvent : IChatEvent { public long MessageId { get; } public string? ChannelName { get; } public long SenderId { get; } public string? SenderName { get; } public ChatColour SenderColour { get; } public int SenderRank { get; } public string? SenderNickName { get; } public ChatUserPermissions SenderPerms { get; } public DateTimeOffset MessageCreated { get; } public string MessageText { get; } public bool IsPrivate { get; } public bool IsAction { get; } public bool IsBroadcast { get; } public MessageCreateEvent( long msgId, string? channelName, long senderId, string? senderName, ChatColour senderColour, int senderRank, string? senderNickName, ChatUserPermissions senderPerms, DateTimeOffset msgCreated, string msgText, bool isPrivate, bool isAction, bool isBroadcast ) { MessageId = msgId; ChannelName = channelName; SenderId = senderId; SenderName = senderName; SenderColour = senderColour; SenderRank = senderRank; SenderNickName = senderNickName; SenderPerms = senderPerms; MessageCreated = msgCreated; MessageText = msgText; IsPrivate = isPrivate; IsAction = isAction; IsBroadcast = isBroadcast; } public MessageCreateEvent( long msgId, string? channelName, ChatUser? sender, DateTimeOffset msgCreated, string msgText, bool isPrivate, bool isAction, bool isBroadcast ) : this( msgId, channelName, sender?.UserId ?? -1, sender?.UserName ?? null, sender?.Colour ?? ChatColour.None, sender?.Rank ?? 0, sender?.NickName ?? null, sender?.Permissions ?? 0, msgCreated, msgText, isPrivate, isAction, isBroadcast ) { } public MessageCreateEvent( long msgId, ChatChannel channel, ChatUser sender, DateTimeOffset msgCreated, string msgText, bool isPrivate, bool isAction, bool isBroadcast ) : this( msgId, channel?.Name ?? null, sender, msgCreated, msgText, isPrivate, isAction, isBroadcast ) { } } }