| 17 | ) |
| 18 | |
| 19 | func init() { // 插件主体 |
| 20 | engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{ |
| 21 | DisableOnDefault: false, |
| 22 | Brief: "二次元图片标签识别", |
| 23 | Help: "- 鉴赏图片[图片]", |
| 24 | PrivateDataFolder: "danbooru", |
| 25 | }) |
| 26 | |
| 27 | cachefolder := engine.DataFolder() |
| 28 | |
| 29 | // 上传一张图进行评价 |
| 30 | engine.OnKeywordGroup([]string{"鉴赏图片"}, zero.OnlyGroup, zero.MustProvidePicture).SetBlock(true). |
| 31 | Handle(func(ctx *zero.Ctx) { |
| 32 | ctx.SendChain(message.Text("少女祈祷中...")) |
| 33 | for _, url := range ctx.State["image_url"].([]string) { |
| 34 | t, st, err := tagurl("", url) |
| 35 | if err != nil { |
| 36 | ctx.SendChain(message.Text("ERROR: ", err)) |
| 37 | return |
| 38 | } |
| 39 | digest := md5.Sum(helper.StringToBytes(url)) |
| 40 | f := cachefolder + hex.EncodeToString(digest[:]) |
| 41 | if file.IsNotExist(f) { |
| 42 | _ = fio.SavePNG(f, t) |
| 43 | } |
| 44 | m := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Image("file:///"+file.BOTPATH+"/"+f))} |
| 45 | m = append(m, ctxext.FakeSenderForwardNode(ctx, message.Text("tags: ", strings.Join(st.tseq, ",")))) |
| 46 | if id := ctx.Send(m).ID(); id == 0 { |
| 47 | ctx.SendChain(message.Text("ERROR: 可能被风控或下载图片用时过长,请耐心等待")) |
| 48 | } |
| 49 | } |
| 50 | }) |
| 51 | } |