-
Notifications
You must be signed in to change notification settings - Fork 50
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
Comments
可以考虑 |
命令系统考虑做到bot级别,但也暴露给module? 引入module的时候可以引入别人的命令,如果只能这样也有点繁琐:假设只想加一个十分简单的命令,或者对别人module做一些补充,并不想封装成module,应该通过bot接口实现。 |
GroupMuteEvent,这个事件建议增加一个标识,区分开禁言和解除禁言两种情况 |
用GroupMuteEvent.Time可以区分,0表示解除禁言,否则表示禁言时间 |
@Sora233 原来是这样,感谢,我想当然的以为time是事件发生时间了 |
@Logiase 有没有准备弄卸载 module 的方法? |
卸载module的用处是什么? |
动态安装 module ,可能会出现一个模块注册多次的情况 |
欸 要如何实现动态安装module啊? 是指编译好之后动态注册吗? |
对,我打算一个做 web 端QQ机器人管理工具,在实现插件升级安装需要卸载之前安装的插件。 |
听起来就是说插件版本会更换这样?会有新插件把旧插件换掉? |
是的 |
可是加插件是要重新编译的不是吗 编译后重启的过程不就相当于把module下掉然后重新加载。我可能还不太理解这个更新逻辑。 |
我实现插件功能使用了 Go 的插件系统,调用编译好的插件包 so 文件中的 RegisterModule 模块达到注册模块的目的。 可能看看动态注册部分代码就明白了:https://github.com/PBK-B/mirai-class-notice/blob/main/models/plugin.go#L109 |
学习了 建议直接提pr |
@asjdf 这样动态加载 so 就不需要重新编译主系统,只需要将插件包的 so 文件动态加载就好了,但是就会出现 so 文件就算被删除插件也不会卸载。除非重启主程序。 |
哈哈哈,大佬可以先尝试实现一下,想躺着用轮子。(可能等过段时间放寒假会来折腾折腾) |
MiraiGo 最近更新了 1.18 版本,很多 method 也改了,目前想更新到最新版但因為miraigo template還在舊版本所以暫時還沒法改,只能等v2版本了 |
您现在有使用 miraigo template 的需求吗?我不介意在近期抽时间将 MiraiGo 升级至最新的版本。 |
有的,我的bot很早之前已經在miraigo template下定型了,目前也是維護和追加一些功能,最近發現有部分功能無法使用才打算升級miraigo的 |
Hi,已经更新啦,如果遇到和老插件的兼容性问题欢迎反馈 |
好的,有空我再搞搞 |
看了下golang的插件系统,真的是一坨屎,我觉得还是放弃golang插件的好,不如整个解释器搞一个类似js的语言出来,用脚本来当插件,有大牛的话可以试试。 |
lua 应该不错?只是如果用脚本,在挂接其他依赖上会很麻烦 |
所以我一开始设想是直接搞个解释器出来,但是这种工程量太大了,用lua的话挂其他依赖确实是个问题,只能说有舍有得吧,主要是golang的原生插件真的太💩了。 |
考虑这样一个需求:在登陆成功后触发一次callback对所有好友/群组做一些操作,目前的callback Init/PostInit/Serve/Start并不能很好的支持这个操作。
WARN:这是一个break change。
The text was updated successfully, but these errors were encountered: