feat(context_manager): 添加消息处理日志,优化消息标记为已读的逻辑
This commit is contained in:
@@ -85,26 +85,41 @@ class StreamContext(BaseDataModel):
|
||||
message_id: 消息ID
|
||||
action: 要添加的动作名称
|
||||
"""
|
||||
# 在未读消息中查找并更新
|
||||
# 在未读消息中查找并更新(统一转字符串比较)
|
||||
for message in self.unread_messages:
|
||||
if message.message_id == message_id:
|
||||
if str(message.message_id) == str(message_id):
|
||||
message.add_action(action)
|
||||
break
|
||||
|
||||
# 在历史消息中查找并更新
|
||||
# 在历史消息中查找并更新(统一转字符串比较)
|
||||
for message in self.history_messages:
|
||||
if message.message_id == message_id:
|
||||
if str(message.message_id) == str(message_id):
|
||||
message.add_action(action)
|
||||
break
|
||||
|
||||
def mark_message_as_read(self, message_id: str):
|
||||
"""标记消息为已读"""
|
||||
from src.common.logger import get_logger
|
||||
logger = get_logger("StreamContext")
|
||||
|
||||
# 先找到要标记的消息(处理 int/str 类型不匹配问题)
|
||||
message_to_mark = None
|
||||
for msg in self.unread_messages:
|
||||
if msg.message_id == message_id:
|
||||
msg.is_read = True
|
||||
self.history_messages.append(msg)
|
||||
self.unread_messages.remove(msg)
|
||||
# 统一转换为字符串比较,避免 int vs str 导致的匹配失败
|
||||
if str(msg.message_id) == str(message_id):
|
||||
message_to_mark = msg
|
||||
break
|
||||
|
||||
# 然后移动到历史消息
|
||||
if message_to_mark:
|
||||
message_to_mark.is_read = True
|
||||
self.history_messages.append(message_to_mark)
|
||||
self.unread_messages.remove(message_to_mark)
|
||||
msg_id_str = str(message_id)[:8] if message_id else "unknown"
|
||||
logger.info(f"📌 [标记已读] 消息 {msg_id_str} 已移至历史, 当前历史数: {len(self.history_messages)}, 未读数: {len(self.unread_messages)}")
|
||||
else:
|
||||
msg_id_str = str(message_id)[:8] if message_id else "unknown"
|
||||
logger.warning(f"⚠️ [标记已读] 未找到消息 {msg_id_str} 在未读列表中, 当前未读消息ID列表: {[str(m.message_id)[:8] for m in self.unread_messages[:5]]}")
|
||||
|
||||
def get_unread_messages(self) -> list["DatabaseMessages"]:
|
||||
"""获取未读消息"""
|
||||
|
||||
Reference in New Issue
Block a user