Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

重构 Module 设计 #9

Open
Sora233 opened this issue Jan 19, 2021 · 26 comments
Open

重构 Module 设计 #9

Sora233 opened this issue Jan 19, 2021 · 26 comments
Labels
v2 next version

Comments

@Sora233
Copy link
Contributor

Sora233 commented Jan 19, 2021

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

@Logiase
Copy link
Owner

Logiase commented Jan 23, 2021

可以考虑

@Logiase Logiase changed the title 考虑在Login后增加一个Callback 重构 Module 设计 Mar 9, 2021
@Logiase Logiase added the v2 next version label Mar 9, 2021
@Sora233
Copy link
Contributor Author

Sora233 commented Mar 18, 2021

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

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

@kumiko-desu
Copy link

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

@Sora233
Copy link
Contributor Author

Sora233 commented Mar 26, 2021

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

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

@kumiko-desu
Copy link

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

@PBK-B
Copy link

PBK-B commented Sep 29, 2021

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

@asjdf
Copy link
Contributor

asjdf commented Dec 19, 2021

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

卸载module的用处是什么?

@PBK-B
Copy link

PBK-B commented Dec 20, 2021

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

卸载module的用处是什么?

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

@asjdf
Copy link
Contributor

asjdf commented Dec 20, 2021

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

卸载module的用处是什么?

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

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

@PBK-B
Copy link

PBK-B commented Dec 20, 2021

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

卸载module的用处是什么?

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

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

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

@asjdf
Copy link
Contributor

asjdf commented Dec 20, 2021

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

卸载module的用处是什么?

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

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

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

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

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

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

@PBK-B
Copy link

PBK-B commented Dec 20, 2021

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

卸载module的用处是什么?

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

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

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

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

是的

@asjdf
Copy link
Contributor

asjdf commented Dec 20, 2021

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

卸载module的用处是什么?

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

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

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

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

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

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

是的

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

@PBK-B
Copy link

PBK-B commented Dec 20, 2021

@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

@asjdf
Copy link
Contributor

asjdf commented Dec 20, 2021

@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

@PBK-B
Copy link

PBK-B commented Dec 20, 2021

@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
Copy link

PBK-B commented Dec 20, 2021

@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 版本吗?如果要搞新版本的话干脆整到新版本呗?

@Logiase
Copy link
Owner

Logiase commented Dec 21, 2021 via email

@eric2788
Copy link

eric2788 commented Oct 8, 2022

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

@asjdf
Copy link
Contributor

asjdf commented Oct 8, 2022

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

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

@eric2788
Copy link

eric2788 commented Oct 8, 2022

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

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

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

@asjdf
Copy link
Contributor

asjdf commented Oct 12, 2022

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

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

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

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

@eric2788
Copy link

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

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

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

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

好的,有空我再搞搞

@CerSerika
Copy link

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

@eric2788
Copy link

eric2788 commented Dec 29, 2022

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

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

@CerSerika
Copy link

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
v2 next version
Projects
None yet
Development

No branches or pull requests

7 participants