MiraiGo-Template icon indicating copy to clipboard operation
MiraiGo-Template copied to clipboard

重构 Module 设计

Open Sora233 opened this issue 3 years ago • 26 comments

考虑这样一个需求:在登陆成功后触发一次callback对所有好友/群组做一些操作,目前的callback Init/PostInit/Serve/Start并不能很好的支持这个操作。 WARN:这是一个break change。

Sora233 avatar Jan 19 '21 02:01 Sora233

可以考虑

Logiase avatar Jan 23 '21 12:01 Logiase

命令系统考虑做到bot级别,但也暴露给module?

引入module的时候可以引入别人的命令,如果只能这样也有点繁琐:假设只想加一个十分简单的命令,或者对别人module做一些补充,并不想封装成module,应该通过bot接口实现。

Sora233 avatar Mar 18 '21 14:03 Sora233

GroupMuteEvent,这个事件建议增加一个标识,区分开禁言解除禁言两种情况

kumiko-desu avatar Mar 26 '21 07:03 kumiko-desu

GroupMuteEvent,这个事件建议增加一个标识,区分开禁言解除禁言两种情况

用GroupMuteEvent.Time可以区分,0表示解除禁言,否则表示禁言时间

Sora233 avatar Mar 26 '21 07:03 Sora233

@Sora233 原来是这样,感谢,我想当然的以为time是事件发生时间了

kumiko-desu avatar Mar 26 '21 10:03 kumiko-desu

@Logiase 有没有准备弄卸载 module 的方法?

PBK-B avatar Sep 29 '21 12:09 PBK-B

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

asjdf avatar Dec 19 '21 16:12 asjdf

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

PBK-B avatar Dec 20 '21 09:12 PBK-B

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

欸 要如何实现动态安装module啊? 是指编译好之后动态注册吗?

asjdf avatar Dec 20 '21 09:12 asjdf

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

欸 要如何实现动态安装module啊? 是指编译好之后动态注册吗?

对,我打算一个做 web 端QQ机器人管理工具,在实现插件升级安装需要卸载之前安装的插件。 插件包部分代码:https://github.com/PBK-B/mirai-plugin-checkclass 插件安装部分实现代码:https://github.com/PBK-B/mirai-class-notice/commit/e4cf0a0385a0702b86e164c81e739b37efb9d1a4

PBK-B avatar Dec 20 '21 12:12 PBK-B

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

欸 要如何实现动态安装module啊? 是指编译好之后动态注册吗?

对,我打算一个做 web 端QQ机器人管理工具,在实现插件升级安装需要卸载之前安装的插件。

插件包部分代码:https://github.com/PBK-B/mirai-plugin-checkclass

插件安装部分实现代码:https://github.com/PBK-B/mirai-class-notice/commit/e4cf0a0385a0702b86e164c81e739b37efb9d1a4

听起来就是说插件版本会更换这样?会有新插件把旧插件换掉?

asjdf avatar Dec 20 '21 12:12 asjdf

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

欸 要如何实现动态安装module啊? 是指编译好之后动态注册吗?

对,我打算一个做 web 端QQ机器人管理工具,在实现插件升级安装需要卸载之前安装的插件。 插件包部分代码:https://github.com/PBK-B/mirai-plugin-checkclass 插件安装部分实现代码:PBK-B/mirai-class-notice@e4cf0a0

听起来就是说插件版本会更换这样?会有新插件把旧插件换掉?

是的

PBK-B avatar Dec 20 '21 12:12 PBK-B

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

欸 要如何实现动态安装module啊? 是指编译好之后动态注册吗?

对,我打算一个做 web 端QQ机器人管理工具,在实现插件升级安装需要卸载之前安装的插件。

插件包部分代码:https://github.com/PBK-B/mirai-plugin-checkclass

插件安装部分实现代码:PBK-B/mirai-class-notice@e4cf0a0

听起来就是说插件版本会更换这样?会有新插件把旧插件换掉?

是的

可是加插件是要重新编译的不是吗 编译后重启的过程不就相当于把module下掉然后重新加载。我可能还不太理解这个更新逻辑。

asjdf avatar Dec 20 '21 12:12 asjdf

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

欸 要如何实现动态安装module啊? 是指编译好之后动态注册吗?

对,我打算一个做 web 端QQ机器人管理工具,在实现插件升级安装需要卸载之前安装的插件。

