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  }