From 5181282bc52c0a6e58e839453d223bb96f929ace Mon Sep 17 00:00:00 2001 From: Kengxxiao <1079151249@qq.com> Date: Tue, 16 Nov 2021 23:03:10 +0800 Subject: [PATCH] feat: support roles management --- client/guild.go | 37 +++++++++++++++++++++++++++++++++ client/pb/channel/unknown.proto | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/client/guild.go b/client/guild.go index fd92bd29..e4749e57 100644 --- a/client/guild.go +++ b/client/guild.go @@ -347,6 +347,43 @@ func (s *GuildService) CreateGuildRole(guildId uint64, name string, color uint32 return body.GetRoleId(), nil } +func (s *GuildService) DeleteGuildRole(guildId uint64, roleId uint64) error { + seq := s.c.nextSeq() + packet := packets.BuildUniPacket(s.c.Uin, seq, "OidbSvcTrpcTcp.0x100e_1", 1, s.c.OutGoingPacketSessionId, []byte{}, s.c.sigInfo.d2Key, + s.c.packOIDBPackageDynamically(4110, 1, binary.DynamicProtoMessage{ + 1: guildId, + 2: roleId, + })) + _, err := s.c.sendAndWaitDynamic(seq, packet) + if err != nil { + return errors.Wrap(err, "send packet error") + } + return nil +} + +func (s *GuildService) SetUserRoleInGuild(guildId uint64, set bool, roleId uint64, user []uint64) error { // remove => p2 = false + seq := s.c.nextSeq() + packet := ([]byte)(nil) + setOrRemove := binary.DynamicProtoMessage{ + 1: roleId, + } + if set { + setOrRemove[2] = user + } else { + setOrRemove[3] = user + } + packet = packets.BuildUniPacket(s.c.Uin, seq, "OidbSvcTrpcTcp.0x101a_1", 1, s.c.OutGoingPacketSessionId, []byte{}, s.c.sigInfo.d2Key, + s.c.packOIDBPackageDynamically(4122, 1, binary.DynamicProtoMessage{ + 1: guildId, + 2: setOrRemove, + })) + _, err := s.c.sendAndWaitDynamic(seq, packet) + if err != nil { + return errors.Wrap(err, "send packet error") + } + return nil +} + func (s *GuildService) FetchGuestGuild(guildId uint64) (*GuildMeta, error) { seq := s.c.nextSeq() u1 := uint32(1) diff --git a/client/pb/channel/unknown.proto b/client/pb/channel/unknown.proto index adfbad08..e0099b0c 100644 --- a/client/pb/channel/unknown.proto +++ b/client/pb/channel/unknown.proto @@ -60,7 +60,7 @@ message ChannelOidb0x1016Rsp { } /* -message ChannelOidb0x101aReq { // 给予身份组 +message ChannelOidb0x101aReq { // 修改身份组 optional uint64 guildId = 1; repeated SetGuildRole setRoles = 2; repeated SetGuildRole removeRoles = 3;