请确保您已阅读以上注意事项,并勾选下方的确认框。
Lagrange项目
OneBot
所使用/依赖的Lagrange项目对应的commit
1968eac
运行环境
Linux
运行架构
x64
连接方式
反向 WebSocket
重现步骤
在特定群组中,所有正常的群聊消息均无法通过 OneBot 适配器上报给下游应用(如 Koishi)。通过日志分析发现,Lagrange 在接收到这些正常的聊天消息时,似乎错误地将其判断为“新人入群”事件,并尝试使用 GroupMemberEnterDetail 的协议格式进行解析,最终因格式不匹配而抛出 Invalid field 异常,导致该消息被丢弃,无法正常处理。
此问题在更新到最新的 Docker 镜像后依然存在。
期望的结果是什么?
特定群组中的正常聊天消息应该被正确解析,并通过 OneBot 适配器正常上报。
实际的结果是什么?
特定群组中的正常聊天消息没有被上报。Lagrange 日志中出现大量与 GroupMemberEnterDetail 相关的 Protobuf 解析失败警告,即使当时并没有新成员加入群聊。
简单的复现代码/链接(可选)
Trace 级别日志记录(可选)
[2025-09-12 08:30:01] [MessagingLogic] [VERBOSE]: [MessageChain([ProblematicGroupID])([UserID_A])] [Text]: 是qq到连接器的问题
[2025-09-12 08:30:16] [BusinessContext] [WARNING]: Error while handling msf push: 12 trpc.msg.olpush.OlPushService.MsgPush
[2025-09-12 08:30:16] [BusinessContext] [WARNING]: Invalid field in source data: 0
[2025-09-12 08:30:16] [BusinessContext] [WARNING]: at ProtoBuf.Internal.ThrowHelper.ThrowProtoException(String message, Exception inner) in /_/src/protobuf-net.Core/Internal/ThrowHelper.cs:line 86
at ProtoBuf.ProtoReader.ThrowInvalidField(Int32 fieldNumber) in /_/src/protobuf-net.Core/ProtoReader.cs:line 325
at proto_86(State&, GroupMemberEnterDetail)
at ProtoBuf.Internal.Serializers.SimpleCompiledSerializer`1.ProtoBuf.Serializers.ISerializer<T>.Read(State& state, T value) in /_/src/protobuf-net/Internal/Serializers/CompiledSerializer.cs:line 107
at ProtoBuf.ProtoReader.State.ReadMessage[TSerializer,T](SerializerFeatures features, T value, TSerializer& serializer) in /_/src/protobuf-net.Core/ProtoReader.State.ReadMethods.cs:line 1022
at proto_84(State&, GroupMemberEnterInfo)
at ProtoBuf.Internal.Serializers.SimpleCompiledSerializer`1.ProtoBuf.Serializers.ISerializer<T>.Read(State& state, T value) in /_/src/protobuf-net/Internal/Serializers/CompiledSerializer.cs:line 107
at ProtoBuf.ProtoReader.State.ReadMessage[TSerializer,T](SerializerFeatures features, T value, TSerializer& serializer) in /_/src/protobuf-net.Core/ProtoReader.State.ReadMethods.cs:line 1022
at proto_80(State&, GroupMemberEnterContentBody)
at ProtoBuf.Internal.Serializers.SimpleCompiledSerializer`1.ProtoBuf.Serializers.ISerializer<T>.Read(State& state, T value) in /_/src/protobuf-net/Internal/Serializers/CompiledSerializer.cs:line 107
at ProtoBuf.ProtoReader.State.ReadMessage[TSerializer,T](SerializerFeatures features, T value, TSerializer& serializer) in /_/src/protobuf-net.Core/ProtoReader.State.ReadMethods.cs:line 1022
at proto_78(State&, GroupMemberEnter)
at ProtoBuf.Internal.Serializers.SimpleCompiledSerializer`1.ProtoBuf.Serializers.ISerializer<T>.Read(State& state, T value) in /_/src/protobuf-net/Internal/Serializers/CompiledSerializer.cs:line 107
at ProtoBuf.ProtoReader.State.ReadAsRoot[T](T value, ISerializer`1 serializer) in /_/src/protobuf-net.Core/ProtoReader.State.ReadMethods.cs:line 1157
at ProtoBuf.ProtoReader.State.DeserializeRoot[T](T value, ISerializer`1 serializer) in /_/src/protobuf-net.Core/ProtoReader.State.ReadMethods.cs:line 1137
at ProtoBuf.Meta.TypeModel.Deserialize[T](ReadOnlySpan`1 source, T value, Object userState) in /_/src/protobuf-net.Core/Meta/TypeModel.cs:line 808
at ProtoBuf.Serializer.Deserialize[T](ReadOnlySpan`1 source, T value, Object userState) in /_/src/protobuf-net/Serializer.Deserialize.cs:line 74
at Lagrange.Core.Internal.Service.Message.PushMessageService.ProcessEvent0x210(Span`1 payload, PushMsg msg, List`1 extraEvents)
at Lagrange.Core.Internal.Service.Message.PushMessageService.Parse(Span`1 input, BotKeystore keystore, BotAppInfo appInfo, BotDeviceInfo device, PushMessageEvent& output, List`1& extraEvents)
at Lagrange.Core.Internal.Service.BaseService`1.Lagrange.Core.Internal.Service.IService.Parse(Span`1 input, BotKeystore keystore, BotAppInfo appInfo, BotDeviceInfo device, ProtocolEvent& output, List`1& extraEvents)
at Lagrange.Core.Internal.Context.ServiceContext.ResolveEventByPacket(SsoPacket packet)
at Lagrange.Core.Internal.Context.BusinessContext.HandleServerPacket(SsoPacket packet)
[2025-09-12 08:30:20] [MessagingLogic] [VERBOSE]: [MessageChain([ProblematicGroupID])([UserID_A])] [Text]: 不知道为什么正常的群消息被解析成进群消息了
[2025-09-12 08:30:38] [MessagingLogic] [VERBOSE]: [MessageChain([ProblematicGroupID])([UserID_B])] [Text]: 怪
补充说明(可选)
No response
请确保您已阅读以上注意事项,并勾选下方的确认框。
Lagrange项目
OneBot
所使用/依赖的Lagrange项目对应的commit
1968eac
运行环境
Linux
运行架构
x64
连接方式
反向 WebSocket
重现步骤
在特定群组中,所有正常的群聊消息均无法通过 OneBot 适配器上报给下游应用(如 Koishi)。通过日志分析发现,Lagrange 在接收到这些正常的聊天消息时,似乎错误地将其判断为“新人入群”事件,并尝试使用 GroupMemberEnterDetail 的协议格式进行解析,最终因格式不匹配而抛出 Invalid field 异常,导致该消息被丢弃,无法正常处理。
此问题在更新到最新的 Docker 镜像后依然存在。
期望的结果是什么?
特定群组中的正常聊天消息应该被正确解析,并通过 OneBot 适配器正常上报。
实际的结果是什么?
特定群组中的正常聊天消息没有被上报。Lagrange 日志中出现大量与 GroupMemberEnterDetail 相关的 Protobuf 解析失败警告,即使当时并没有新成员加入群聊。
简单的复现代码/链接(可选)
Trace 级别日志记录(可选)
补充说明(可选)
No response