Closed Nigh closed 3 months ago
不只是图片,应该除了文本,其他标签都没有正确处理。
kook卡片消息的弊端,文件、图片、视频、音频应该能通过增加消息模块来处理,at消息根本无法正常处理
不过还有一点很致命的就是,kook卡片消息如果要发送文件、图片、视频、音频之类的话,需要提供文件的url,但问题是从onebot传下来的content中提供的并不是该文件的url
哦我好像突然想到一个很好的方法解决这个问题 可以先进行判断,如果content含有图片则直接用普通方法发送信息,kook好像会自动将带有图片的信息变为卡片信息
那个是适配器处理的。实际自己处理就是统一使用kcard封装。kcard封装并不麻烦,按顺序把不同类型的元素封装到不同的kcard模块就行了。
如果能有更简单的分隔方式,也不一定非得用kcard,这个问题也不仅仅是kook,凡是会自动合并同一个人连续发言的IM,在做转发的时候,都需要对不同说话人的消息做一下分割的。平台太多,不想花太多时间维护的话,还是找个更简单的方式会比较好。
我自己的实现是对每个平台实现独立的装饰器,koishi的jsx消息转发到对应平台时,如果存在对应的装饰器,就会先过一遍装饰器再发送。
我通过在消息末尾增加一个1个透明像素来强制启动了适配器的混合内容发送功能。
在最新版本中用正则表达式过滤了图片
按顺序把不同类型的元素封装到不同的kcard模块
本来确实是通过这种方式修改的,但很明显qq的图床并不能作为src放入到图片模块中,我目前考虑的解决办法是通过server让koishi暴露一个url,然后将图片缓存到某个文件夹下(就是将koishi变成一个图床)
其实在NTQQ之前是可以的。
现在比较好的也通用的处理方式是下载资源再分发,不需要自己做图床,用koishi做图床会带来很多额外的问题需要解决。
多媒体的发送就应该用适配器的实现。如果适配器的实现需要修改的话,原则上应该是重新实现一个适配器。
而且显然官方kook适配器的实现是没有问题的。
插件版本:
3.0.0-beta.0
如图所示