Merge pull request #551 from chenflxs/main-fix

修复relationship_value类型错误时的异常
This commit is contained in:
SengokuCola
2025-03-25 15:41:47 +08:00
committed by GitHub

View File

@@ -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