From 402b66dd16d45bd8a9c193cf82f5fa0ca7457677 Mon Sep 17 00:00:00 2001 From: chenflxs <2665955378@qq.com> Date: Sat, 22 Mar 2025 20:00:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Drelationship=5Fvalue=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E9=94=99=E8=AF=AF=E6=97=B6=E7=9A=84=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/chat/relationship_manager.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/plugins/chat/relationship_manager.py b/src/plugins/chat/relationship_manager.py index f996d4fde..7b40ac688 100644 --- a/src/plugins/chat/relationship_manager.py +++ b/src/plugins/chat/relationship_manager.py @@ -6,6 +6,7 @@ from ...common.database import db from .message_base import UserInfo from .chat_stream import ChatStream import math +from bson.decimal128 import Decimal128 logger = get_module_logger("rel_manager") @@ -113,6 +114,19 @@ class RelationshipManager: if relationship: for k, value in kwargs.items(): if k == "relationship_value": + # 检查relationship.relationship_value是否为double类型 + if not isinstance(relationship.relationship_value, float): + try: + # 处理 Decimal128 类型 + if isinstance(relationship.relationship_value, Decimal128): + relationship.relationship_value = float(relationship.relationship_value.to_decimal()) + else: + relationship.relationship_value = float(relationship.relationship_value) + logger.info(f"[关系管理] 用户 {user_id}({platform}) 的关系值已转换为double类型: {relationship.relationship_value}") + except (ValueError, TypeError): + # 如果不能解析/强转则将relationship.relationship_value设置为double类型的0 + relationship.relationship_value = 0.0 + logger.warning(f"[关系管理] 用户 {user_id}({platform}) 的关系值无法转换为double类型,已设置为0") relationship.relationship_value += value await self.storage_relationship(relationship) relationship.saved = True