关于 `Image` 中 `imageId` 以及本地文件路径的实现
Closed this issue · 4 comments
我稍微了解了一下源码以及LLOneBot那边给到的一些 api 返回数据,我想应该是可以不用拿 url 做 imageId
的。
image 相关 json
"message": [
{
"data": {
"file": "E9FEA919E34659506AF549E04A6BCCFB.jpg",
"subType": 1,
"url": "https://gchat.qpic.cn/gchatpic_new/xxxxxxxx/735228141-2874266716-E9FEA919E34659506AF549E04A6BCCFB/0?term=255&is_origin=0",
"file_size": "9773"
},
"type": "image"
}
]
这里可以看到 file
是可以作为 imageId
,另外一个可以作为 imageId
的原因是 LLOneBot 的扩展 api /get_file
是可以通过该值拿到。这里主要还是因为想要通过扩展的 api 拿到本地文件路径,以缓解客户端自行下载管理图片缓存的复杂度。
而原先 url 可以储存在内部实现类的字段里,query的时候做一个类型转换或者判断去拿 url 字段。
另外想要拿到本地文件路径我想有以下几种方式:
- 调用
RemoteBot
提供的 apiexecuteAction
做查询 - 有一个类似
OverflowAPI
一样的类提供get_file
api ,或者是有一个暴露 OneBot Client 实现的接口。因为我理解第一种方式是一个非Overflow维护到的额外 api,本身 Client 提供了方法的还是希望能够拿到。 - 整合进 Image 实现类,提供一个类似 RemoteXXX 的接口类,暴露
getFile
获取本地路径
其中1是有的,但感觉不好用不够集成。
个人来说,2中的暴露 OneBot Client 实现接口和3都希望有。
如果大体没什么问题我也可以提一个pr看看,毕竟我自己肯定会去改一份自用的。
加了点 SPI,应该够用来扩展的了
这个 /get_file
API 是获取“群文件或私聊文件”而不是图片文件吧,应该不能用于获取图片链接。
这个 API 我之前已经加到 Onebot 模块的 Bot.kt 了,在最后面的 extGetFile
,并用于群文件获取下载链接
/get_image
倒是可以
这个
/get_file
API 是获取“群文件或私聊文件”而不是图片文件吧,应该不能用于获取图片链接。 这个 API 我之前已经加到 Onebot 模块的 Bot.kt 了,在最后面的extGetFile
,并用于群文件获取下载链接
/get_image
倒是可以
是,但是我昨天试了一下,其实获取图片是没问题的(LLOneBot来说),/get_image 要是能够给到本地路径其实也ok的
最近都没空看,还是先close了