From 808a63a78efe838f828805479e8b916b46e4e007 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Wed, 9 Sep 2020 18:32:04 +0800 Subject: [PATCH] add: SetAdmin(). --- client/builders.go | 22 ++++++++++++++++++++++ client/client.go | 4 ++++ client/entities.go | 6 ++++++ 3 files changed, 32 insertions(+) diff --git a/client/builders.go b/client/builders.go index 8d837fab..b0a476cc 100644 --- a/client/builders.go +++ b/client/builders.go @@ -915,6 +915,28 @@ func (c *QQClient) buildGroupMutePacket(groupCode, memberUin int64, time uint32) return seq, packet } +// OidbSvc.0x55c_1 +func (c *QQClient) buildGroupAdminSetPacket(groupCode, member int64, flag bool) (uint16, []byte) { + seq := c.nextSeq() + req := &oidb.OIDBSSOPkg{ + Command: 1372, + ServiceType: 1, + Bodybuffer: binary.NewWriterF(func(w *binary.Writer) { + w.WriteUInt32(uint32(groupCode)) + w.WriteUInt32(uint32(member)) + w.WriteByte(func() byte { + if flag { + return 1 + } + return 0 + }()) + }), + } + payload, _ := proto.Marshal(req) + packet := packets.BuildUniPacket(c.Uin, seq, "OidbSvc.0x55c_1", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload) + return seq, packet +} + // MultiMsg.ApplyUp func (c *QQClient) buildMultiApplyUpPacket(data, hash []byte, buType int32, groupUin int64) (uint16, []byte) { seq := c.nextSeq() diff --git a/client/client.go b/client/client.go index 54e27b15..fb806935 100644 --- a/client/client.go +++ b/client/client.go @@ -803,6 +803,10 @@ func (c *QQClient) editMemberSpecialTitle(groupCode, memberUin int64, title stri _, _ = c.sendAndWait(c.buildEditSpecialTitlePacket(groupCode, memberUin, title)) } +func (c *QQClient) setGroupAdmin(groupCode, memberUin int64, flag bool) { + _, _ = c.sendAndWait(c.buildGroupAdminSetPacket(groupCode, memberUin, flag)) +} + func (c *QQClient) updateGroupName(groupCode int64, newName string) { _, _ = c.sendAndWait(c.buildGroupNameUpdatePacket(groupCode, newName)) } diff --git a/client/entities.go b/client/entities.go index 90126ff7..4e690552 100644 --- a/client/entities.go +++ b/client/entities.go @@ -246,6 +246,12 @@ func (m *GroupMemberInfo) EditCard(card string) { } } +func (m *GroupMemberInfo) SetAdmin(flag bool) { + if m.Group.OwnerUin == m.Group.client.Uin { + m.Group.client.setGroupAdmin(m.Group.Code, m.Uin, flag) + } +} + func (m *GroupMemberInfo) EditSpecialTitle(title string) { if m.Group.SelfPermission() == Owner && len(title) <= 18 { m.Group.client.editMemberSpecialTitle(m.Group.Code, m.Uin, title)