-
Notifications
You must be signed in to change notification settings - Fork 0
cn plugin ex
注意:初期的api可能随时更改,我会听取所有的合理的意见来保证我的软件功能完善
首先插件加载器会检查你是否定义了Plugin_Main类,这个是插件接入这个系统的入口,使用from depends import plugin_main
来导入它,并且使用class Plugin_Main(plugin_main.Plugin_Main):
定义入口,用self.plugin_name: str
定義插件名稱
接下来呢,你需要初始化你的插件,请使用self.plugin_init
来初始化,它的返回值将会作为判断插件类型的依据,具体来讲,返回"message"
的话插件系统就会认为你的插件能够作为消息的提供器,那就称作为消息插件
好了,如果返回analyzer
,这个插件将会作为分析或者过滤上游消息的插件,叫它分析器
好了
好的,这里反复提到的消息,其实是一个对象,具体看消息对象
另外,插件被成功本系统注册后,将会运行async def plugin_main(self):
,可以看作是你的程序的主函数,你应确保实现了它并且不会发送意外退出,因为一旦它退出运行,这个插件将会被视为运行结束而被注销
消息插件需要实现dm_iter
方法(def dm_iter(self, params,connect_id):
)
,params
参数将会传入前端参数字典,connect_id
是连接id,返回一个可以异步迭代的对象,所有消息将会从这个对象中迭代。
对于分析器来言,所有的消息通过async def message_filter(self, message):
来转换,通过async def message_anaylazer(self,message):
来获取消息进行分析,注意,这个方法只能获取过滤后的消息。其中的message参数都是消息对象
允许你通过这个向前端提供自定义界面或者资源。
首先你需要将self.sprit_cgi_support
设置为True,然后设置字典self.sprit_cgi_lists: {}
,用它以鍵(鍵名)值(aiohttp的應用的函數)對的形式保存,然后访问/cgi/{你定義的插件名稱}/{鍵名}
,就能运行它了
这个函数唯一一个参数(self除外)——request其实就是一个aiohttp.web.Request
对象,对于返回值来说你需要返回一个web.Response
或者合理的aiohttp的处理函数的应有的返回其实就可以的
首先把self.plugin_js_sprit_support: bool
设置位True
然后self.plugin_js_sprit: str
就会自动被当作前端js插件加载
使用read_config(self)
從磁碟讀取配置并且寫入self.config
(字典),用update_config(self)
將修改後的self.config
寫入計算機磁碟,self.config
是暫存配置的一個變量,如果不通過上面的方法讀寫將會一直保持為一個空字典。