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

关于Image类的一些讨论 #44

Open
EvolvedGhost opened this issue May 9, 2024 · 7 comments
Open

关于Image类的一些讨论 #44

EvolvedGhost opened this issue May 9, 2024 · 7 comments
Labels
question 对错误或其它问题进行提问

Comments

@EvolvedGhost
Copy link
Contributor

EvolvedGhost commented May 9, 2024

问题描述

override suspend fun queryImageUrl(bot: Bot, image: Image): String {
// Onebot 没有 imageId 概念,Overflow 使用 imageId 字段来存储 Onebot 中的 file 链接
if (image !is WrappedImage) throw IllegalStateException("Image type ${image::class.qualifiedName} do not support")
return image.url
}

正如代码注释所说Onebot 没有 imageId 概念,Overflow 使用 imageId 字段来存储 Onebot 中的 file 链接

但是在df78661中仍然尝试进行了imageId的实现

这导致了一个问题,正如上文所言Onebot 没有 imageId 概念,也许在Shamrock中这类走手机协议的可以仍然保持ImageId的概念,但是在以Lagrange这类走PCNT协议的就会出现问题,因为PCNT的图片链接是这样的:

https://multimedia.nt.qq.com.cn/download?appid=1407&fileid=Cgk3Mjc1MTEwNzASFDTLcVgFwCI96UKOYtmoY93wveXiGIY9IP8KKPXv0v-x_4UDUIC9owE&rkey=CAMSKLgthq-6lGU_NMvprHzoH2sjPb9AMHBJwViIt22qAznF1XoB9KY9IMk&spec=0

之前版本插件可以直接用imageId获取图片的方式来维持运行,或者直接从消息字符串中抽取链接,现在消息格式变了、imageIdLagrange中获取变成了!图片链接而不是以前的图片链接,导致了部分混乱;

同时部分功能也是需要直接抽取图片外链,而以Shamrock中这类走手机协议的获取到的imageId也不能像以前一样简单的通过https://gchat.qpic.cn/gchatpic_new/0/0-0-${imageId}/0拼接获取外链。所以或许可以回滚这个commit,因为Onebot注定不能提供imageId的概念,强行解析imageId对于不同Onebot实现会产生不一致的效果导致更复杂的插件判断,或者额外提供一个接口直接获取图片链接保持其一致性

复现

Lagrange.Onebot就会出现

Overflow 版本

3bd5c2e

其他组件版本

No response

系统日志

No response

网络日志

No response

补充信息

对了,最新版本下我发送图片在Onebot传输中也变成了{"type":"image","data":{"file":"!base64:///9j/4AAQXXXXXXXX"}},也是多了一个感叹号,我认为可能也是这个Commit导致的

@EvolvedGhost EvolvedGhost added the question 对错误或其它问题进行提问 label May 9, 2024
@MrXiaoM
Copy link
Owner

MrXiaoM commented May 9, 2024

通过 Image.queryUrl 依然是能正常取到图片链接的。
通过图片ID获取图片链接从来不是正确方式

@EvolvedGhost
Copy link
Contributor Author

通过 Image.queryUrl 依然是能正常取到图片链接的。 通过图片ID获取图片链接从来不是正确方式

但是现在通过Lagrange的图片发送也会变成!base64:///9j/4AAQXXXXXXXX,很奇怪

@MrXiaoM
Copy link
Owner

MrXiaoM commented May 9, 2024

我抽空排一下问题

@Natane0808
Copy link

通过 Image.queryUrl 依然是能正常取到图片链接的。 通过图片ID获取图片链接从来不是正确方式

但是现在通过Lagrange的图片发送也会变成!base64:///9j/4AAQXXXXXXXX,很奇怪

我也遇到了这个问题

@EvolvedGhost
Copy link
Contributor Author

通过 Image.queryUrl 依然是能正常取到图片链接的。 通过图片ID获取图片链接从来不是正确方式

但是现在通过Lagrange的图片发送也会变成!base64:///9j/4AAQXXXXXXXX,很奇怪

我也遇到了这个问题

先回退到49d2f29吧,maven,我这边试过这个版本没问题

@Natane0808
Copy link

通过 Image.queryUrl 依然是能正常取到图片链接的。 通过图片ID获取图片链接从来不是正确方式

但是现在通过Lagrange的图片发送也会变成!base64:///9j/4AAQXXXXXXXX,很奇怪

我也遇到了这个问题

先回退到49d2f29吧,maven,我这边试过这个版本没问题

@worksoup
Copy link

我在LLOneBot上使用,getMd5也受影响,因为md5似乎是通过imageId来计算的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question 对错误或其它问题进行提问
Projects
None yet
Development

No branches or pull requests

4 participants