# Danding-Bot 插件代码评审报告 - Round 1 **日期**: 2026-05-09 **评审人**: Agent **进度**: 2/13 插件已完成 --- ## 1. auto_friend_accept ✅ 已完成 ### 发现问题 (4项) | # | 严重度 | 问题 | 文件 | 行号 | |---|--------|------|------|------| | 1 | 低 | 导入`validator`但未使用 | config.py | 1 | | 2 | 中 | `Optional[str] = ""`语义不清,None和空串应区分 | config.py | 9 | | 3 | 低 | 导入`T_State`但未使用 | auto_accept.py | 3 | | 4 | 高 | 嵌套try-except,缩进深,违反篇幅分布原则 | auto_accept.py | 23-48 | | 5 | 中 | 随机延迟硬编码(2-5s),应可配置 | auto_accept.py | 35 | | 6 | 中 | 日志缺少flag标识,出问题难追溯 | auto_accept.py | 全局 | ### 修复项 - 移除未使用的`validator`导入 - `auto_reply_message`默认值改为`None` - 新增`reply_delay_min/max`配置项 - 移除未使用的`T_State`导入 - 消除嵌套try-except,扁平化控制流 - 日志加入`user_id`和`flag`标识 ### 待改进 - 无明显待改进项 --- ## 2. auto_recall ✅ 已完成 ### 发现问题 (6项) | # | 严重度 | 问题 | 文件 | 行号 | |---|--------|------|------|------| | 1 | 中 | `Bot`重复导入(line 4和7覆盖) | __init__.py | 4,7 | | 2 | 低 | `T_State`导入未使用 | __init__.py | 8 | | 3 | 低 | `get_driver`导入未使用 | __init__.py | 3 | | 4 | 高 | `asyncio.create_task`未保存引用,可能被GC回收触发RuntimeWarning | __init__.py | 48 | | 5 | 高 | 撤回失败用`"success" in str(e).lower()`判断忽略,极其脆弱 | __init__.py | 56 | | 6 | 低 | 未拦截`send_private_msg`,私聊消息不会撤回 | __init__.py | 26 | | 7 | 低 | 配置无边界校验(延迟可为负数) | config.py | 4-5 | ### 修复项 - 移除重复/未使用的导入(Bot/T_State/get_driver/MockApiException) - 新增`_recall_tasks`集合+`_track_task()`防止task被GC回收 - 移除脆弱的字符串匹配错误忽略逻辑,统一记录错误 - API拦截列表加入`send_private_msg` - config添加`ge=1`约束和validator - 日志加入`msg_id`便于追溯 ### 待改进 - 可考虑撤回失败时的重试机制(但当前简单记录已足够) --- ## 跨插件一致性观察 - 两个插件配置类风格已统一:均为`BaseModel`子类 - 日志格式趋于统一:`操作描述: 关键标识=value error={e}` - 待后续全局检查时进一步统一