修复relationship_value类型错误时的异常
This commit is contained in:
@@ -6,6 +6,7 @@ from ...common.database import db
|
|||||||
from .message_base import UserInfo
|
from .message_base import UserInfo
|
||||||
from .chat_stream import ChatStream
|
from .chat_stream import ChatStream
|
||||||
import math
|
import math
|
||||||
|
from bson.decimal128 import Decimal128
|
||||||
|
|
||||||
logger = get_module_logger("rel_manager")
|
logger = get_module_logger("rel_manager")
|
||||||
|
|
||||||
@@ -113,6 +114,19 @@ class RelationshipManager:
|
|||||||
if relationship:
|
if relationship:
|
||||||
for k, value in kwargs.items():
|
for k, value in kwargs.items():
|
||||||
if k == "relationship_value":
|
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
|
relationship.relationship_value += value
|
||||||
await self.storage_relationship(relationship)
|
await self.storage_relationship(relationship)
|
||||||
relationship.saved = True
|
relationship.saved = True
|
||||||
|
|||||||
Reference in New Issue
Block a user