Open ZiAzusa opened 2 weeks ago
这是一个有关跑团着色器的Bug 仓库
在使用海豹TRPG跑团着色器时,当表情图片的名称(summary参数)为 [动画表情] 或其他包含符号 ] 的内容时,开启“表情图片过滤”无法正确地匹配完整的表情图片字符串并将其替换为空字符串。
[动画表情]
]
.log new
.log end
完全替换表情图片的字符串为空字符串以达成隐藏表情图片的目的
如图:
此Bug无海豹核心日志,染色器日志同“实际上发生的”
No response
1.4.5,但此Bug与海豹核心的版本无关,且在相应仓库的dev分支并未修复
Ubuntu 22.04,但此Bug与操作系统类型无关
QQ,且QQ帐号出现问题
通过反向WS协议连接到NapCat
斗胆提供下个人对于问题的分析和修复方案:
这里判断问题发生的源代码位于:/story-painter/src/utils/index.ts 的 msgImageFormat 方法。
msgImageFormat
该文件第36行、第54行、第62行:
... 36: msg = msg.replaceAll(/\[CQ:(image|face),[^\]]+\]/g, '') ... 54: msg = msg.replaceAll(/\[mirai:(image|marketface):[^\]]+\]/g, '') ... 62: msg = msg.replaceAll(/\[(image|图):[^\]]+\]/g, '') ...
在这些代码的正则表达式中,会在遇到 ] 字符时停止匹配,显然如果在summary或其他参数中出现 ] 时就会提前结束匹配导致替换不完全。
那么个人认为将遇到 ] 字符时停止匹配更改为遇到换行符( \n 或 \r )时停止匹配即可修复这个Bug。
\n
\r
即对这3行进行如下修改:
... 36: msg = msg.replaceAll(/\[CQ:(image|face),[^(\n|\r)]+\]/g, '') ... 54: msg = msg.replaceAll(/\[mirai:(image|marketface):[^(\n|\r)]+\]/g, '') ... 62: msg = msg.replaceAll(/\[(image|图):[^(\n|\r)]+\]/g, '') ...
经过Regex101的测试,其可以完美处理发生Bug的情况。
望采纳并修复该问题。
在提问之前...
问题描述
这是一个有关跑团着色器的Bug 仓库
在使用海豹TRPG跑团着色器时,当表情图片的名称(summary参数)为
[动画表情]
或其他包含符号]
的内容时,开启“表情图片过滤”无法正确地匹配完整的表情图片字符串并将其替换为空字符串。如何复现
.log new
)[动画表情]
的表情包.log end
)你期望发生的
完全替换表情图片的字符串为空字符串以达成隐藏表情图片的目的
实际上发生的
如图:
日志文件
此Bug无海豹核心日志,染色器日志同“实际上发生的”
截图
No response
海豹核心版本
1.4.5,但此Bug与海豹核心的版本无关,且在相应仓库的dev分支并未修复
操作系统
Ubuntu 22.04,但此Bug与操作系统类型无关
帐号类型
QQ,且QQ帐号出现问题
使用协议
通过反向WS协议连接到NapCat
附加内容
斗胆提供下个人对于问题的分析和修复方案:
这里判断问题发生的源代码位于:/story-painter/src/utils/index.ts 的
msgImageFormat
方法。该文件第36行、第54行、第62行:
在这些代码的正则表达式中,会在遇到
]
字符时停止匹配,显然如果在summary或其他参数中出现]
时就会提前结束匹配导致替换不完全。那么个人认为将遇到
]
字符时停止匹配更改为遇到换行符(\n
或\r
)时停止匹配即可修复这个Bug。即对这3行进行如下修改:
经过Regex101的测试,其可以完美处理发生Bug的情况。
望采纳并修复该问题。