插件包部分代码:https://github.com/PBK-B/mirai-plugin-checkclass

插件安装部分实现代码:PBK-B/mirai-class-notice@e4cf0a0

听起来就是说插件版本会更换这样?会有新插件把旧插件换掉?

是的

可是加插件是要重新编译的不是吗 编译后重启的过程不就相当于把module下掉然后重新加载。我可能还不太理解这个更新逻辑。

我实现插件功能使用了 Go 的插件系统,调用编译好的插件包 so 文件中的 RegisterModule 模块达到注册模块的目的。 目的就是想做一个主系统,插件包分开实现通过 web 管理界面能够上传带可视化配置数据的插件包。

可能看看动态注册部分代码就明白了:https://github.com/PBK-B/mirai-class-notice/blob/main/models/plugin.go#L109

PBK-B avatar Dec 20 '21 12:12 PBK-B

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

欸 要如何实现动态安装module啊? 是指编译好之后动态注册吗?

对,我打算一个做 web 端QQ机器人管理工具,在实现插件升级安装需要卸载之前安装的插件。

插件包部分代码:https://github.com/PBK-B/mirai-plugin-checkclass

插件安装部分实现代码:PBK-B/mirai-class-notice@e4cf0a0

听起来就是说插件版本会更换这样?会有新插件把旧插件换掉?

是的

可是加插件是要重新编译的不是吗 编译后重启的过程不就相当于把module下掉然后重新加载。我可能还不太理解这个更新逻辑。

我实现插件功能使用了 Go 的插件系统,调用编译好的插件包 so 文件中的 RegisterModule 模块达到注册模块的目的。

目的就是想做一个主系统,插件包分开实现通过 web 管理界面能够上传带可视化配置数据的插件包。

可能看看动态注册部分代码就明白了:https://github.com/PBK-B/mirai-class-notice/blob/main/models/plugin.go#L109

学习了 建议直接提pr

asjdf avatar Dec 20 '21 12:12 asjdf

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

欸 要如何实现动态安装module啊? 是指编译好之后动态注册吗?

对,我打算一个做 web 端QQ机器人管理工具,在实现插件升级安装需要卸载之前安装的插件。

插件包部分代码:https://github.com/PBK-B/mirai-plugin-checkclass

插件安装部分实现代码:PBK-B/mirai-class-notice@e4cf0a0

听起来就是说插件版本会更换这样?会有新插件把旧插件换掉?

是的

可是加插件是要重新编译的不是吗 编译后重启的过程不就相当于把module下掉然后重新加载。我可能还不太理解这个更新逻辑。

我实现插件功能使用了 Go 的插件系统,调用编译好的插件包 os 文件中的 RegisterModule 模块达到注册模块的目的。 目的就是想做一个主系统,插件包分开实现通过 web 管理界面能够上传带可视化配置数据的插件包。

可能看看动态注册部分代码就明白了:https://github.com/PBK-B/mirai-class-notice/blob/main/models/plugin.go#L109

@asjdf 这样动态加载 so 就不需要重新编译主系统,只需要将插件包的 so 文件动态加载就好了,但是就会出现 so 文件就算被删除插件也不会卸载。除非重启主程序。

PBK-B avatar Dec 20 '21 12:12 PBK-B

@Logiase 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

欸 要如何实现动态安装module啊? 是指编译好之后动态注册吗?

对,我打算一个做 web 端QQ机器人管理工具,在实现插件升级安装需要卸载之前安装的插件。

插件包部分代码:https://github.com/PBK-B/mirai-plugin-checkclass

插件安装部分实现代码:PBK-B/mirai-class-notice@e4cf0a0

听起来就是说插件版本会更换这样?会有新插件把旧插件换掉?

是的

可是加插件是要重新编译的不是吗 编译后重启的过程不就相当于把module下掉然后重新加载。我可能还不太理解这个更新逻辑。

我实现插件功能使用了 Go 的插件系统,调用编译好的插件包 so 文件中的 RegisterModule 模块达到注册模块的目的。 目的就是想做一个主系统,插件包分开实现通过 web 管理界面能够上传带可视化配置数据的插件包。 可能看看动态注册部分代码就明白了:https://github.com/PBK-B/mirai-class-notice/blob/main/models/plugin.go#L109

