using System.Text; namespace SharpChat.SockChat.S2CPackets; public class ChatMessageAddS2CPacket( long msgId, DateTimeOffset created, string userId, string text, bool isAction, bool isPrivate ) : S2CPacket { public string Pack() { StringBuilder sb = new(); sb.Append("2\t"); sb.Append(created.ToUnixTimeSeconds()); sb.Append('\t'); sb.Append(userId); sb.Append('\t'); if(isAction) sb.Append("<i>"); sb.Append( text.Replace("<", "<") .Replace(">", ">") .Replace("\n", " <br/> ") .Replace("\t", " ") ); if(isAction) sb.Append("</i>"); sb.Append('\t'); sb.Append(msgId); sb.AppendFormat( "\t1{0}0{1}{2}", isAction ? '1' : '0', isAction ? '0' : '1', isPrivate ? '1' : '0' ); return sb.ToString(); } }