diff --git a/README.md b/README.md index cfcb503b..52ac5ff8 100644 --- a/README.md +++ b/README.md @@ -728,6 +728,21 @@ print("run[CQ:image,file="+j["img"]+"]") - [x] 符号说明: C5是中央C,后面不写数字,默认接5,Cb6<1,b代表降调,#代表升调,6比5高八度,<1代表音长×2,<3代表音长×8,<-1代表音长×0.5,<-3代表音长×0.125,R是休止符 + +
+ 日韩 VITS 模型拟声 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/moegoe"` + + - [x] 让[宁宁|爱瑠|芳乃|茉子|丛雨|小春|七海]说(日语) + + - [x] 让[수아|미미르|아린|연화|유화|선배]说(韩语) + +``` +记录在"0 10 * * *"触发的指令 +摸鱼提醒 +``` +
摸鱼 diff --git a/main.go b/main.go index d557b719..247b2a7c 100644 --- a/main.go +++ b/main.go @@ -87,6 +87,7 @@ import ( _ "github.com/FloatTech/ZeroBot-Plugin/plugin/juejuezi" // 绝绝子生成器 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/lolicon" // lolicon 随机图片 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/midicreate" // 简易midi音乐制作 + _ "github.com/FloatTech/ZeroBot-Plugin/plugin/moegoe" // 日韩 VITS 模型拟声 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/moyu" // 摸鱼 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/moyu_calendar" // 摸鱼人日历 _ "github.com/FloatTech/ZeroBot-Plugin/plugin/music" // 点歌 diff --git a/plugin/moegoe/main.go b/plugin/moegoe/main.go new file mode 100644 index 00000000..9c14c81a --- /dev/null +++ b/plugin/moegoe/main.go @@ -0,0 +1,45 @@ +// Package moegoe 日韩 VITS 模型拟声 +package moegoe + +import ( + "fmt" + "net/url" + + zero "github.com/wdvxdr1123/ZeroBot" + "github.com/wdvxdr1123/ZeroBot/message" + + ctrl "github.com/FloatTech/zbpctrl" + "github.com/FloatTech/zbputils/control" + "github.com/FloatTech/zbputils/ctxext" +) + +const ( + jpapi = "https://moegoe.azurewebsites.net/api/speak?text=%s&id=%d" + krapi = "https://moegoe.azurewebsites.net/api/speakkr?text=%s&id=%d" +) + +var speakers = map[string]uint{ + "宁宁": 0, "爱瑠": 1, "芳乃": 2, "茉子": 3, "丛雨": 4, "小春": 5, "七海": 6, + "수아": 0, "미미르": 1, "아린": 2, "연화": 3, "유화": 4, "선배": 5, +} + +func init() { + en := control.Register("moegoe", &ctrl.Options[*zero.Ctx]{ + DisableOnDefault: false, + Help: "moegoe\n" + + "- 让[宁宁|爱瑠|芳乃|茉子|丛雨|小春|七海]说(日语)\n" + + "- 让[수아|미미르|아린|연화|유화|선배]说(韩语)", + }).ApplySingle(ctxext.DefaultSingle) + en.OnRegex(`^让(宁宁|爱瑠|芳乃|茉子|丛雨|小春|七海)说([A-Za-z\s\d\u3005\u3040-\u30ff\u4e00-\u9fff\uff11-\uff19\uff21-\uff3a\uff41-\uff5a\uff66-\uff9d]+)$`).Limit(ctxext.LimitByGroup).SetBlock(true). + Handle(func(ctx *zero.Ctx) { + text := ctx.State["regex_matched"].([]string)[2] + id := speakers[ctx.State["regex_matched"].([]string)[1]] + ctx.SendChain(message.Record(fmt.Sprintf(jpapi, url.QueryEscape(text), id))) + }) + en.OnRegex(`^让(수아|미미르|아린|연화|유화|선배)说([A-Za-z\s\d\u3131-\u3163\uac00-\ud7ff]+)$`).Limit(ctxext.LimitByGroup).SetBlock(true). + Handle(func(ctx *zero.Ctx) { + text := ctx.State["regex_matched"].([]string)[2] + id := speakers[ctx.State["regex_matched"].([]string)[1]] + ctx.SendChain(message.Record(fmt.Sprintf(krapi, url.QueryEscape(text), id))) + }) +}