学习了 建议直接提pr

哈哈哈,大佬可以先尝试实现一下,想躺着用轮子。(可能等过段时间放寒假会来折腾折腾) 不过不是说在开发 v2 版本吗?如果要搞新版本的话干脆整到新版本呗?

PBK-B avatar Dec 20 '21 12:12 PBK-B

get了


发件人: PBK Bin @.> 发送时间: 2021年12月20日 20:57 收件人: Logiase/MiraiGo-Template @.> 抄送: Logiase @.>; Mention @.> 主题: Re: [Logiase/MiraiGo-Template] 重构 Module 设计 (#9)

@Logiasehttps://apac01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FLogiase&data=04%7C01%7C%7C31be6069d47141c203f708d9c3b853a9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637756018713091751%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=k1%2BuXRTDOM%2FkGT%2BvjEwgimhDD6HNIgjlJSCCJjBTeJ8%3D&reserved=0 有没有准备弄卸载 module 的方法?

卸载module的用处是什么?

动态安装 module ,可能会出现一个模块注册多次的情况

šG 要如何实现动态安装module啊? 是指编译好之后动态注册吗?

对,我打算一个做 web 端QQ机器人管理工具,在实现插件升级安装需要卸载之前安装的插件。

插件包部分代码:https://github.com/PBK-B/mirai-plugin-checkclasshttps://apac01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FPBK-B%2Fmirai-plugin-checkclass&data=04%7C01%7C%7C31be6069d47141c203f708d9c3b853a9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637756018713091751%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=DletuUoXYf2Ir2zSSxt1CaYxg%2Bb6zga09Us30iE23bE%3D&reserved=0

@.***https://apac01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FPBK-B%2Fmirai-class-notice%2Fcommit%2Fe4cf0a0385a0702b86e164c81e739b37efb9d1a4&data=04%7C01%7C%7C31be6069d47141c203f708d9c3b853a9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637756018713101706%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=zLcsN5plJiAZTBUDQ3UhFMkAKT%2BmYQevbfXcYT6y5%2FA%3D&reserved=0

听起来就是说插件版本会更换这样?会有新插件把旧插件换掉?

是的

可是加插件是要重新编译的不是吗 编译后重启的过程不就相当于把module下掉然后重新加载。我可能还不太理解这个更新逻辑。

我实现插件功能使用了 Go 的插件系统,调用编译好的插件包 so 文件中的 RegisterModule 模块达到注册模块的目的。 目的就是想做一个主系统,插件包分开实现通过 web 管理界面能够上传带可视化配置数据的插件包。 可能看看动态注册部分代码就明白了:https://github.com/PBK-B/mirai-class-notice/blob/main/models/plugin.go#L109https://apac01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FPBK-B%2Fmirai-class-notice%2Fblob%2Fmain%2Fmodels%2Fplugin.go%23L109&data=04%7C01%7C%7C31be6069d47141c203f708d9c3b853a9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637756018713101706%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=uLWX8aqN2weu7imRYUPhDmEpmdpFt6kXxsXQQRJCg%2Bw%3D&reserved=0

学习了 建议直接提pr

哈哈哈,大佬可以先尝试实现一下,想躺着用轮子。(可能等过段时间放寒假会来折腾折腾) 不过不是说在开发 v2 版本吗?如果要搞新版本的话干脆整到新版本呗?

― Reply to this email directly, view it on GitHubhttps://apac01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FLogiase%2FMiraiGo-Template%2Fissues%2F9%23issuecomment-997900653&data=04%7C01%7C%7C31be6069d47141c203f708d9c3b853a9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637756018713101706%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=8DuDwCHQ6FEUaGWYPsKh%2BDziGH%2F5n4orQ6Tpt9M68pU%3D&reserved=0, or unsubscribehttps://apac01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAI66VQXETIRNNYRCWWPECZTUR4R4ZANCNFSM4WIC22JQ&data=04%7C01%7C%7C31be6069d47141c203f708d9c3b853a9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637756018713111664%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=CzdEOF7EHdavGvZN4n8g9QAvoWiuAZrd3CnkFv706T0%3D&reserved=0. Triage notifications on the go with GitHub Mobile for iOShttps://apac01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04%7C01%7C%7C31be6069d47141c203f708d9c3b853a9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637756018713111664%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=2QUwxyD3HRC1EXbr6X2dTLfxLt8ztBKseR0aU%2FIuH2o%3D&reserved=0 or Androidhttps://apac01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04%7C01%7C%7C31be6069d47141c203f708d9c3b853a9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637756018713121617%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=jnEsQJyNgt4F0FjxZtlOFUMBOP21pG83UjvkZVkXzb4%3D&reserved=0. You are receiving this because you were mentioned.Message ID: @.***>

Logiase avatar Dec 21 '21 13:12 Logiase

MiraiGo 最近更新了 1.18 版本,很多 method 也改了,目前想更新到最新版但因為miraigo template還在舊版本所以暫時還沒法改,只能等v2版本了 現在MiraiGo的版本私訊沒辦法發送

eric2788 avatar Oct 08 '22 15:10 eric2788

MiraiGo 最近更新了 1.18 版本,很多 method 也改了,目前想更新到最新版但因為miraigo template還在舊版本所以暫時還沒法改,只能等v2版本了 現在MiraiGo的版本私訊沒辦法發送

您现在有使用 miraigo template 的需求吗?我不介意在近期抽时间将 MiraiGo 升级至最新的版本。

asjdf avatar Oct 08 '22 15:10 asjdf

MiraiGo 最近更新了 1.18 版本,很多 method 也改了,目前想更新到最新版但因為miraigo template還在舊版本所以暫時還沒法改,只能等v2版本了 現在MiraiGo的版本私訊沒辦法發送

您现在有使用 miraigo template 的需求吗?我不介意在近期抽时间将 MiraiGo 升级至最新的版本。

有的,我的bot很早之前已經在miraigo template下定型了,目前也是維護和追加一些功能,最近發現有部分功能無法使用才打算升級miraigo的

eric2788 avatar Oct 08 '22 16:10 eric2788

MiraiGo 最近更新了 1.18 版本,很多 method 也改了,目前想更新到最新版但因為miraigo template還在舊版本所以暫時還沒法改,只能等v2版本了 現在MiraiGo的版本私訊沒辦法發送

您现在有使用 miraigo template 的需求吗?我不介意在近期抽时间将 MiraiGo 升级至最新的版本。

有的,我的bot很早之前已經在miraigo template下定型了,目前也是維護和追加一些功能,最近發現有部分功能無法使用才打算升級miraigo的

Hi,已经更新啦,如果遇到和老插件的兼容性问题欢迎反馈

asjdf avatar Oct 12 '22 06:10 asjdf

MiraiGo 最近更新了 1.18 版本,很多 method 也改了,目前想更新到最新版但因為miraigo template還在舊版本所以暫時還沒法改,只能等v2版本了 現在MiraiGo的版本私訊沒辦法發送

您现在有使用 miraigo template 的需求吗?我不介意在近期抽时间将 MiraiGo 升级至最新的版本。

有的,我的bot很早之前已經在miraigo template下定型了,目前也是維護和追加一些功能,最近發現有部分功能無法使用才打算升級miraigo的

Hi,已经更新啦,如果遇到和老插件的兼容性问题欢迎反馈

好的,有空我再搞搞

eric2788 avatar Oct 14 '22 00:10 eric2788

看了下golang的插件系统,真的是一坨屎,我觉得还是放弃golang插件的好,不如整个解释器搞一个类似js的语言出来,用脚本来当插件,有大牛的话可以试试。

CerSerika avatar Dec 28 '22 15:12 CerSerika

看了下golang的插件系统,真的是一坨屎,我觉得还是放弃golang插件的好,不如整个解释器搞一个类似js的语言出来,用脚本来当插件,有大牛的话可以试试。

lua 应该不错?只是如果用脚本,在挂接其他依赖上会很麻烦

eric2788 avatar Dec 29 '22 00:12 eric2788

看了下golang的插件系统,真的是一坨屎,我觉得还是放弃golang插件的好,不如整个解释器搞一个类似js的语言出来,用脚本来当插件,有大牛的话可以试试。

lua 应该不错?只是如果用脚本,在挂接其他依赖上会很麻烦

所以我一开始设想是直接搞个解释器出来,但是这种工程量太大了,用lua的话挂其他依赖确实是个问题,只能说有舍有得吧,主要是golang的原生插件真的太💩了。

CerSerika avatar Dec 29 '22 04:12 CerSerika