fix:图片为被正常构建

pull/1385/head
SengokuCola 2025-11-25 02:24:55 +08:00
parent 5d9e00c5ea
commit a9c29aaf8d
1 changed files with 22 additions and 31 deletions

View File

@ -13,6 +13,7 @@ from src.config.config import model_config, global_config
from src.chat.message_receive.chat_stream import get_chat_manager
from src.plugin_system.apis import llm_api
from src.chat.utils.chat_message_builder import (
build_readable_messages,
build_readable_messages_with_id,
get_raw_msg_by_timestamp_with_chat_inclusive,
get_raw_msg_before_timestamp_with_chat,
@ -45,48 +46,38 @@ def _contains_bot_self_name(content: str) -> bool:
return any(name in target for name in candidates if target)
def _format_context_message(msg: Any, seq_index: int) -> str:
"""
将单条消息格式化为带序号的上下文行
"""
if msg is None:
return ""
text = (getattr(msg, "display_message", None) or getattr(msg, "processed_plain_text", None) or "").strip()
if not text:
return ""
user_info = getattr(msg, "user_info", None)
nickname = ""
if user_info:
nickname = getattr(user_info, "user_nickname", "") or getattr(user_info, "user_id", "")
if not nickname:
nickname = getattr(msg, "user_nickname", "") or getattr(msg, "user_id", "") or "某人"
return f"{nickname}: {text}"
def _build_context_paragraph(messages: List[Any], center_index: int) -> Optional[str]:
"""
构建包含中心消息上下文的段落前3条+后3条
构建包含中心消息上下文的段落前3条+后3条使用标准的 readable builder 输出
"""
if not messages or center_index < 0 or center_index >= len(messages):
return None
context_start = max(0, center_index - 3)
context_end = min(len(messages), center_index + 1 + 3)
context_messages = messages[context_start:context_end]
context_lines: List[str] = []
for idx in range(context_start, context_end):
formatted_line = _format_context_message(messages[idx], idx + 1)
if formatted_line:
context_lines.append(formatted_line)
if not context_lines:
if not context_messages:
return None
paragraph = "\n".join(context_lines).strip()
try:
paragraph = build_readable_messages(
messages=context_messages,
replace_bot_name=True,
timestamp_mode="relative",
read_mark=0.0,
truncate=False,
show_actions=False,
show_pic=True,
message_id_list=None,
remove_emoji_stickers=False,
pic_single=True,
)
except Exception as e:
logger.warning(f"构建上下文段落失败: {e}")
return None
paragraph = paragraph.strip()
return paragraph or None