module
Version:
v0.0.0-...-00f8890
Opens a new window with list of versions in this module.
Published: Aug 9, 2021
License: AGPL-3.0
Opens a new window with license information.
README
¶
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()
}
依赖项目
Directories
¶
|
|
pkg
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Click to show internal directories.
Click to hide internal directories.