Repository navigation
feat: 补充相关帮助图 - #41
Merged
Merged
Conversation
Xbaiyz12
added a commit
to Xbaiyz12/TodayWaifu
that referenced
this pull request
Oct 4, 2026
上百人的群里查看老婆列表会直接刷出一大串文字,把聊天淹没;而官机(QQ 官方机器人) 不支持合并转发,原来「超过阈值走 MessageSegment.node」的做法在官机上等于没生效。 改为:条目超过 WIFE_LIST_IMAGE_THRESHOLD(5) 条时用 PIL 渲染成图片再发,未超过时 仍发纯文本,保留可复制、可搜索的好处。 - 新增 TodayWaifu/list_image.py:按条数自适应列数(单列最多 30 行,最多 4 列), 字体取框架自带 MiSans(core_font),输出 PNG 字节;渲染经 run_blocking 下沉到 插件线程池,避免阻塞事件循环。 - 图片消息复用既有的 _image_message():base64 编码同样在线程池内完成。 - constants.py 的 LIST_FORWARD_THRESHOLD(10) 由 WIFE_LIST_IMAGE_THRESHOLD(5) 取代, shared.py 的导出同步调整,避免两套阈值并存。 另外同步 tests/compatibility_manifest.json 里 DailyWifeHelpColumn 的默认值:上游 MimoKit#41 把该默认值由 4 改成 3 时漏了清单,导致 main 自身的兼容性用例失败(CI 两次红), 这里一并修正。 新增 tests/test_wife_list_image.py(9 项行为测试):0/1/5/6/31 条都能渲染出合法 PNG、 列数随条数增长、超长名字不破坏渲染,以及 _send_wife_list 的分支行为——超过 5 条发 图片、正好 5 条与空列表发文本;并断言旧常量与 MessageSegment.node 已不再出现。 验证:pytest tests/ -q -> 376 passed;ruff check -> All checks passed。
Xbaiyz12
added a commit
to Xbaiyz12/TodayWaifu
that referenced
this pull request
Oct 5, 2026
上百人的群里查看老婆列表会直接刷出一大串文字,把聊天淹没;而官机(QQ 官方机器人) 不支持合并转发,原来「超过阈值走 MessageSegment.node」的做法在官机上等于没生效。 改为:条目超过 WIFE_LIST_IMAGE_THRESHOLD(5) 条时用 PIL 渲染成图片再发,未超过时 仍发纯文本,保留可复制、可搜索的好处。 - 新增 TodayWaifu/list_image.py:按条数自适应列数(单列最多 24 行,最多 4 列), 输出 PNG 字节;渲染经 run_blocking 下沉到插件线程池,避免阻塞事件循环。 - 视觉沿用插件内排行榜卡片的既有规范:极淡垂直渐变底 + 白色圆角卡片,标题与序号 徽章用同源的「粉红(255,0,106) → 紫(106,92,255)」渐变,标题居中带浅阴影,角色名 用主题色加粗突出,行间细分隔线,各列取同一宽度以保持左右对齐。 - 排版按 2 倍尺寸绘制再缩回(超采样),圆角、徽章与文字边缘才不显毛刺。 - 图片消息复用既有的 _image_message():base64 编码同样在线程池内完成。 - constants.py 的 LIST_FORWARD_THRESHOLD(10) 由 WIFE_LIST_IMAGE_THRESHOLD(5) 取代, shared.py 的导出同步调整,避免两套阈值并存。 另外同步 tests/compatibility_manifest.json 里 DailyWifeHelpColumn 的默认值:上游 MimoKit#41 把该默认值由 4 改成 3 时漏了清单,导致 main 自身的兼容性用例失败(CI 两次红), 这里一并修正。 新增 tests/test_wife_list_image.py(9 项行为测试):0/1/5/6/31 条都能渲染出合法 PNG、 列数随条数增长、超长名字不破坏渲染,以及 _send_wife_list 的分支行为——超过 5 条发 图片、正好 5 条与空列表发文本;并断言旧常量与 MessageSegment.node 已不再出现。 测试按 AST 加载渲染模块时同时剥掉 gsuid_core 导入并注入假字体,CI 上无需框架环境。 验证:pytest tests/ -q -> 376 passed(core 根与 CI 同款插件目录路径各跑一次); ruff check -> All checks passed。
Xbaiyz12
added a commit
to Xbaiyz12/TodayWaifu
that referenced
this pull request
Oct 5, 2026
上百人的群里查看老婆列表会直接刷出一大串文字,把聊天淹没;而官机(QQ 官方机器人) 不支持合并转发,原来「超过阈值走 MessageSegment.node」的做法在官机上等于没生效。 改为:条目超过 WIFE_LIST_IMAGE_THRESHOLD(5) 条时用 PIL 渲染成图片再发,未超过时 仍发纯文本,保留可复制、可搜索的好处。 - 新增 TodayWaifu/list_image.py:条目按从上到下的单列竖排,序号自上而下递增,与 聊天里的列表读法一致;输出 JPEG 字节,渲染经 run_blocking 下沉到插件线程池。 - 视觉沿用插件内排行榜卡片的规范:背景取鸣潮角色面板图并自上而下渐深压暗(取不到 时退回淡紫渐变底),其上叠半透明白圆角卡片;标题与序号徽章用同源的 「粉红(255,0,106) → 紫(106,92,255)」渐变,角色名用主题色加粗突出。 - 排版按 2 倍尺寸绘制再缩回(超采样),圆角、徽章与文字边缘才不显毛刺;条目多时 行距收紧(≥40 条用 46px),避免上百人时图片长得离谱。 - 背景是照片,PNG 无损会到近 MB,故输出 JPEG(质量 88);该图不含透明区域, 转换无损失。 - 图片消息复用既有的 _image_message():base64 编码同样在线程池内完成。 - constants.py 的 LIST_FORWARD_THRESHOLD(10) 由 WIFE_LIST_IMAGE_THRESHOLD(5) 取代, shared.py 的导出同步调整,避免两套阈值并存。 另外同步 tests/compatibility_manifest.json 里 DailyWifeHelpColumn 的默认值:上游 MimoKit#41 把该默认值由 4 改成 3 时漏了清单,导致 main 自身的兼容性用例失败(CI 两次红), 这里一并修正。 新增 tests/test_wife_list_image.py(9 项行为测试):0/1/5/6/31 条都能渲染出合法图片、 竖排单列(宽度不随条数变化、高度随条数显著增长)、超长名字不破坏渲染,以及 _send_wife_list 的分支行为——超过 5 条发图片、正好 5 条与空列表发文本;并断言旧常量 与 MessageSegment.node 已不再出现。测试按 AST 加载渲染模块时同时剥掉 gsuid_core 导入并注入假字体与假资源路径,CI 上无需框架环境,也不依赖本机角色图。 验证:pytest tests/ -q -> 376 passed(core 根与 CI 同款插件目录路径各跑一次); ruff check -> All checks passed。
Xbaiyz12
added a commit
to Xbaiyz12/TodayWaifu
that referenced
this pull request
Oct 5, 2026
上百人的群里查看老婆列表会直接刷出一大串文字,把聊天淹没;而官机(QQ 官方机器人) 不支持合并转发,原来「超过阈值走 MessageSegment.node」的做法在官机上等于没生效。 改为:条目超过 WIFE_LIST_IMAGE_THRESHOLD(5) 条时用 PIL 渲染成图片再发,未超过时 仍发纯文本,保留可复制、可搜索的好处。 - 新增 TodayWaifu/list_image.py:条目按从上到下的单列竖排,序号按显示顺序重新编号 (1→N,自上而下递增,与聊天列表读法一致);输出 JPEG 字节,渲染经 run_blocking 下沉到插件线程池。 - 视觉沿用插件内排行榜卡片的规范:背景取鸣潮角色面板图并自上而下渐深压暗(取不到 时退回淡紫渐变底),其上叠半透明白圆角卡片;标题与序号徽章用同源的 「粉红(255,0,106) → 紫(106,92,255)」渐变,角色名用主题色加粗突出。 - 排版按 2 倍尺寸绘制再缩回(超采样),圆角、徽章与文字边缘才不显毛刺;条目多时 行距收紧(≥40 条用 46px),避免上百人时图片长得离谱。 - 背景是照片,PNG 无损会到近 MB,故输出 JPEG(质量 88);该图不含透明区域, 转换无损失。 - 图片消息复用既有的 _image_message():base64 编码同样在线程池内完成。 - constants.py 的 LIST_FORWARD_THRESHOLD(10) 由 WIFE_LIST_IMAGE_THRESHOLD(5) 取代, shared.py 的导出同步调整,避免两套阈值并存。 注意 _wife_list_items 返回的 items 首元素是排序用的时间戳(int(updated_at)),并不是 序号:文本版列表一直用 enumerate 重新编号,出图这一支必须照做,否则会把一串十位数字 当成序号画出来。 另外同步 tests/compatibility_manifest.json 里 DailyWifeHelpColumn 的默认值:上游 MimoKit#41 把该默认值由 4 改成 3 时漏了清单,导致 main 自身的兼容性用例失败(CI 两次红), 这里一并修正。 新增 tests/test_wife_list_image.py(11 项行为测试):0/1/5/6/31 条都能渲染出合法图片、 竖排单列(宽度不随条数变化、高度随条数显著增长)、超长名字不破坏渲染、序号按显示顺序 重新编号(且首元素不影响列宽),以及 _send_wife_list 的分支行为——超过 5 条发图片、 正好 5 条与空列表发文本;并断言旧常量与 MessageSegment.node 已不再出现。测试按 AST 加载渲染模块时同时剥掉 gsuid_core 导入并注入假字体与假资源路径,CI 上无需框架环境, 也不依赖本机角色图。 验证:pytest tests/ -q -> 376 passed(core 根与 CI 同款插件目录路径各跑一次); ruff check -> All checks passed。
Xbaiyz12
added a commit
to Xbaiyz12/TodayWaifu
that referenced
this pull request
Oct 5, 2026
上百人的群里查看老婆列表会直接刷出一大串文字,把聊天淹没;而官机(QQ 官方机器人) 不支持合并转发,原来「超过阈值走 MessageSegment.node」的做法在官机上等于没生效。 改为:条目超过 WIFE_LIST_IMAGE_THRESHOLD(5) 条时用 PIL 渲染成图片再发,未超过时 仍发纯文本,保留可复制、可搜索的好处。 - 新增 TodayWaifu/list_image.py:条目按从上到下的单列竖排,序号按显示顺序重新编号 (1→N,自上而下递增,与聊天列表读法一致);输出 JPEG 字节,渲染经 run_blocking 下沉到插件线程池。 - 视觉沿用插件内排行榜卡片的规范:背景取鸣潮角色面板图并自上而下渐深压暗(取不到 时退回淡紫渐变底),其上叠半透明白圆角卡片(alpha 112,与排行榜的 105 同量级); 标题与序号徽章用同源的「粉红(255,0,106) → 紫(106,92,255)」渐变,角色名用主题色 加粗突出。 - 卡片是半透明的,浅色背景会吃掉深色小字,故文字一律带一层白色描边,背景明暗都 压得住。 - 排版按 2 倍尺寸绘制再缩回(超采样),圆角、徽章与文字边缘才不显毛刺;条目多时 行距收紧(≥40 条用 46px),避免上百人时图片长得离谱。 - 背景是照片,PNG 无损会到近 MB,故输出 JPEG(质量 88);该图不含透明区域, 转换无损失。 - 图片消息复用既有的 _image_message():base64 编码同样在线程池内完成。 - constants.py 的 LIST_FORWARD_THRESHOLD(10) 由 WIFE_LIST_IMAGE_THRESHOLD(5) 取代, shared.py 的导出同步调整,避免两套阈值并存。 注意 _wife_list_items 返回的 items 首元素是排序用的时间戳(int(updated_at)),并不是 序号:文本版列表一直用 enumerate 重新编号,出图这一支必须照做,否则会把一串十位数字 当成序号画出来。 另外同步 tests/compatibility_manifest.json 里 DailyWifeHelpColumn 的默认值:上游 MimoKit#41 把该默认值由 4 改成 3 时漏了清单,导致 main 自身的兼容性用例失败(CI 两次红), 这里一并修正。 新增 tests/test_wife_list_image.py(11 项行为测试):0/1/5/6/31 条都能渲染出合法图片、 竖排单列(宽度不随条数变化、高度随条数显著增长)、超长名字不破坏渲染、序号按显示顺序 重新编号(且首元素不影响列宽),以及 _send_wife_list 的分支行为——超过 5 条发图片、 正好 5 条与空列表发文本;并断言旧常量与 MessageSegment.node 已不再出现。测试按 AST 加载渲染模块时同时剥掉 gsuid_core 导入并注入假字体与假资源路径,CI 上无需框架环境, 也不依赖本机角色图。 验证:pytest tests/ -q -> 378 passed(core 根与 CI 同款插件目录路径各跑一次); ruff check -> All checks passed。
MimoKit
added a commit
that referenced
this pull request
Oct 6, 2026
* feat: 老婆列表超过 5 条改为渲染图片 上百人的群里查看老婆列表会直接刷出一大串文字,把聊天淹没;而官机(QQ 官方机器人) 不支持合并转发,原来「超过阈值走 MessageSegment.node」的做法在官机上等于没生效。 改为:条目超过 WIFE_LIST_IMAGE_THRESHOLD(5) 条时用 PIL 渲染成图片再发,未超过时 仍发纯文本,保留可复制、可搜索的好处。 - 新增 TodayWaifu/list_image.py:条目按从上到下的单列竖排,序号按显示顺序重新编号 (1→N,自上而下递增,与聊天列表读法一致);输出 JPEG 字节,渲染经 run_blocking 下沉到插件线程池。 - 视觉沿用插件内排行榜卡片的规范:背景取鸣潮角色面板图并自上而下渐深压暗(取不到 时退回淡紫渐变底),其上叠半透明白圆角卡片(alpha 112,与排行榜的 105 同量级); 标题与序号徽章用同源的「粉红(255,0,106) → 紫(106,92,255)」渐变,角色名用主题色 加粗突出。 - 卡片是半透明的,浅色背景会吃掉深色小字,故文字一律带一层白色描边,背景明暗都 压得住。 - 排版按 2 倍尺寸绘制再缩回(超采样),圆角、徽章与文字边缘才不显毛刺;条目多时 行距收紧(≥40 条用 46px),避免上百人时图片长得离谱。 - 背景是照片,PNG 无损会到近 MB,故输出 JPEG(质量 88);该图不含透明区域, 转换无损失。 - 图片消息复用既有的 _image_message():base64 编码同样在线程池内完成。 - constants.py 的 LIST_FORWARD_THRESHOLD(10) 由 WIFE_LIST_IMAGE_THRESHOLD(5) 取代, shared.py 的导出同步调整,避免两套阈值并存。 注意 _wife_list_items 返回的 items 首元素是排序用的时间戳(int(updated_at)),并不是 序号:文本版列表一直用 enumerate 重新编号,出图这一支必须照做,否则会把一串十位数字 当成序号画出来。 另外同步 tests/compatibility_manifest.json 里 DailyWifeHelpColumn 的默认值:上游 #41 把该默认值由 4 改成 3 时漏了清单,导致 main 自身的兼容性用例失败(CI 两次红), 这里一并修正。 新增 tests/test_wife_list_image.py(11 项行为测试):0/1/5/6/31 条都能渲染出合法图片、 竖排单列(宽度不随条数变化、高度随条数显著增长)、超长名字不破坏渲染、序号按显示顺序 重新编号(且首元素不影响列宽),以及 _send_wife_list 的分支行为——超过 5 条发图片、 正好 5 条与空列表发文本;并断言旧常量与 MessageSegment.node 已不再出现。测试按 AST 加载渲染模块时同时剥掉 gsuid_core 导入并注入假字体与假资源路径,CI 上无需框架环境, 也不依赖本机角色图。 验证:pytest tests/ -q -> 378 passed(core 根与 CI 同款插件目录路径各跑一次); ruff check -> All checks passed。 * 🔥 移除老婆列表转图片的实现, 只保留兼容性清单同步 - 撤回 list_image.py 与 tests/test_wife_list_image.py - daily.py / constants.py / shared.py 回到 main 的合并转发逻辑, 不保留两套阈值 - 保留 tests/compatibility_manifest.json 的同步: DailyWifeHelpColumn 默认值 4 -> 3 - 转图片后续改用其他方式实现 --------- Co-authored-by: Mimo <278909251+MimoKit@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
变更说明
验证方式
python -m pytest tests/ -qruff check .兼容性与风险
检查清单