AmiyaBot / Amiya-Bot

《明日方舟》BOT
https://www.amiyabot.com
MIT License
469 stars 62 forks source link

feat: 动态Scheme的能力+将插件加载提前 #248

Closed hsyhhssyy closed 11 months ago

hsyhhssyy commented 11 months ago

两个改动,第一个是动态Scheme能力,这个我在下个comment把上一个PR的comment拷过来。

第二个改动,我把插件加载提前了,让他在bot启动前单独跑,跑完了才可以跑bot启动和app serve,目的是解决其他插件借用fastapi的app对象,会因为延迟加载而无效的问题。

hsyhhssyy commented 11 months ago

这是前一个PR的说明:#247

我修改了PluginInstace让他的Schema支持动态获取。 具体来说,就是让Schema支持传入一个函数(很好这很Python) 每次读取Schema时,都会现场执行这个函数,要他提供一个字符串/路径/Dict。

这个功能的目的是实现下面这个效果。 image 这个下拉框是根据WebApi的查询结果动态构建的。每次用户刷新Console,获取到的列表会不一样,取决于当前Api的返回值缓存。

需要在文档里提醒用户,这个函数需要快速返回,否则会导致Console卡死或超时,建议像我一样,用另一个线程获取数据并缓存,Schema函数仅展示缓存数据。

hsyhhssyy commented 11 months ago

此外我还发现core.customPluginInstance这个路径没了,导致我一堆插件都出了问题,包括那个配置项Demo插件。

因此我修改了我的插件,现在改成从core引入。

但是第三方插件可能会大量的出现问题,比如: image 这个插件,就用的是from core.customPluginInstance import AmiyaBotPluginInstance

这个改动可能又要搞坏一大堆插件了。

vivien8261 commented 11 months ago

此外我还发现core.customPluginInstance这个路径没了,导致我一堆插件都出了问题,包括那个配置项Demo插件。

因此我修改了我的插件,现在改成从core引入。

但是第三方插件可能会大量的出现问题,比如: image 这个插件,就用的是from core.customPluginInstance import AmiyaBotPluginInstance

这个改动可能又要搞坏一大堆插件了。

那在core弄一个兼容的module……