warn: Lagrange.OneBot.Core.Operation.OperationService[0]
Unexpected error encountered while handling message.
System.Text.Json.JsonException: The JSON value could not be converted to System.UInt32. Path: $.duration | LineNumber: 0 | ytePositionInLine: 59.
---> System.InvalidOperationException: Cannot get the value of a token type 'String' as a number.
at System.Text.Json.ThrowHelper.ThrowInvalidOperationException_ExpectedNumber(JsonTokenType tokenType)
at System.Text.Json.Utf8JsonReader.TryGetUInt32(UInt32& value)
at System.Text.Json.Utf8JsonReader.GetUInt32()
at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.ReadJsonAndSetMember(Object obj, ReadStack& state, Utf8JsonReader& reader)
at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
--- End of inner exception stack trace ---
at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, Utf8JsonReader& reader, Exception ex)
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo jsonTypeInfo, Nullable`1 actualByteCount)
at System.Text.Json.JsonSerializer.ReadNode[TValue](JsonNode node, JsonTypeInfo jsonTypeInfo)
at Lagrange.OneBot.Core.Operation.Group.SetGroupBanOperation.HandleOperation(BotContext context, JsonObject payload) in D:\a\Lagrange.Core\Lagrange.Core\Lagrange.OneBot\Core\Operation\Group\SetGroupBanOperation.cs:line 14
at Lagrange.OneBot.Core.Operation.OperationService.HandleOperation(MsgRecvEventArgs e) in D:\a\Lagrange.Core\Lagrange.Core\Lagrange.OneBot\Core\Operation\OperationService.cs:line 51
问题
Koishi 无法正常在 Onebot 平台禁言用户。
问题原因
根据 Onebot 11 标准,禁言用户的时长(
duration
参数)的类型为数字,但适配器给出的参数为字符串(参考下面日志)。这导致 Onebot 实现无法解析参数。日志
Koishi 侧
已经确定不是 pnpm 引发的问题。使用 npm 会出现一模一样的问题。
Onebot 侧
使用的实现为 Lagrange.OneBot Build a1530fd
触发问题的插件
koishi-plugin-russian-roulette
相关版本
NodeJS: 21.5.0 koishi: 4.16.4 koishi-plugin-adapter-onebot: 6.4.0 koishi-plugin-russian-roulette: 1.0.1