mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
feat: set profile detail (#254)
* feat: profile detail * struct: ProfileDetailUpdate * ProfileDetailUpdate * update profile
This commit is contained in:
parent
5e8a512698
commit
9ef6c3cf3a
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user