完善参数收集和文本提取,添加表情帮助指令#9
Conversation
1. 修复快捷指令中捕获组的参数解析和格式化能力 2. 在表情详情中显示可选参数、参数别名、取值范围和默认值 3. 新增 `帮助` 指令,展示所有可用命令和用法 4. 使用Plain组件的文本提取逻辑,修复"图片后跟文字无法收集"的问题
There was a problem hiding this comment.
Pull request overview
该 PR 旨在增强指令参数收集与文本提取能力,并新增“帮助”类指令以便用户快速查看可用命令与用法,提升插件在“图后带文字”等消息结构下的可用性。
Changes:
- 扩展
MemeOption模型字段以支持展示可选值与取值范围(choices/minimum/maximum)。 - 调整
universal_handler的文本提取方式为基于Plain组件拼接,改善“图片后跟文字无法收集”的场景。 - 新增
表情帮助指令,并调整快捷指令匹配逻辑以允许携带尾随文本传递给生成流程。
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| models.py | 为选项元数据补充 choices/min/max 字段,支持更丰富的参数信息展示。 |
| main.py | 新增“表情帮助”路由;改用 Plain 组件提取文本;快捷指令改为 match() 并提取尾随文本。 |
| handlers/help.py | 新增 handle_meme_help,输出完整帮助文案。 |
| handlers/generation.py | handle_shortcut 支持接收并转发 trailing_text 到生成入口。 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
jmt059
left a comment
There was a problem hiding this comment.
感谢提交!整体思路清晰,针对 Issue #8 的修复方向是正确的。以下是详细审查意见:
👍 亮点
- 文本提取逻辑改进(
main.py):将event.get_message_str()改为只提取Plain组件的文本,修复了"图片后跟文字无法收集"的问题,这是一个很好的额外修复。 - 帮助指令(
help.py):Issue #8 中提到的需求,实现简洁实用。
⚠️ 需要注意的问题
1. 快捷指令匹配:缺少 fullmatch 优先路径
当前改动直接将 fullmatch 替换为 match,这可能导致一些问题——某些快捷指令的正则模式如果设计为精确匹配整段文本(如包含捕获组的复杂模式),改为 match 后可能在意料之外的位置产生部分匹配。建议保留 fullmatch 作为优先路径,match 作为回退:
if match := sc_data["pattern"].fullmatch(cleaned_text):
asyncio.create_task(self.handle_shortcut(..., ""))
return
if match := sc_data["pattern"].match(cleaned_text):
trailing_text = cleaned_text[match.end():].strip()
asyncio.create_task(self.handle_shortcut(..., trailing_text))
return2. MemeOption 字段类型过于严格
choices: Optional[List[str]]— 如果 API 返回的可选值包含非字符串类型(如整数),Pydantic 校验会失败。建议改为Optional[List[Any]]。minimum/maximum: Optional[float]— 同理,改为Optional[Any]更安全,也能兼容 API 返回整数的情况。
3. info.py 未修改
虽然 MemeOption 新增了 choices/minimum/maximum 字段,但 _format_meme_option() 中仍然存在 option.type == "string" 的限制条件,非 string 类型的选项即使有 choices 也不会被显示。建议去掉这个类型限制。
4. 文件末尾缺少换行符
handlers/help.py 末尾缺少换行符(No newline at end of file),建议补上。
📝 总结
核心修复逻辑正确,但有几个细节需要打磨。特别是文本提取逻辑的改进很有价值,是一个不错的额外贡献。
Generated by Claude Code
Head branch was pushed to by a user without write access
表情帮助指令,展示所有可用命令和用法