chore(napcat_adapter): 增加消息发送与回复处理的详细日志

为了方便排查消息发送失败或引用回复行为不符合预期的问题,在消息发送和回复处理的关键路径上增加了详细的日志输出。

- 在调用 NapCat 发送接口前,记录准备发送的完整消息体。
- 在 `handle_reply_message` 方法中,记录获取被引用消息详情、判断是否 @ 用户以及最终返回的消息段等步骤。
This commit is contained in:
minecraft1024a
2025-09-24 16:24:16 +08:00
parent 5b8cc51dad
commit c7f8760b2d
3 changed files with 1614 additions and 1 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -96,6 +96,7 @@ class SendHandler:
logger.error("无法识别的消息类型")
return
logger.info("尝试发送到napcat")
logger.info(f"准备发送到napcat的消息体: action='{action}', {id_name}='{target_id}', message='{processed_message}'")
response = await self.send_message_to_napcat(
action,
{
@@ -289,14 +290,17 @@ class SendHandler:
async def handle_reply_message(self, id: str, user_info: UserInfo) -> dict | list:
"""处理回复消息"""
logger.info(f"开始处理回复消息消息ID: {id}")
reply_seg = {"type": "reply", "data": {"id": id}}
# 检查是否启用引用艾特功能
if not config_api.get_plugin_config(self.plugin_config, "features.enable_reply_at", False):
logger.info("引用艾特功能未启用,仅发送普通回复")
return reply_seg
try:
msg_info_response = await self.send_message_to_napcat("get_msg", {"message_id": id})
logger.info(f"获取消息 {id} 的详情响应: {msg_info_response}")
replied_user_id = None
if msg_info_response and msg_info_response.get("status") == "ok":
@@ -307,6 +311,7 @@ class SendHandler:
# 如果没有获取到被回复者的ID则直接返回不进行@
if not replied_user_id:
logger.warning(f"无法获取消息 {id} 的发送者信息,跳过 @")
logger.info(f"最终返回的回复段: {reply_seg}")
return reply_seg
# 根据概率决定是否艾特用户
@@ -314,13 +319,17 @@ class SendHandler:
at_seg = {"type": "at", "data": {"qq": str(replied_user_id)}}
# 在艾特后面添加一个空格
text_seg = {"type": "text", "data": {"text": " "}}
return [reply_seg, at_seg, text_seg]
result_seg = [reply_seg, at_seg, text_seg]
logger.info(f"最终返回的回复段: {result_seg}")
return result_seg
except Exception as e:
logger.error(f"处理引用回复并尝试@时出错: {e}")
# 出现异常时,只发送普通的回复,避免程序崩溃
logger.info(f"最终返回的回复段: {reply_seg}")
return reply_seg
logger.info(f"最终返回的回复段: {reply_seg}")
return reply_seg
def handle_text_message(self, message: str) -> dict: