diff --git a/client/global.go b/client/global.go index 2870140d..5fb5d75f 100644 --- a/client/global.go +++ b/client/global.go @@ -663,6 +663,20 @@ func (c *QQClient) packOIDBPackageProto(cmd, serviceType int32, msg proto.Messag return c.packOIDBPackage(cmd, serviceType, b) } +func (c *QQClient) unpackOIDBPackage(buff []byte, payload proto.Message) error { + pkg := new(oidb.OIDBSSOPkg) + if err := proto.Unmarshal(buff, pkg); err != nil { + return errors.Wrap(err, "failed to unmarshal protobuf message") + } + if pkg.GetResult() != 0 { + return errors.Errorf("oidb result unsuccessful: %v msg: %v", pkg.GetResult(), pkg.GetErrorMsg()) + } + if err := proto.Unmarshal(pkg.Bodybuffer, payload); err != nil { + return errors.Wrap(err, "failed to unmarshal protobuf message") + } + return nil +} + func (c *QQClient) Error(msg string, args ...interface{}) { c.dispatchLogEvent(&LogEvent{ Type: "ERROR", diff --git a/client/guild.go b/client/guild.go index 3f1aa569..c5ac0522 100644 --- a/client/guild.go +++ b/client/guild.go @@ -2,7 +2,6 @@ package client import ( "fmt" - "github.com/Mrs4s/MiraiGo/binary" "github.com/Mrs4s/MiraiGo/client/pb/channel" "github.com/Mrs4s/MiraiGo/client/pb/oidb" @@ -74,9 +73,39 @@ type ( Time uint64 EventTime uint32 NotifyType uint32 - ChannelType uint32 + ChannelType ChannelType AtAllSeq uint64 + Meta *ChannelMeta } + + ChannelMeta struct { + CreatorUin int64 + CreatorTinyId uint64 + CreateTime int64 + GuildId uint64 + VisibleType int32 + TopMessageSeq uint64 + TopMessageTime int64 + TopMessageOperatorId uint64 + CurrentSlowMode int32 + TalkPermission int32 + SlowModes []*ChannelSlowModeInfo + } + + ChannelSlowModeInfo struct { + SlowModeKey int32 + SpeakFrequency int32 + SlowModeCircle int32 + SlowModeText string + } + + ChannelType int32 +) + +const ( + ChannelTypeText ChannelType = 1 + ChannelTypeVoice ChannelType = 2 + ChannelTypeLive ChannelType = 5 ) func init() { @@ -281,6 +310,49 @@ func (s *GuildService) FetchGuestGuild(guildId uint64) (*GuildMeta, error) { }, nil } +func (s *GuildService) FetchChannelInfo(guildId, channelId uint64) (*ChannelInfo, error) { + seq := s.c.nextSeq() + packet := packets.BuildUniPacket(s.c.Uin, seq, "OidbSvcTrpcTcp.0xf55_1", 1, s.c.OutGoingPacketSessionId, []byte{}, s.c.sigInfo.d2Key, + s.c.packOIDBPackageDynamically(3925, 1, binary.DynamicProtoMessage{1: guildId, 2: channelId})) + rsp, err := s.c.sendAndWaitDynamic(seq, packet) + if err != nil { + return nil, errors.Wrap(err, "send packet error") + } + body := new(channel.ChannelOidb0Xf55Rsp) + if err = s.c.unpackOIDBPackage(rsp, body); err != nil { + return nil, errors.Wrap(err, "decode packet error") + } + meta := &ChannelMeta{ + CreatorUin: body.Info.GetCreatorUin(), + CreatorTinyId: body.Info.GetCreatorTinyId(), + CreateTime: body.Info.GetCreateTime(), + GuildId: body.Info.GetGuildId(), + VisibleType: body.Info.GetVisibleType(), + CurrentSlowMode: body.Info.GetCurrentSlowModeKey(), + TalkPermission: body.Info.GetTalkPermission(), + } + if body.Info.TopMsg != nil { + meta.TopMessageSeq = body.Info.TopMsg.GetTopMsgSeq() + meta.TopMessageTime = body.Info.TopMsg.GetTopMsgTime() + meta.TopMessageOperatorId = body.Info.TopMsg.GetTopMsgOperatorTinyId() + } + for _, slow := range body.Info.SlowModeInfos { + meta.SlowModes = append(meta.SlowModes, &ChannelSlowModeInfo{ + SlowModeKey: slow.GetSlowModeKey(), + SpeakFrequency: slow.GetSpeakFrequency(), + SlowModeCircle: slow.GetSlowModeCircle(), + SlowModeText: slow.GetSlowModeText(), + }) + } + return &ChannelInfo{ + ChannelId: body.Info.GetChannelId(), + ChannelName: body.Info.GetChannelName(), + NotifyType: uint32(body.Info.GetFinalNotifyType()), + ChannelType: ChannelType(body.Info.GetChannelType()), + Meta: meta, + }, nil +} + /* need analysis func (s *GuildService) fetchChannelListState(guildId uint64, channels []*ChannelInfo) { seq := s.c.nextSeq() @@ -362,7 +434,7 @@ func decodeGuildPushFirstView(c *QQClient, _ *incomingPacketInfo, payload []byte Time: node.GetTime(), EventTime: node.GetEventTime(), NotifyType: node.GetNotifyType(), - ChannelType: node.GetChannelType(), + ChannelType: ChannelType(node.GetChannelType()), AtAllSeq: meta.GetAtAllSeq(), }) } diff --git a/client/pb/channel/unknown.pb.go b/client/pb/channel/unknown.pb.go index c0e76cae..829f6ad5 100644 --- a/client/pb/channel/unknown.pb.go +++ b/client/pb/channel/unknown.pb.go @@ -4,16 +4,15 @@ // versions: // protoc-gen-go v1.27.1 // protoc v3.14.0 -// source: unknown.proto +// source: pb/channel/unknown.proto package channel import ( - reflect "reflect" - sync "sync" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) const ( @@ -37,7 +36,7 @@ type ChannelOidb0Xf5BRsp struct { func (x *ChannelOidb0Xf5BRsp) Reset() { *x = ChannelOidb0Xf5BRsp{} if protoimpl.UnsafeEnabled { - mi := &file_unknown_proto_msgTypes[0] + mi := &file_pb_channel_unknown_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -50,7 +49,7 @@ func (x *ChannelOidb0Xf5BRsp) String() string { func (*ChannelOidb0Xf5BRsp) ProtoMessage() {} func (x *ChannelOidb0Xf5BRsp) ProtoReflect() protoreflect.Message { - mi := &file_unknown_proto_msgTypes[0] + mi := &file_pb_channel_unknown_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63,7 +62,7 @@ func (x *ChannelOidb0Xf5BRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ChannelOidb0Xf5BRsp.ProtoReflect.Descriptor instead. func (*ChannelOidb0Xf5BRsp) Descriptor() ([]byte, []int) { - return file_unknown_proto_rawDescGZIP(), []int{0} + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{0} } func (x *ChannelOidb0Xf5BRsp) GetGuildId() uint64 { @@ -105,7 +104,7 @@ type ChannelOidb0Xf88Rsp struct { func (x *ChannelOidb0Xf88Rsp) Reset() { *x = ChannelOidb0Xf88Rsp{} if protoimpl.UnsafeEnabled { - mi := &file_unknown_proto_msgTypes[1] + mi := &file_pb_channel_unknown_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -118,7 +117,7 @@ func (x *ChannelOidb0Xf88Rsp) String() string { func (*ChannelOidb0Xf88Rsp) ProtoMessage() {} func (x *ChannelOidb0Xf88Rsp) ProtoReflect() protoreflect.Message { - mi := &file_unknown_proto_msgTypes[1] + mi := &file_pb_channel_unknown_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -131,7 +130,7 @@ func (x *ChannelOidb0Xf88Rsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ChannelOidb0Xf88Rsp.ProtoReflect.Descriptor instead. func (*ChannelOidb0Xf88Rsp) Descriptor() ([]byte, []int) { - return file_unknown_proto_rawDescGZIP(), []int{1} + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{1} } func (x *ChannelOidb0Xf88Rsp) GetProfile() *GuildUserProfile { @@ -152,7 +151,7 @@ type ChannelOidb0Xfc9Rsp struct { func (x *ChannelOidb0Xfc9Rsp) Reset() { *x = ChannelOidb0Xfc9Rsp{} if protoimpl.UnsafeEnabled { - mi := &file_unknown_proto_msgTypes[2] + mi := &file_pb_channel_unknown_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -165,7 +164,7 @@ func (x *ChannelOidb0Xfc9Rsp) String() string { func (*ChannelOidb0Xfc9Rsp) ProtoMessage() {} func (x *ChannelOidb0Xfc9Rsp) ProtoReflect() protoreflect.Message { - mi := &file_unknown_proto_msgTypes[2] + mi := &file_pb_channel_unknown_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -178,7 +177,7 @@ func (x *ChannelOidb0Xfc9Rsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ChannelOidb0Xfc9Rsp.ProtoReflect.Descriptor instead. func (*ChannelOidb0Xfc9Rsp) Descriptor() ([]byte, []int) { - return file_unknown_proto_rawDescGZIP(), []int{2} + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{2} } func (x *ChannelOidb0Xfc9Rsp) GetProfile() *GuildUserProfile { @@ -199,7 +198,7 @@ type ChannelOidb0Xf57Rsp struct { func (x *ChannelOidb0Xf57Rsp) Reset() { *x = ChannelOidb0Xf57Rsp{} if protoimpl.UnsafeEnabled { - mi := &file_unknown_proto_msgTypes[3] + mi := &file_pb_channel_unknown_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -212,7 +211,7 @@ func (x *ChannelOidb0Xf57Rsp) String() string { func (*ChannelOidb0Xf57Rsp) ProtoMessage() {} func (x *ChannelOidb0Xf57Rsp) ProtoReflect() protoreflect.Message { - mi := &file_unknown_proto_msgTypes[3] + mi := &file_pb_channel_unknown_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -225,7 +224,7 @@ func (x *ChannelOidb0Xf57Rsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ChannelOidb0Xf57Rsp.ProtoReflect.Descriptor instead. func (*ChannelOidb0Xf57Rsp) Descriptor() ([]byte, []int) { - return file_unknown_proto_rawDescGZIP(), []int{3} + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{3} } func (x *ChannelOidb0Xf57Rsp) GetRsp() *GuildMetaRsp { @@ -235,6 +234,53 @@ func (x *ChannelOidb0Xf57Rsp) GetRsp() *GuildMetaRsp { return nil } +type ChannelOidb0Xf55Rsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info *GuildChannelInfo `protobuf:"bytes,1,opt,name=info" json:"info,omitempty"` +} + +func (x *ChannelOidb0Xf55Rsp) Reset() { + *x = ChannelOidb0Xf55Rsp{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_unknown_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelOidb0Xf55Rsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelOidb0Xf55Rsp) ProtoMessage() {} + +func (x *ChannelOidb0Xf55Rsp) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_unknown_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChannelOidb0Xf55Rsp.ProtoReflect.Descriptor instead. +func (*ChannelOidb0Xf55Rsp) Descriptor() ([]byte, []int) { + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{4} +} + +func (x *ChannelOidb0Xf55Rsp) GetInfo() *GuildChannelInfo { + if x != nil { + return x.Info + } + return nil +} + type GuildMetaRsp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -247,7 +293,7 @@ type GuildMetaRsp struct { func (x *GuildMetaRsp) Reset() { *x = GuildMetaRsp{} if protoimpl.UnsafeEnabled { - mi := &file_unknown_proto_msgTypes[4] + mi := &file_pb_channel_unknown_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -260,7 +306,7 @@ func (x *GuildMetaRsp) String() string { func (*GuildMetaRsp) ProtoMessage() {} func (x *GuildMetaRsp) ProtoReflect() protoreflect.Message { - mi := &file_unknown_proto_msgTypes[4] + mi := &file_pb_channel_unknown_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -273,7 +319,7 @@ func (x *GuildMetaRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GuildMetaRsp.ProtoReflect.Descriptor instead. func (*GuildMetaRsp) Descriptor() ([]byte, []int) { - return file_unknown_proto_rawDescGZIP(), []int{4} + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{5} } func (x *GuildMetaRsp) GetGuildId() uint64 { @@ -301,7 +347,7 @@ type GuildAdminInfo struct { func (x *GuildAdminInfo) Reset() { *x = GuildAdminInfo{} if protoimpl.UnsafeEnabled { - mi := &file_unknown_proto_msgTypes[5] + mi := &file_pb_channel_unknown_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -314,7 +360,7 @@ func (x *GuildAdminInfo) String() string { func (*GuildAdminInfo) ProtoMessage() {} func (x *GuildAdminInfo) ProtoReflect() protoreflect.Message { - mi := &file_unknown_proto_msgTypes[5] + mi := &file_pb_channel_unknown_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -327,7 +373,7 @@ func (x *GuildAdminInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GuildAdminInfo.ProtoReflect.Descriptor instead. func (*GuildAdminInfo) Descriptor() ([]byte, []int) { - return file_unknown_proto_rawDescGZIP(), []int{5} + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{6} } func (x *GuildAdminInfo) GetAdmins() []*GuildMemberInfo { @@ -352,7 +398,7 @@ type GuildMemberInfo struct { func (x *GuildMemberInfo) Reset() { *x = GuildMemberInfo{} if protoimpl.UnsafeEnabled { - mi := &file_unknown_proto_msgTypes[6] + mi := &file_pb_channel_unknown_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -365,7 +411,7 @@ func (x *GuildMemberInfo) String() string { func (*GuildMemberInfo) ProtoMessage() {} func (x *GuildMemberInfo) ProtoReflect() protoreflect.Message { - mi := &file_unknown_proto_msgTypes[6] + mi := &file_pb_channel_unknown_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -378,7 +424,7 @@ func (x *GuildMemberInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GuildMemberInfo.ProtoReflect.Descriptor instead. func (*GuildMemberInfo) Descriptor() ([]byte, []int) { - return file_unknown_proto_rawDescGZIP(), []int{6} + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{7} } func (x *GuildMemberInfo) GetTitle() string { @@ -432,7 +478,7 @@ type GuildUserProfile struct { func (x *GuildUserProfile) Reset() { *x = GuildUserProfile{} if protoimpl.UnsafeEnabled { - mi := &file_unknown_proto_msgTypes[7] + mi := &file_pb_channel_unknown_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -445,7 +491,7 @@ func (x *GuildUserProfile) String() string { func (*GuildUserProfile) ProtoMessage() {} func (x *GuildUserProfile) ProtoReflect() protoreflect.Message { - mi := &file_unknown_proto_msgTypes[7] + mi := &file_pb_channel_unknown_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -458,7 +504,7 @@ func (x *GuildUserProfile) ProtoReflect() protoreflect.Message { // Deprecated: Use GuildUserProfile.ProtoReflect.Descriptor instead. func (*GuildUserProfile) Descriptor() ([]byte, []int) { - return file_unknown_proto_rawDescGZIP(), []int{7} + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{8} } func (x *GuildUserProfile) GetTinyId() uint64 { @@ -511,7 +557,7 @@ type GuildMeta struct { func (x *GuildMeta) Reset() { *x = GuildMeta{} if protoimpl.UnsafeEnabled { - mi := &file_unknown_proto_msgTypes[8] + mi := &file_pb_channel_unknown_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -524,7 +570,7 @@ func (x *GuildMeta) String() string { func (*GuildMeta) ProtoMessage() {} func (x *GuildMeta) ProtoReflect() protoreflect.Message { - mi := &file_unknown_proto_msgTypes[8] + mi := &file_pb_channel_unknown_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -537,7 +583,7 @@ func (x *GuildMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use GuildMeta.ProtoReflect.Descriptor instead. func (*GuildMeta) Descriptor() ([]byte, []int) { - return file_unknown_proto_rawDescGZIP(), []int{8} + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{9} } func (x *GuildMeta) GetGuildCode() uint64 { @@ -624,138 +670,483 @@ func (x *GuildMeta) GetClientId() int32 { return 0 } -var File_unknown_proto protoreflect.FileDescriptor +type GuildChannelInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_unknown_proto_rawDesc = []byte{ - 0x0a, 0x0d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0xc8, 0x01, 0x0a, 0x13, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x69, 0x64, 0x62, 0x30, 0x78, 0x66, 0x35, 0x62, 0x52, 0x73, 0x70, - 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x62, 0x6f, - 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x04, 0x62, 0x6f, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x09, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0x4a, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x69, - 0x64, 0x62, 0x30, 0x78, 0x66, 0x38, 0x38, 0x52, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, - 0x4a, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x69, 0x64, 0x62, 0x30, 0x78, - 0x66, 0x63, 0x39, 0x52, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x3e, 0x0a, 0x13, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x69, 0x64, 0x62, 0x30, 0x78, 0x66, 0x35, 0x37, 0x52, - 0x73, 0x70, 0x12, 0x27, 0x0a, 0x03, 0x72, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, - 0x65, 0x74, 0x61, 0x52, 0x73, 0x70, 0x52, 0x03, 0x72, 0x73, 0x70, 0x22, 0x50, 0x0a, 0x0c, 0x47, - 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x67, - 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, - 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x42, 0x0a, - 0x0e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x30, 0x0a, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x73, 0x22, 0x95, 0x01, 0x0a, 0x0f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, - 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, - 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x53, - 0x70, 0x65, 0x61, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, - 0x6c, 0x61, 0x73, 0x74, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x06, 0x74, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x74, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, - 0x74, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, - 0x12, 0x1a, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf5, 0x02, 0x0a, - 0x09, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x75, - 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x67, - 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x4d, - 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x6f, 0x62, - 0x6f, 0x74, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x53, 0x65, - 0x71, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x53, - 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x71, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x2f, 0x3b, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, + ChannelId *uint64 `protobuf:"varint,1,opt,name=channelId" json:"channelId,omitempty"` + ChannelName *string `protobuf:"bytes,2,opt,name=channelName" json:"channelName,omitempty"` + CreatorUin *int64 `protobuf:"varint,3,opt,name=creatorUin" json:"creatorUin,omitempty"` + CreateTime *int64 `protobuf:"varint,4,opt,name=createTime" json:"createTime,omitempty"` + GuildId *uint64 `protobuf:"varint,5,opt,name=guildId" json:"guildId,omitempty"` + FinalNotifyType *int32 `protobuf:"varint,6,opt,name=finalNotifyType" json:"finalNotifyType,omitempty"` + ChannelType *int32 `protobuf:"varint,7,opt,name=channelType" json:"channelType,omitempty"` + TalkPermission *int32 `protobuf:"varint,8,opt,name=talkPermission" json:"talkPermission,omitempty"` + // 11 - 14 : MsgInfo + CreatorTinyId *uint64 `protobuf:"varint,15,opt,name=creatorTinyId" json:"creatorTinyId,omitempty"` + // 16: Member info ? + VisibleType *int32 `protobuf:"varint,22,opt,name=visibleType" json:"visibleType,omitempty"` + TopMsg *GuildChannelTopMsgInfo `protobuf:"bytes,28,opt,name=topMsg" json:"topMsg,omitempty"` + CurrentSlowModeKey *int32 `protobuf:"varint,31,opt,name=currentSlowModeKey" json:"currentSlowModeKey,omitempty"` + SlowModeInfos []*GuildChannelSlowModeInfo `protobuf:"bytes,32,rep,name=slowModeInfos" json:"slowModeInfos,omitempty"` +} + +func (x *GuildChannelInfo) Reset() { + *x = GuildChannelInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_unknown_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GuildChannelInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GuildChannelInfo) ProtoMessage() {} + +func (x *GuildChannelInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_unknown_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GuildChannelInfo.ProtoReflect.Descriptor instead. +func (*GuildChannelInfo) Descriptor() ([]byte, []int) { + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{10} +} + +func (x *GuildChannelInfo) GetChannelId() uint64 { + if x != nil && x.ChannelId != nil { + return *x.ChannelId + } + return 0 +} + +func (x *GuildChannelInfo) GetChannelName() string { + if x != nil && x.ChannelName != nil { + return *x.ChannelName + } + return "" +} + +func (x *GuildChannelInfo) GetCreatorUin() int64 { + if x != nil && x.CreatorUin != nil { + return *x.CreatorUin + } + return 0 +} + +func (x *GuildChannelInfo) GetCreateTime() int64 { + if x != nil && x.CreateTime != nil { + return *x.CreateTime + } + return 0 +} + +func (x *GuildChannelInfo) GetGuildId() uint64 { + if x != nil && x.GuildId != nil { + return *x.GuildId + } + return 0 +} + +func (x *GuildChannelInfo) GetFinalNotifyType() int32 { + if x != nil && x.FinalNotifyType != nil { + return *x.FinalNotifyType + } + return 0 +} + +func (x *GuildChannelInfo) GetChannelType() int32 { + if x != nil && x.ChannelType != nil { + return *x.ChannelType + } + return 0 +} + +func (x *GuildChannelInfo) GetTalkPermission() int32 { + if x != nil && x.TalkPermission != nil { + return *x.TalkPermission + } + return 0 +} + +func (x *GuildChannelInfo) GetCreatorTinyId() uint64 { + if x != nil && x.CreatorTinyId != nil { + return *x.CreatorTinyId + } + return 0 +} + +func (x *GuildChannelInfo) GetVisibleType() int32 { + if x != nil && x.VisibleType != nil { + return *x.VisibleType + } + return 0 +} + +func (x *GuildChannelInfo) GetTopMsg() *GuildChannelTopMsgInfo { + if x != nil { + return x.TopMsg + } + return nil +} + +func (x *GuildChannelInfo) GetCurrentSlowModeKey() int32 { + if x != nil && x.CurrentSlowModeKey != nil { + return *x.CurrentSlowModeKey + } + return 0 +} + +func (x *GuildChannelInfo) GetSlowModeInfos() []*GuildChannelSlowModeInfo { + if x != nil { + return x.SlowModeInfos + } + return nil +} + +type GuildChannelSlowModeInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SlowModeKey *int32 `protobuf:"varint,1,opt,name=slowModeKey" json:"slowModeKey,omitempty"` + SpeakFrequency *int32 `protobuf:"varint,2,opt,name=speakFrequency" json:"speakFrequency,omitempty"` + SlowModeCircle *int32 `protobuf:"varint,3,opt,name=slowModeCircle" json:"slowModeCircle,omitempty"` + SlowModeText *string `protobuf:"bytes,4,opt,name=slowModeText" json:"slowModeText,omitempty"` +} + +func (x *GuildChannelSlowModeInfo) Reset() { + *x = GuildChannelSlowModeInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_unknown_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GuildChannelSlowModeInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GuildChannelSlowModeInfo) ProtoMessage() {} + +func (x *GuildChannelSlowModeInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_unknown_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GuildChannelSlowModeInfo.ProtoReflect.Descriptor instead. +func (*GuildChannelSlowModeInfo) Descriptor() ([]byte, []int) { + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{11} +} + +func (x *GuildChannelSlowModeInfo) GetSlowModeKey() int32 { + if x != nil && x.SlowModeKey != nil { + return *x.SlowModeKey + } + return 0 +} + +func (x *GuildChannelSlowModeInfo) GetSpeakFrequency() int32 { + if x != nil && x.SpeakFrequency != nil { + return *x.SpeakFrequency + } + return 0 +} + +func (x *GuildChannelSlowModeInfo) GetSlowModeCircle() int32 { + if x != nil && x.SlowModeCircle != nil { + return *x.SlowModeCircle + } + return 0 +} + +func (x *GuildChannelSlowModeInfo) GetSlowModeText() string { + if x != nil && x.SlowModeText != nil { + return *x.SlowModeText + } + return "" +} + +type GuildChannelTopMsgInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TopMsgSeq *uint64 `protobuf:"varint,1,opt,name=topMsgSeq" json:"topMsgSeq,omitempty"` + TopMsgTime *int64 `protobuf:"varint,2,opt,name=topMsgTime" json:"topMsgTime,omitempty"` + TopMsgOperatorTinyId *uint64 `protobuf:"varint,3,opt,name=topMsgOperatorTinyId" json:"topMsgOperatorTinyId,omitempty"` +} + +func (x *GuildChannelTopMsgInfo) Reset() { + *x = GuildChannelTopMsgInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_channel_unknown_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GuildChannelTopMsgInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GuildChannelTopMsgInfo) ProtoMessage() {} + +func (x *GuildChannelTopMsgInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_channel_unknown_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GuildChannelTopMsgInfo.ProtoReflect.Descriptor instead. +func (*GuildChannelTopMsgInfo) Descriptor() ([]byte, []int) { + return file_pb_channel_unknown_proto_rawDescGZIP(), []int{12} +} + +func (x *GuildChannelTopMsgInfo) GetTopMsgSeq() uint64 { + if x != nil && x.TopMsgSeq != nil { + return *x.TopMsgSeq + } + return 0 +} + +func (x *GuildChannelTopMsgInfo) GetTopMsgTime() int64 { + if x != nil && x.TopMsgTime != nil { + return *x.TopMsgTime + } + return 0 +} + +func (x *GuildChannelTopMsgInfo) GetTopMsgOperatorTinyId() uint64 { + if x != nil && x.TopMsgOperatorTinyId != nil { + return *x.TopMsgOperatorTinyId + } + return 0 +} + +var File_pb_channel_unknown_proto protoreflect.FileDescriptor + +var file_pb_channel_unknown_proto_rawDesc = []byte{ + 0x0a, 0x18, 0x70, 0x62, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2f, 0x75, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x22, 0xc8, 0x01, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, + 0x69, 0x64, 0x62, 0x30, 0x78, 0x66, 0x35, 0x62, 0x52, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x67, + 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, + 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x62, 0x6f, 0x74, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x62, + 0x6f, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, + 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4a, + 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x69, 0x64, 0x62, 0x30, 0x78, 0x66, + 0x38, 0x38, 0x52, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x4a, 0x0a, 0x13, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x69, 0x64, 0x62, 0x30, 0x78, 0x66, 0x63, 0x39, 0x52, 0x73, + 0x70, 0x12, 0x33, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, + 0x6c, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x3e, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x4f, 0x69, 0x64, 0x62, 0x30, 0x78, 0x66, 0x35, 0x37, 0x52, 0x73, 0x70, 0x12, 0x27, 0x0a, + 0x03, 0x72, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x73, + 0x70, 0x52, 0x03, 0x72, 0x73, 0x70, 0x22, 0x44, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x4f, 0x69, 0x64, 0x62, 0x30, 0x78, 0x66, 0x35, 0x35, 0x52, 0x73, 0x70, 0x12, 0x2d, 0x0a, + 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x50, 0x0a, 0x0c, + 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, + 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, + 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, + 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x42, + 0x0a, 0x0e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x30, 0x0a, 0x06, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x0f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, + 0x53, 0x70, 0x65, 0x61, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x74, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x47, + 0x75, 0x69, 0x6c, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x74, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, + 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf5, 0x02, + 0x0a, 0x09, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x67, + 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, + 0x67, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x61, 0x78, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x6f, 0x62, 0x6f, 0x74, + 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x6f, + 0x62, 0x6f, 0x74, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x53, + 0x65, 0x71, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x53, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x71, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x9a, 0x04, 0x0a, 0x10, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, + 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, + 0x6c, 0x64, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, + 0x69, 0x6e, 0x61, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x61, 0x6c, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x6c, 0x6b, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x6f, 0x72, 0x54, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x37, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x53, 0x6c, 0x6f, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x4b, 0x65, 0x79, 0x18, + 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x6c, + 0x6f, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x0d, 0x73, 0x6c, 0x6f, + 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x6c, 0x6f, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x73, 0x6c, 0x6f, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x18, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x53, 0x6c, 0x6f, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x20, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x6c, 0x6f, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x4b, 0x65, + 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x70, 0x65, 0x61, 0x6b, + 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x6c, 0x6f, + 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x69, 0x72, 0x63, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0e, 0x73, 0x6c, 0x6f, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x69, 0x72, 0x63, 0x6c, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x6c, 0x6f, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x65, 0x78, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6c, 0x6f, 0x77, 0x4d, 0x6f, 0x64, + 0x65, 0x54, 0x65, 0x78, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x53, 0x65, 0x71, 0x12, 0x1e, + 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x32, + 0x0a, 0x14, 0x74, 0x6f, 0x70, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x54, 0x69, 0x6e, 0x79, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x74, 0x6f, + 0x70, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x69, 0x6e, 0x79, + 0x49, 0x64, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x62, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x3b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, } var ( - file_unknown_proto_rawDescOnce sync.Once - file_unknown_proto_rawDescData = file_unknown_proto_rawDesc + file_pb_channel_unknown_proto_rawDescOnce sync.Once + file_pb_channel_unknown_proto_rawDescData = file_pb_channel_unknown_proto_rawDesc ) -func file_unknown_proto_rawDescGZIP() []byte { - file_unknown_proto_rawDescOnce.Do(func() { - file_unknown_proto_rawDescData = protoimpl.X.CompressGZIP(file_unknown_proto_rawDescData) +func file_pb_channel_unknown_proto_rawDescGZIP() []byte { + file_pb_channel_unknown_proto_rawDescOnce.Do(func() { + file_pb_channel_unknown_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_channel_unknown_proto_rawDescData) }) - return file_unknown_proto_rawDescData + return file_pb_channel_unknown_proto_rawDescData } -var file_unknown_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_unknown_proto_goTypes = []interface{}{ - (*ChannelOidb0Xf5BRsp)(nil), // 0: channel.ChannelOidb0xf5bRsp - (*ChannelOidb0Xf88Rsp)(nil), // 1: channel.ChannelOidb0xf88Rsp - (*ChannelOidb0Xfc9Rsp)(nil), // 2: channel.ChannelOidb0xfc9Rsp - (*ChannelOidb0Xf57Rsp)(nil), // 3: channel.ChannelOidb0xf57Rsp - (*GuildMetaRsp)(nil), // 4: channel.GuildMetaRsp - (*GuildAdminInfo)(nil), // 5: channel.GuildAdminInfo - (*GuildMemberInfo)(nil), // 6: channel.GuildMemberInfo - (*GuildUserProfile)(nil), // 7: channel.GuildUserProfile - (*GuildMeta)(nil), // 8: channel.GuildMeta +var file_pb_channel_unknown_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_pb_channel_unknown_proto_goTypes = []interface{}{ + (*ChannelOidb0Xf5BRsp)(nil), // 0: channel.ChannelOidb0xf5bRsp + (*ChannelOidb0Xf88Rsp)(nil), // 1: channel.ChannelOidb0xf88Rsp + (*ChannelOidb0Xfc9Rsp)(nil), // 2: channel.ChannelOidb0xfc9Rsp + (*ChannelOidb0Xf57Rsp)(nil), // 3: channel.ChannelOidb0xf57Rsp + (*ChannelOidb0Xf55Rsp)(nil), // 4: channel.ChannelOidb0xf55Rsp + (*GuildMetaRsp)(nil), // 5: channel.GuildMetaRsp + (*GuildAdminInfo)(nil), // 6: channel.GuildAdminInfo + (*GuildMemberInfo)(nil), // 7: channel.GuildMemberInfo + (*GuildUserProfile)(nil), // 8: channel.GuildUserProfile + (*GuildMeta)(nil), // 9: channel.GuildMeta + (*GuildChannelInfo)(nil), // 10: channel.GuildChannelInfo + (*GuildChannelSlowModeInfo)(nil), // 11: channel.GuildChannelSlowModeInfo + (*GuildChannelTopMsgInfo)(nil), // 12: channel.GuildChannelTopMsgInfo } -var file_unknown_proto_depIdxs = []int32{ - 6, // 0: channel.ChannelOidb0xf5bRsp.bots:type_name -> channel.GuildMemberInfo - 6, // 1: channel.ChannelOidb0xf5bRsp.members:type_name -> channel.GuildMemberInfo - 5, // 2: channel.ChannelOidb0xf5bRsp.adminInfo:type_name -> channel.GuildAdminInfo - 7, // 3: channel.ChannelOidb0xf88Rsp.profile:type_name -> channel.GuildUserProfile - 7, // 4: channel.ChannelOidb0xfc9Rsp.profile:type_name -> channel.GuildUserProfile - 4, // 5: channel.ChannelOidb0xf57Rsp.rsp:type_name -> channel.GuildMetaRsp - 8, // 6: channel.GuildMetaRsp.meta:type_name -> channel.GuildMeta - 6, // 7: channel.GuildAdminInfo.admins:type_name -> channel.GuildMemberInfo - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name +var file_pb_channel_unknown_proto_depIdxs = []int32{ + 7, // 0: channel.ChannelOidb0xf5bRsp.bots:type_name -> channel.GuildMemberInfo + 7, // 1: channel.ChannelOidb0xf5bRsp.members:type_name -> channel.GuildMemberInfo + 6, // 2: channel.ChannelOidb0xf5bRsp.adminInfo:type_name -> channel.GuildAdminInfo + 8, // 3: channel.ChannelOidb0xf88Rsp.profile:type_name -> channel.GuildUserProfile + 8, // 4: channel.ChannelOidb0xfc9Rsp.profile:type_name -> channel.GuildUserProfile + 5, // 5: channel.ChannelOidb0xf57Rsp.rsp:type_name -> channel.GuildMetaRsp + 10, // 6: channel.ChannelOidb0xf55Rsp.info:type_name -> channel.GuildChannelInfo + 9, // 7: channel.GuildMetaRsp.meta:type_name -> channel.GuildMeta + 7, // 8: channel.GuildAdminInfo.admins:type_name -> channel.GuildMemberInfo + 12, // 9: channel.GuildChannelInfo.topMsg:type_name -> channel.GuildChannelTopMsgInfo + 11, // 10: channel.GuildChannelInfo.slowModeInfos:type_name -> channel.GuildChannelSlowModeInfo + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } -func init() { file_unknown_proto_init() } -func file_unknown_proto_init() { - if File_unknown_proto != nil { +func init() { file_pb_channel_unknown_proto_init() } +func file_pb_channel_unknown_proto_init() { + if File_pb_channel_unknown_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_unknown_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_pb_channel_unknown_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelOidb0Xf5BRsp); i { case 0: return &v.state @@ -767,7 +1158,7 @@ func file_unknown_proto_init() { return nil } } - file_unknown_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_pb_channel_unknown_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelOidb0Xf88Rsp); i { case 0: return &v.state @@ -779,7 +1170,7 @@ func file_unknown_proto_init() { return nil } } - file_unknown_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_pb_channel_unknown_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelOidb0Xfc9Rsp); i { case 0: return &v.state @@ -791,7 +1182,7 @@ func file_unknown_proto_init() { return nil } } - file_unknown_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_pb_channel_unknown_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChannelOidb0Xf57Rsp); i { case 0: return &v.state @@ -803,7 +1194,19 @@ func file_unknown_proto_init() { return nil } } - file_unknown_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_pb_channel_unknown_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelOidb0Xf55Rsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_unknown_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GuildMetaRsp); i { case 0: return &v.state @@ -815,7 +1218,7 @@ func file_unknown_proto_init() { return nil } } - file_unknown_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_pb_channel_unknown_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GuildAdminInfo); i { case 0: return &v.state @@ -827,7 +1230,7 @@ func file_unknown_proto_init() { return nil } } - file_unknown_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_pb_channel_unknown_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GuildMemberInfo); i { case 0: return &v.state @@ -839,7 +1242,7 @@ func file_unknown_proto_init() { return nil } } - file_unknown_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_pb_channel_unknown_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GuildUserProfile); i { case 0: return &v.state @@ -851,7 +1254,7 @@ func file_unknown_proto_init() { return nil } } - file_unknown_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_pb_channel_unknown_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GuildMeta); i { case 0: return &v.state @@ -863,23 +1266,59 @@ func file_unknown_proto_init() { return nil } } + file_pb_channel_unknown_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GuildChannelInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_unknown_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GuildChannelSlowModeInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_channel_unknown_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GuildChannelTopMsgInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_unknown_proto_rawDesc, + RawDescriptor: file_pb_channel_unknown_proto_rawDesc, NumEnums: 0, - NumMessages: 9, + NumMessages: 13, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_unknown_proto_goTypes, - DependencyIndexes: file_unknown_proto_depIdxs, - MessageInfos: file_unknown_proto_msgTypes, + GoTypes: file_pb_channel_unknown_proto_goTypes, + DependencyIndexes: file_pb_channel_unknown_proto_depIdxs, + MessageInfos: file_pb_channel_unknown_proto_msgTypes, }.Build() - File_unknown_proto = out.File - file_unknown_proto_rawDesc = nil - file_unknown_proto_goTypes = nil - file_unknown_proto_depIdxs = nil + File_pb_channel_unknown_proto = out.File + file_pb_channel_unknown_proto_rawDesc = nil + file_pb_channel_unknown_proto_goTypes = nil + file_pb_channel_unknown_proto_depIdxs = nil } diff --git a/client/pb/channel/unknown.proto b/client/pb/channel/unknown.proto index 28eaeaf2..fb688e2b 100644 --- a/client/pb/channel/unknown.proto +++ b/client/pb/channel/unknown.proto @@ -3,7 +3,7 @@ syntax = "proto2"; package channel; -option go_package = "./;channel"; +option go_package = "pb/channel;channel"; message ChannelOidb0xf5bRsp { optional uint64 guildId = 1; @@ -24,6 +24,10 @@ message ChannelOidb0xf57Rsp { optional GuildMetaRsp rsp = 1; } +message ChannelOidb0xf55Rsp { + optional GuildChannelInfo info = 1; +} + message GuildMetaRsp { optional uint64 guildId = 3; optional GuildMeta meta = 4; @@ -68,6 +72,36 @@ message GuildMeta { optional int32 clientId = 20; } +message GuildChannelInfo { + optional uint64 channelId = 1; + optional string channelName = 2; + optional int64 creatorUin = 3; + optional int64 createTime = 4; + optional uint64 guildId = 5; + optional int32 finalNotifyType = 6; + optional int32 channelType = 7; + optional int32 talkPermission = 8; + // 11 - 14 : MsgInfo + optional uint64 creatorTinyId = 15; + // 16: Member info ? + optional int32 visibleType = 22; + optional GuildChannelTopMsgInfo topMsg = 28; + optional int32 currentSlowModeKey = 31; + repeated GuildChannelSlowModeInfo slowModeInfos = 32; +} + +message GuildChannelSlowModeInfo { + optional int32 slowModeKey = 1; + optional int32 speakFrequency = 2; + optional int32 slowModeCircle = 3; + optional string slowModeText = 4; +} + +message GuildChannelTopMsgInfo { + optional uint64 topMsgSeq = 1; + optional int64 topMsgTime = 2; + optional uint64 topMsgOperatorTinyId = 3; +} /* // 个性档案卡片 message GuildMemberProfileCard {