Harry-Jing / nonebot-plugin-bing-chat

一个可以使用新版Bing进行聊天的NoneBot插件
GNU General Public License v3.0
169 stars 12 forks source link

通过 SAA 实现更简洁的跨平台 #67

Open Well2333 opened 1 year ago

Well2333 commented 1 year ago

SAA 目前支持了OneBot v11 | OneBot v12 | QQ Guild | Kaiheila 四种平台的图片、文字、at及回复消息 如果您暂时没有时间进行适配,可以提供一下目前最新进度的分支吗,我注意到目前有多个进度不一的分支,不知应对哪个进行修改

Well2333 commented 1 year ago

额外再补充一下为什么要更换当前的跨平台方式吧

我在您当前的 feature-telegram-support 分支中发现,此插件的跨平台方式是直接基于每个平台进行重构,而这种方案效率并不高,其中有大量逻辑代码是重复的,参考官方文档中的插件跨平台支持,我认为应该尽可能通过 拆分处理步骤 和 使用依赖注入 等方式将 逻辑任务平台交互 分离,并仅针对平台交互进行多适配器处理。

这样做的好处有以下几点:

  1. 逻辑更加清晰:剥离开的代码自然清晰,甚至并不需要nb的相关开发经验就能看懂
  2. 更加方便修改错误:如果出现逻辑错误,那么当前的写法需要每个适配器全改一次,而改进后仅需修改一次
  3. 方便加入新平台的支持:加入新的平台仅需修改对应的依赖注入和平台交互,而不需要完全重构

目前,nonebot2的适配器跨平台支持主要有 a4osaa。前者由于是通过消息转发的形式实现的跨平台,因此仅需要客户端安装使用而不需要插件做什么,后者则是专为编写插件设计的跨平台方案,相对于手搓多适配器的交互来说用现成的轮子要方便一些。

Harry-Jing commented 1 year ago

有一个问题就是每个平台回复消息和撤回消息的实现有些不太一样

Harry-Jing commented 1 year ago

我确实下个月没有时间,如果您方便的话应该直接对dev0.8.0分支修改就可以了,真的十分感谢

Harry-Jing commented 1 year ago

我还有一个构想,就是像开黑啦这种可以编辑消息的平台,直接流式的去显示消息

Well2333 commented 1 year ago

我在进行适配的过程中,发现代码中使用了大量的ob11或qq平台的特性,如果要进行通用化的适配势必需要取舍,所以暂时先鸽了,等之后有时间再进一步确定方案