github.com/Mrs4s/MiraiGo@v0.0.0-20240226124653-54bdd873e3fe/internal/tlv/t1.go (about) 1 package tlv 2 3 import ( 4 "math/rand" 5 "time" 6 7 "github.com/Mrs4s/MiraiGo/binary" 8 ) 9 10 func T1(uin uint32, ip []byte) []byte { 11 if len(ip) != 4 { 12 panic("invalid ip") 13 } 14 return binary.NewWriterF(func(w *binary.Writer) { 15 w.WriteUInt16(0x01) 16 pos := w.FillUInt16() 17 w.WriteUInt16(1) 18 w.WriteUInt32(rand.Uint32()) 19 w.WriteUInt32(uin) 20 w.WriteUInt32(uint32(time.Now().Unix())) 21 w.Write(ip) 22 w.WriteUInt16(0) 23 w.WriteUInt16At(pos, uint16(w.Len()-4)) 24 }) 25 }