Open tzwm opened 10 months ago
主要问题就是在 Discord 的 editMessage 不会将 Satori 的 Fragment 转换为对应平台的格式 然后直接发送出去了, 然后平台 (Discord) 不认 Satori Elements, 就直接显示了
session.send
调用 bot.sendMessage
L150
https://github.com/koishijs/koishi/blob/eb42c4df96bf2001ed23bea208a26b4015591e3a/packages/core/src/session.ts#L147-L154
然后看这边, 调用了 bot.createMessage
L167
https://github.com/satorijs/satori/blob/5c0b8d6d715df11908ec3be8efbfe9bf31868bc3/packages/core/src/bot.ts#L167
然后用了 MessageEncoder 进行转换 - 将 Satori Elements 转换成对应平台的东西, L163 https://github.com/satorijs/satori/blob/5c0b8d6d715df11908ec3be8efbfe9bf31868bc3/packages/core/src/message.ts#L26
然后 MessageEncoder
DiscordMessageEncoder 的 .flush()
再调用 Discord 内部的 API 发送出去
https://github.com/satorijs/satori/blob/5c0b8d6d715df11908ec3be8efbfe9bf31868bc3/packages/core/src/bot.ts#L163
拿到 session
, 直接调用 bot.editMessage
https://github.com/satorijs/satori/blob/5c0b8d6d715df11908ec3be8efbfe9bf31868bc3/adapters/discord/src/bot.ts#L71-L81
这边用 h.normalize
确保了是 Satori Elements... L72
然后直接 toString 了??? L63
这边可以看到没有做任何对应平台的转换
https://github.com/satorijs/satori/blob/5c0b8d6d715df11908ec3be8efbfe9bf31868bc3/adapters/discord/src/bot.ts#L72-L73
然后调用了内部的 editMessage 方法, 向 Discord 的 Bot API 发送请求来 edit
https://github.com/satorijs/satori/blob/5c0b8d6d715df11908ec3be8efbfe9bf31868bc3/adapters/discord/src/bot.ts#L78
然而 Discord 肯定是不认 Satori Elements 的, 然后就直接显示出来了
这是 bug,会修。
Describe the bug
同样一个 message elements,直接
session.send
发送能正常渲染,但是editMessage
无法正确渲染。Steps to reproduce
见上述代码。
Expected behavior
预期和
session.send
有一致的渲染表现。Screenshots
No response
Versions
Additional context
No response