|
| 1 | +// Package heisi 黑丝 |
| 2 | +package heisi |
| 3 | + |
| 4 | +import ( |
| 5 | + "math/rand" |
| 6 | + "strconv" |
| 7 | + "unsafe" |
| 8 | + |
| 9 | + fbctxext "github.com/FloatTech/floatbox/ctxext" |
| 10 | + ctrl "github.com/FloatTech/zbpctrl" |
| 11 | + "github.com/FloatTech/zbputils/control" |
| 12 | + "github.com/FloatTech/zbputils/ctxext" |
| 13 | + zero "github.com/wdvxdr1123/ZeroBot" |
| 14 | + "github.com/wdvxdr1123/ZeroBot/message" |
| 15 | +) |
| 16 | + |
| 17 | +var ( |
| 18 | + heisiPic []item |
| 19 | + baisiPic []item |
| 20 | + jkPic []item |
| 21 | + jurPic []item |
| 22 | + zukPic []item |
| 23 | + mcnPic []item |
| 24 | + fileList = [...]string{"heisi.bin", "baisi.bin", "jk.bin", "jur.bin", "zuk.bin", "mcn.bin"} |
| 25 | +) |
| 26 | + |
| 27 | +func init() { // 插件主体 |
| 28 | + engine := control.Register("heisi", &ctrl.Options[*zero.Ctx]{ |
| 29 | + DisableOnDefault: false, |
| 30 | + Help: "黑丝\n" + |
| 31 | + "- 来点黑丝\n- 来点白丝\n- 来点jk\n- 来点巨乳\n- 来点足控\n- 来点网红", |
| 32 | + PublicDataFolder: "Heisi", |
| 33 | + }) |
| 34 | + |
| 35 | + engine.OnFullMatchGroup([]string{"来点黑丝", "来点白丝", "来点jk", "来点巨乳", "来点足控", "来点网红"}, zero.OnlyGroup, fbctxext.DoOnceOnSuccess(func(ctx *zero.Ctx) bool { |
| 36 | + for i, filePath := range fileList { |
| 37 | + data, err := engine.GetLazyData(filePath, true) |
| 38 | + if err != nil { |
| 39 | + ctx.SendChain(message.Text("ERROR: ", err)) |
| 40 | + return false |
| 41 | + } |
| 42 | + if len(data)%10 != 0 { |
| 43 | + ctx.SendChain(message.Text("ERROR: invalid data " + strconv.Itoa(i))) |
| 44 | + return false |
| 45 | + } |
| 46 | + s := (*slice)(unsafe.Pointer(&data)) |
| 47 | + s.len /= 10 |
| 48 | + s.cap /= 10 |
| 49 | + switch i { |
| 50 | + case 0: |
| 51 | + heisiPic = *(*[]item)(unsafe.Pointer(s)) |
| 52 | + case 1: |
| 53 | + baisiPic = *(*[]item)(unsafe.Pointer(s)) |
| 54 | + case 2: |
| 55 | + jkPic = *(*[]item)(unsafe.Pointer(s)) |
| 56 | + case 3: |
| 57 | + jurPic = *(*[]item)(unsafe.Pointer(s)) |
| 58 | + case 4: |
| 59 | + zukPic = *(*[]item)(unsafe.Pointer(s)) |
| 60 | + case 5: |
| 61 | + mcnPic = *(*[]item)(unsafe.Pointer(s)) |
| 62 | + } |
| 63 | + } |
| 64 | + return true |
| 65 | + })).SetBlock(true). |
| 66 | + Handle(func(ctx *zero.Ctx) { |
| 67 | + matched := ctx.State["matched"].(string) |
| 68 | + var pic item |
| 69 | + switch matched { |
| 70 | + case "来点黑丝": |
| 71 | + pic = heisiPic[rand.Intn(len(heisiPic))] |
| 72 | + case "来点白丝": |
| 73 | + pic = baisiPic[rand.Intn(len(baisiPic))] |
| 74 | + case "来点jk": |
| 75 | + pic = jkPic[rand.Intn(len(jkPic))] |
| 76 | + case "来点巨乳": |
| 77 | + pic = jurPic[rand.Intn(len(jurPic))] |
| 78 | + case "来点足控": |
| 79 | + pic = zukPic[rand.Intn(len(zukPic))] |
| 80 | + case "来点网红": |
| 81 | + pic = mcnPic[rand.Intn(len(mcnPic))] |
| 82 | + } |
| 83 | + m := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Image(pic.String()))} |
| 84 | + if id := ctx.Send(m).ID(); id == 0 { |
| 85 | + ctx.SendChain(message.Text("ERROR: 可能被风控或下载图片用时过长,请耐心等待")) |
| 86 | + } |
| 87 | + }) |
| 88 | +} |
0 commit comments