1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

feat: set profile detail (#254)

* feat: profile detail

* struct: ProfileDetailUpdate

* ProfileDetailUpdate

* update profile
This commit is contained in:
lz1998 2022-02-21 00:22:45 +08:00 committed by GitHub
parent 5e8a512698
commit 9ef6c3cf3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 8 deletions

View File

@ -1150,15 +1150,50 @@ func (c *QQClient) buildWordSegmentationPacket(data []byte) (uint16, []byte) {
return c.uniPacket("OidbSvc.0xd79", payload) return c.uniPacket("OidbSvc.0xd79", payload)
} }
// OidbSvc.0x4ff_9 type ProfileDetailUpdate map[uint16][]byte
func (c *QQClient) buildUpdateQQNicknamePacket(name string) (uint16, []byte) {
func NewProfileDetailUpdate() ProfileDetailUpdate {
return map[uint16][]byte{}
}
func (p ProfileDetailUpdate) Nick(value string) ProfileDetailUpdate {
p[20002] = []byte(value)
return p
}
func (p ProfileDetailUpdate) Email(value string) ProfileDetailUpdate {
p[20011] = []byte(value)
return p
}
func (p ProfileDetailUpdate) PersonalNote(value string) ProfileDetailUpdate {
p[20019] = []byte(value)
return p
}
func (p ProfileDetailUpdate) Company(value string) ProfileDetailUpdate {
p[24008] = []byte(value)
return p
}
func (p ProfileDetailUpdate) College(value string) ProfileDetailUpdate {
p[20021] = []byte(value)
return p
}
// OidbSvc.0x4ff_9_IMCore
func (c *QQClient) buildUpdateProfileDetailPacket(profileRecord map[uint16][]byte) (uint16, []byte) {
b, cl := binary.OpenWriterF(func(w *binary.Writer) { b, cl := binary.OpenWriterF(func(w *binary.Writer) {
w.WriteUInt32(uint32(c.Uin)) w.WriteUInt32(uint32(c.Uin))
w.WriteByte(0) w.WriteByte(0)
w.WriteUInt32(uint32(85538)) w.WriteUInt16(uint16(len(profileRecord)))
w.WriteStringShort(name) for tag, value := range profileRecord {
w.WriteUInt16(tag)
w.WriteUInt16(uint16(len(value)))
w.Write(value)
}
}) })
payload := c.packOIDBPackage(1279, 9, b) payload := c.packOIDBPackage(1279, 9, b)
cl() cl()
return c.uniPacket("OidbSvc.0x4ff_9", payload) return c.uniPacket("OidbSvc.0x4ff_9_IMCore", payload)
} }

View File

@ -750,9 +750,9 @@ func (g *GroupInfo) removeMember(uin int64) {
}) })
} }
// SetNickname 设置 QQ 昵称 // UpdateProfile 修改个人资料
func (c *QQClient) SetNickname(name string) { func (c *QQClient) UpdateProfile(profile ProfileDetailUpdate) {
_, _ = c.sendAndWait(c.buildUpdateQQNicknamePacket(name)) _, _ = c.sendAndWait(c.buildUpdateProfileDetailPacket(profile))
} }
func (c *QQClient) SetCustomServer(servers []*net.TCPAddr) { func (c *QQClient) SetCustomServer(servers []*net.TCPAddr) {