using System; namespace SharpChat.Packet { public class UserDisconnectPacket : ServerPacket { private readonly long Timestamp; private readonly long UserId; private readonly string UserName; private readonly ChatUserDisconnectReason Reason; public UserDisconnectPacket( DateTimeOffset timestamp, long userId, string userName, ChatUserDisconnectReason reason ) { Timestamp = timestamp.ToUnixTimeSeconds(); UserId = userId; UserName = userName; Reason = reason; } public override string Pack() { return string.Format( "3\t{0}\t{1}\t{2}\t{3}\t{4}", UserId, UserName, Reason switch { ChatUserDisconnectReason.Leave => "leave", ChatUserDisconnectReason.TimeOut => "timeout", ChatUserDisconnectReason.Kicked => "kick", ChatUserDisconnectReason.Flood => "flood", _ => "leave", }, Timestamp, SequenceId ); } } }