修复reply动作缺少action_message的重大问题

This commit is contained in:
Furina-1013-create
2025-09-14 23:45:50 +08:00
parent 65f949ad99
commit 99eb52cd8c
5 changed files with 57 additions and 5 deletions

View File

@@ -594,6 +594,9 @@ class DefaultReplyer:
def _parse_reply_target(self, target_message: str) -> Tuple[str, str]:
"""解析回复目标消息 - 使用共享工具"""
from src.chat.utils.prompt import Prompt
if target_message is None:
logger.warning("target_message为None返回默认值")
return "未知用户", "(无消息内容)"
return Prompt.parse_reply_target(target_message)
async def build_keywords_reaction_prompt(self, target: Optional[str]) -> str:
@@ -827,6 +830,13 @@ class DefaultReplyer:
)
person_name = await person_info_manager.get_value(person_id, "person_name")
# 如果person_name为None使用fallback值
if person_name is None:
# 尝试从reply_message获取用户名
fallback_name = reply_message.get("user_nickname") or reply_message.get("user_id", "未知用户")
logger.warning(f"无法获取person_name使用fallback: {fallback_name}")
person_name = str(fallback_name)
# 检查是否是bot自己的名字如果是则替换为"(你)"
bot_user_id = str(global_config.bot.qq_account)
current_user_id = person_info_manager.get_value_sync(person_id, "user_id")
@@ -839,6 +849,14 @@ class DefaultReplyer:
sender = person_name
target = reply_message.get("processed_plain_text")
# 最终的空值检查确保sender和target不为None
if sender is None:
logger.warning("sender为None使用默认值'未知用户'")
sender = "未知用户"
if target is None:
logger.warning("target为None使用默认值'(无消息内容)'")
target = "(无消息内容)"
person_info_manager = get_person_info_manager()
person_id = person_info_manager.get_person_id_by_person_name(sender)
platform = chat_stream.platform
@@ -1084,6 +1102,14 @@ class DefaultReplyer:
else:
sender, target = self._parse_reply_target(reply_to)
# 添加空值检查确保sender和target不为None
if sender is None:
logger.warning("build_rewrite_context: sender为None使用默认值'未知用户'")
sender = "未知用户"
if target is None:
logger.warning("build_rewrite_context: target为None使用默认值'(无消息内容)'")
target = "(无消息内容)"
# 添加情绪状态获取
if global_config.mood.enable_mood:
chat_mood = mood_manager.get_mood_by_chat_id(chat_id)