Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: 跑团Log染色器对于表情图片正则匹配替换存在错误 #1116

Open
4 tasks done
ZiAzusa opened this issue Nov 7, 2024 · 0 comments
Open
4 tasks done
Assignees
Labels
bug Something isn't working story-painter 与染色器有关

Comments

@ZiAzusa
Copy link

ZiAzusa commented Nov 7, 2024

在提问之前...

  • 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我已查看master branch或最新测试版的更新内容,并未提及该 bug 已被修复的情况
  • 已有issue中并没有看见其他人与我反馈相同的问题

问题描述

这是一个有关跑团着色器的Bug 仓库

在使用海豹TRPG跑团着色器时,当表情图片的名称(summary参数)为 [动画表情] 或其他包含符号 ] 的内容时,开启“表情图片过滤”无法正确地匹配完整的表情图片字符串并将其替换为空字符串。

如何复现

  1. 使用NapCat作为海豹骰Bot前端
  2. 开启记录(发送.log new
  3. 发送名称(CQ码中的summary参数)为[动画表情]的表情包
  4. 结束记录并将记录上传服务器(发送.log end
  5. 访问给出的染色器链接
  6. 开启“表情图片过滤”
  7. 发生上述错误

你期望发生的

完全替换表情图片的字符串为空字符串以达成隐藏表情图片的目的

实际上发生的

如图:
错误的呈现

日志文件

此Bug无海豹核心日志,染色器日志同“实际上发生的”

截图

No response

海豹核心版本

1.4.5,但此Bug与海豹核心的版本无关,且在相应仓库的dev分支并未修复

操作系统

Ubuntu 22.04,但此Bug与操作系统类型无关

帐号类型

QQ,且QQ帐号出现问题

使用协议

通过反向WS协议连接到NapCat

附加内容

斗胆提供下个人对于问题的分析和修复方案:

这里判断问题发生的源代码位于:/story-painter/src/utils/index.tsmsgImageFormat 方法。

该文件第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。

即对这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的情况。

Regex101

望采纳并修复该问题。

@ZiAzusa ZiAzusa added the bug Something isn't working label Nov 7, 2024
@ZiAzusa ZiAzusa changed the title [Bug]: 跑团Log染色器对于跑团Log染色器的表情图片正则匹配替换存在错误 [Bug]: 跑团Log染色器对于表情图片正则匹配替换存在错误 Nov 7, 2024
@Xiangze-Li Xiangze-Li added the story-painter 与染色器有关 label Nov 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working story-painter 与染色器有关
Projects
None yet
Development

No branches or pull requests

3 participants