MiraiGo-Bot
增强MiraiGo-Template,开箱可用,降低使用成本,降低开发成本
计划
1.0.完成基础能力
已完成
2.0.拓展bot平台
- 剥离bot依赖,将bot内核作为接口注册引入
- 制定标准接口
- 使用
MiraiGo-Template
作为默认实现 - 尝试增加电报
功能
- 实现MiraiGo-Template
- 提供
plugins
接口-
plugin
基类-
PluginInfo()
插件基础信息 -
PluginInit()
插件初始化
-
-
OnMessagePlugins
消息处理插件- 接口设计
-
SortNum()
触发的顺序 -
IsFireEvent(msg *MessageRequest) bool
是否触发 -
OnMessageEvent(msg *MessageRequest) (*MessageResponse, error)
方法 -
IsFireNextEvent(msg *MessageRequest) bool
是否继续触发后续的插件
-
- 注册功能
- 接口设计
-
SchedulerPlugins
定时器插件- 接口设计
-
Cron()
返回cron表达式 -
Run(bot *bot.Bot) error
执行回调
-
- 注册功能
- 接口设计
-
GoroutinePlugins
协程插件-
Run(bot *bot.Bot)error
协程启动的回调方法 - 注册功能
-
-
- 提供工具类
- 在
MiraiGo-Template
插入中间层,调用实现的插件- 消息监听插件支持
- 中间层将按照插件的顺序,依次触发插件的
OnMessageEvent
方法 - 中间层的可配置
- 中间层将按照插件的顺序,依次触发插件的
- 定时任务插件支持
- 启动和运行定时任务
- 消息监听插件支持
- 健康检查 运行目录下,文件
/data/health
是否存在
部分功能使用说明
命令行解析
使用https://github.com/jessevdk/go-flags实现
查看示例:command_test.go
- 首先定义一个
struct
- 补充
short
,long
,default
,description
等关键字信息type opts struct { Name string `short:"n" long:"name" description:"姓名"` }
- 调用
func Test_Parse(t *testing.T) { var o = opts{} args, _ := Parse(&o, []string{"doSomething", "-n", "test"}) print(len(args)) print(o.Name) }
运行
编写启动类,引入需要加载的插件,调用启动方法
package main
import (
// 引入插件
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/calendar"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/haimage"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/hitokoto"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/jrrp"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/lpl"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/mc"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/pixiv"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/random"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/thecat"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/thedog"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/tips"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/caihongpi"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/dujitang"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/weather"
_ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/sovietjokes"
//启动入口
"github.com/dezhiShen/MiraiGo-Bot/pkg/server"
)
func main() {
//启动
server.Start()
}
插件仓库
https://github.com/dezhiShen/MiraiGo-Bot-Plugins
二次开发
-
引入本项目,实现一个或者多个
plugin
-
在
init()
方法中调用注册方法plugins.RegisterXXXPlugin(YourPlugin{})
,将当前插件注册到系统中 -
启动
package main import ( _ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/hitokoto" _ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/random" _ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/tips" _ "github.com/dezhiShen/MiraiGo-Bot-Plugins/pkg/plugins/weather" "github.com/dezhiShen/MiraiGo-Bot/pkg/server" ) func main() { server.Start() }