From 0ad678f8c5194df7546348adc8c0870be6500704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=87=7E?= <158024940+xyy0411@users.noreply.github.com> Date: Sun, 27 Oct 2024 12:46:24 +0800 Subject: [PATCH 1/3] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add:新玩法出售牛牛 fix: 1.注销牛牛需要atri币防止刷初始 2.增加赎牛牛触发机率 3.修改部分已知问题 --- plugin/niuniu/niuniu/main.go | 517 ++++++++++++++++++++++++++++++++++ plugin/niuniu/niuniu/model.go | 385 +++++++++++++++++++++++++ plugin/niuniu/niuniu/utils.go | 274 ++++++++++++++++++ 3 files changed, 1176 insertions(+) create mode 100644 plugin/niuniu/niuniu/main.go create mode 100644 plugin/niuniu/niuniu/model.go create mode 100644 plugin/niuniu/niuniu/utils.go diff --git a/plugin/niuniu/niuniu/main.go b/plugin/niuniu/niuniu/main.go new file mode 100644 index 0000000000..79501a6f6d --- /dev/null +++ b/plugin/niuniu/niuniu/main.go @@ -0,0 +1,517 @@ +// Package niuniu 牛牛大作战 +package niuniu + +import ( + "fmt" + "strconv" + "strings" + "time" + + "github.com/FloatTech/AnimeAPI/wallet" + ctrl "github.com/FloatTech/zbpctrl" + "github.com/FloatTech/zbputils/control" + "github.com/FloatTech/zbputils/ctxext" + "github.com/RomiChan/syncx" + zero "github.com/wdvxdr1123/ZeroBot" + "github.com/wdvxdr1123/ZeroBot/extension/rate" + "github.com/wdvxdr1123/ZeroBot/message" +) + +type lastLength struct { + TimeLimit time.Time + Count int + Length float64 +} + +type propsCount struct { + Count int + TimeLimit time.Time +} + +var ( + en = control.AutoRegister(&ctrl.Options[*zero.Ctx]{ + DisableOnDefault: false, + Brief: "牛牛大作战", + Help: "- 打胶\n" + + "- 使用[道具名称]打胶\n" + + "- jj@xxx\n" + + "- 使用[道具名称]jj@xxx\n" + + "- 注册牛牛\n" + + "- 赎牛牛(cd:60分钟)\n" + + "- 出售牛牛\n" + + "- 牛牛商店\n" + + "- 牛牛背包\n" + + "- 注销牛牛\n" + + "- 查看我的牛牛\n" + + "- 牛子长度排行\n" + + "- 牛子深度排行\n", + PrivateDataFolder: "niuniu", + }) + dajiaoLimiter = rate.NewManager[string](time.Second*90, 1) + jjLimiter = rate.NewManager[string](time.Second*150, 1) + jjCount = syncx.Map[string, *lastLength]{} + prop = syncx.Map[string, *propsCount]{} + countDeleteNiuNiu = syncx.Map[string, *propsCount]{} // 结构一样所以用同一个结构体 +) + +func init() { + en.OnFullMatch("出售牛牛", zero.OnlyGroup, getdb).SetBlock(true).Handle(func(ctx *zero.Ctx) { + gid := ctx.Event.GroupID + uid := ctx.Event.UserID + info, err := db.findNiuNiu(gid, uid) + if err != nil { + ctx.SendChain(message.Text("ERROR:", err)) + return + } + + money, msg := niuNiuProfit(info.Length) + if money == 0 { + ctx.SendChain(message.Text(msg)) + return + } + + if err = wallet.InsertWalletOf(uid, money); err != nil { + ctx.SendChain(message.Text("ERROR:", err)) + return + } + + ctx.SendChain(message.Text(msg)) + }) + en.OnFullMatch("牛牛背包", zero.OnlyGroup, getdb).SetBlock(true).Handle(func(ctx *zero.Ctx) { + gid := ctx.Event.GroupID + uid := ctx.Event.UserID + niu, err := db.findNiuNiu(gid, uid) + if err != nil { + ctx.SendChain(message.Text("你还没有牛牛呢快去注册一个吧!")) + return + } + ctx.SendChain(message.Text("当前牛牛背包如下", + "\n伟哥:", niu.WeiGe, + "\n媚药:", niu.Philter, + "\n击剑神器:", niu.Artifact, + "\n击剑神稽:", niu.ShenJi)) + }) + en.OnFullMatch("牛牛商店", zero.OnlyGroup, getdb).SetBlock(true).Handle(func(ctx *zero.Ctx) { + gid := ctx.Event.GroupID + uid := ctx.Event.UserID + + if _, err := db.findNiuNiu(gid, uid); err != nil { + ctx.SendChain(message.Text("你还没有牛牛呢快去注册一个吧!")) + return + } + + var messages message.Message + messages = append(messages, ctxext.FakeSenderForwardNode(ctx, message.Text("牛牛商店当前售卖的物品如下"))) + messages = append(messages, + ctxext.FakeSenderForwardNode(ctx, + message.Text("商品1\n商品名:伟哥\n商品价格:300ATRI币\n商品描述:可以让你打胶每次都增长,有效5次"))) + messages = append(messages, + ctxext.FakeSenderForwardNode(ctx, + message.Text("商品2\n商品名:媚药\n商品价格:300ATRI币\n商品描述:可以让你打胶每次都减少,有效5次"))) + messages = append(messages, + ctxext.FakeSenderForwardNode(ctx, + message.Text("商品3\n商品名:击剑神器\n商品价格:500ATRI币\n商品描述:可以让你每次击剑都立于不败之地,有效2次"))) + messages = append(messages, + ctxext.FakeSenderForwardNode(ctx, + message.Text("商品4\n商品名:击剑神稽\n商品价格:500ATRI币\n商品描述:可以让你每次击剑都失败,有效2次"))) + + if id := ctx.Send(messages).ID(); id == 0 { + ctx.Send(message.Text("发送商店失败")) + return + } + + ctx.SendChain(message.Text("输入对应序号进行购买商品")) + recv, cancel := zero.NewFutureEvent("message", 999, false, zero.CheckUser(uid), zero.CheckGroup(gid), zero.RegexRule(`^(\d+)$`)).Repeat() + defer cancel() + timer := time.NewTimer(120 * time.Second) + answer := "" + defer timer.Stop() + for { + select { + case <-timer.C: + ctx.SendChain(message.At(uid), message.Text(" 超时,已自动取消")) + return + case r := <-recv: + answer = r.Event.Message.String() + n, err := strconv.Atoi(answer) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + info, err := db.findNiuNiu(gid, uid) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + money, err := info.purchaseItem(n) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + if wallet.GetWalletOf(uid) < money { + ctx.SendChain(message.Text("你还没有足够的ATRI币呢,不能购买")) + return + } + + if err = wallet.InsertWalletOf(uid, -money); err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + if err = db.insertNiuNiu(info, gid); err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + ctx.SendChain(message.Text("购买成功!")) + return + } + } + }) + en.OnFullMatch("赎牛牛", zero.OnlyGroup, getdb).SetBlock(true).Handle(func(ctx *zero.Ctx) { + gid := ctx.Event.GroupID + uid := ctx.Event.UserID + last, ok := jjCount.Load(fmt.Sprintf("%d_%d", gid, uid)) + + if !ok { + ctx.SendChain(message.Text("你还没有被厥呢")) + return + } + + if time.Since(last.TimeLimit) > time.Minute*60 { + ctx.SendChain(message.Text("时间已经过期了,牛牛已被收回!")) + jjCount.Delete(fmt.Sprintf("%d_%d", gid, uid)) + return + } + + if last.Count < 4 { + ctx.SendChain(message.Text("你还没有被厥够4次呢,不能赎牛牛")) + return + } + ctx.SendChain(message.Text("再次确认一下哦,这次赎牛牛,牛牛长度将会变成", last.Length, "cm\n还需要嘛【是|否】")) + recv, cancel := zero.NewFutureEvent("message", 999, false, zero.CheckUser(uid), zero.CheckGroup(gid), zero.RegexRule(`^(是|否)$`)).Repeat() + defer cancel() + timer := time.NewTimer(2 * time.Minute) + defer timer.Stop() + for { + select { + case <-timer.C: + ctx.SendChain(message.Text("操作超时,已自动取消")) + return + case c := <-recv: + answer := c.Event.Message.String() + if answer == "否" { + ctx.SendChain(message.Text("取消成功!")) + return + } + money := wallet.GetWalletOf(uid) + if money < 150 { + ctx.SendChain(message.Text("赎牛牛需要150ATRI币,快去赚钱吧,目前仅有:", money, "个ATRI币")) + return + } + + if err := wallet.InsertWalletOf(uid, -150); err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + niuniu, err := db.findNiuNiu(gid, uid) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + niuniu.Length = last.Length + + if err = db.insertNiuNiu(niuniu, gid); err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + jjCount.Delete(fmt.Sprintf("%d_%d", gid, uid)) + + ctx.SendChain(message.At(uid), message.Text(fmt.Sprintf("恭喜你!成功赎回牛牛,当前长度为:%.2fcm", last.Length))) + return + } + } + }) + en.OnFullMatch("牛子长度排行", zero.OnlyGroup, getdb).SetBlock(true).Handle(func(ctx *zero.Ctx) { + gid := ctx.Event.GroupID + niuniuList, err := db.readAllTable(gid) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + m := niuniuList.positive() + if m == nil { + ctx.SendChain(message.Text("暂时没有男孩子哦")) + return + } + m.sort(true) + buf, err := m.setupDrawList(ctx, true) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + ctx.SendChain(message.ImageBytes(buf)) + }) + en.OnFullMatch("牛子深度排行", zero.OnlyGroup, getdb).SetBlock(true).Handle(func(ctx *zero.Ctx) { + gid := ctx.Event.GroupID + niuniuList, err := db.readAllTable(gid) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + m := niuniuList.negative() + if m == nil { + ctx.SendChain(message.Text("暂时没有女孩子哦")) + return + } + m.sort(false) + buf, err := m.setupDrawList(ctx, false) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + ctx.SendChain(message.ImageBytes(buf)) + }) + en.OnFullMatch("查看我的牛牛", getdb, zero.OnlyGroup).SetBlock(true).Handle(func(ctx *zero.Ctx) { + uid := ctx.Event.UserID + gid := ctx.Event.GroupID + i, err := db.findNiuNiu(gid, uid) + if err != nil { + ctx.SendChain(message.Text("你还没有牛牛呢不能查看!")) + return + } + niuniu := i.Length + var result strings.Builder + sexLong := "长" + sex := "♂️" + if niuniu < 0 { + sexLong = "深" + sex = "♀️" + } + niuniuList, err := db.readAllTable(gid) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + result.WriteString(fmt.Sprintf("\n📛%s<%s>的牛牛信息\n⭕性别:%s\n⭕%s度:%.2fcm\n⭕排行:%d\n⭕%s ", + ctx.CardOrNickName(uid), strconv.FormatInt(uid, 10), + sex, sexLong, niuniu, niuniuList.ranking(niuniu, uid), generateRandomString(niuniu))) + ctx.SendChain(message.Text(&result)) + }) + en.OnRegex(`^(?:.*使用(.*))??打胶$`, zero.OnlyGroup, + getdb).SetBlock(true).Limit(func(ctx *zero.Ctx) *rate.Limiter { + lt := dajiaoLimiter.Load(fmt.Sprintf("%d_%d", ctx.Event.GroupID, ctx.Event.UserID)) + ctx.State["dajiao_last_touch"] = lt.LastTouch() + return lt + }, func(ctx *zero.Ctx) { + timePass := int(time.Since(time.Unix(ctx.State["dajiao_last_touch"].(int64), 0)).Seconds()) + ctx.SendChain(message.Text(randomChoice([]string{ + fmt.Sprintf("才过去了%ds时间,你就又要打🦶了,身体受得住吗", timePass), + fmt.Sprintf("不行不行,你的身体会受不了的,歇%ds再来吧", 90-timePass), + fmt.Sprintf("休息一下吧,会炸膛的!%ds后再来吧", 90-timePass), + fmt.Sprintf("打咩哟,你的牛牛会爆炸的,休息%ds再来吧", 90-timePass), + }))) + }).Handle(func(ctx *zero.Ctx) { + // 获取群号和用户ID + gid := ctx.Event.GroupID + uid := ctx.Event.UserID + t := fmt.Sprintf("%d_%d", gid, uid) + fiancee := ctx.State["regex_matched"].([]string) + updateMap(t, false) + + niuniu, err := db.findNiuNiu(gid, uid) + if err != nil { + ctx.SendChain(message.Text("请先注册牛牛!")) + dajiaoLimiter.Delete(fmt.Sprintf("%d_%d", gid, uid)) + return + } + + messages, err := niuniu.processNiuNiuAction(t, fiancee[1]) + if err != nil { + ctx.SendChain(message.Text(err)) + dajiaoLimiter.Delete(fmt.Sprintf("%d_%d", gid, uid)) + return + } + if err = db.insertNiuNiu(niuniu, gid); err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + ctx.SendChain(message.Text(messages)) + }) + en.OnFullMatch("注册牛牛", zero.OnlyGroup, getdb).SetBlock(true).Handle(func(ctx *zero.Ctx) { + gid := ctx.Event.GroupID + uid := ctx.Event.UserID + if _, err := db.findNiuNiu(gid, uid); err == nil { + ctx.SendChain(message.Text("你已经注册过了")) + return + } + // 获取初始长度 + length := db.randLength() + u := userInfo{ + UID: uid, + Length: length, + } + // 添加数据进入表 + if err := db.insertNiuNiu(&u, gid); err != nil { + if err = db.createGIDTable(gid); err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + if err = db.insertNiuNiu(&u, gid); err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + } + ctx.SendChain(message.At(uid), + message.Text("注册成功,你的牛牛现在有", u.Length, "cm")) + }) + en.OnRegex(`^(?:.*使用(.*))??jj\s?(\[CQ:at,(?:\S*,)?qq=(\d+)(?:,\S*)?\]|(\d+))$`, getdb, + zero.OnlyGroup).SetBlock(true).Limit(func(ctx *zero.Ctx) *rate.Limiter { + lt := jjLimiter.Load(fmt.Sprintf("%d_%d", ctx.Event.GroupID, ctx.Event.UserID)) + ctx.State["jj_last_touch"] = lt.LastTouch() + return lt + }, func(ctx *zero.Ctx) { + timePass := int(time.Since(time.Unix(ctx.State["jj_last_touch"].(int64), 0)).Seconds()) + ctx.SendChain(message.Text(randomChoice([]string{ + fmt.Sprintf("才过去了%ds时间,你就又要击剑了,真是饥渴难耐啊", timePass), + fmt.Sprintf("不行不行,你的身体会受不了的,歇%ds再来吧", 150-timePass), + fmt.Sprintf("你这种男同就应该被送去集中营!等待%ds再来吧", 150-timePass), + fmt.Sprintf("打咩哟!你的牛牛会炸的,休息%ds再来吧", 150-timePass), + }))) + }, + ).Handle(func(ctx *zero.Ctx) { + fiancee := ctx.State["regex_matched"].([]string) + adduser, err := strconv.ParseInt(fiancee[3]+fiancee[4], 10, 64) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + uid := ctx.Event.UserID + gid := ctx.Event.GroupID + t := fmt.Sprintf("%d_%d", gid, uid) + updateMap(t, false) + myniuniu, err := db.findNiuNiu(gid, uid) + if err != nil { + ctx.SendChain(message.Text("你还没有牛牛快去注册一个吧!")) + jjLimiter.Delete(t) + return + } + adduserniuniu, err := db.findNiuNiu(gid, adduser) + if err != nil { + ctx.SendChain(message.At(uid), message.Text("对方还没有牛牛呢,不能🤺")) + jjLimiter.Delete(t) + return + } + if uid == adduser { + ctx.SendChain(message.Text("你要和谁🤺?你自己吗?")) + jjLimiter.Delete(t) + return + } + fencingResult, err := myniuniu.processJJuAction(adduserniuniu, t, fiancee[1]) + if err != nil { + ctx.SendChain(message.Text(err)) + return + } + + if err = db.insertNiuNiu(myniuniu, gid); err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + if err = db.insertNiuNiu(adduserniuniu, gid); err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return + } + + ctx.SendChain(message.At(uid), message.Text(" ", fencingResult)) + j := fmt.Sprintf("%d_%d", gid, adduser) + count, ok := jjCount.Load(j) + var c lastLength + // 按照第一次jj时的时间计算,超过45分钟则重置 + if !ok { + c = lastLength{ + TimeLimit: time.Now(), + Count: 1, + Length: adduserniuniu.Length, + } + } else { + c = lastLength{ + TimeLimit: c.TimeLimit, + Count: count.Count + 1, + Length: count.Length, + } + if time.Since(c.TimeLimit) > time.Minute*60 { + c = lastLength{ + TimeLimit: time.Now(), + Count: 1, + Length: adduserniuniu.Length, + } + } + } + + jjCount.Store(j, &c) + if c.Count > 2 { + ctx.SendChain(message.Text(randomChoice([]string{fmt.Sprintf("你们太厉害了,对方已经被你们打了%d次了,你们可以继续找他🤺", c.Count), + "你们不要再找ta🤺啦!"}))) + // 保证只发送一次 + if c.Count < 4 { + id := ctx.SendPrivateMessage(adduser, + message.Text(fmt.Sprintf("你在%d群里已经被厥冒烟了,快去群里赎回你原本的牛牛!\n发送:`赎牛牛`即可!", gid))) + if id == 0 { + ctx.SendChain(message.At(adduser), message.Text("快发送`赎牛牛`来赎回你原本的牛牛!")) + } + } + } + }) + en.OnFullMatch("注销牛牛", getdb, zero.OnlyGroup).SetBlock(true).Handle(func(ctx *zero.Ctx) { + uid := ctx.Event.UserID + gid := ctx.Event.GroupID + _, err := db.findNiuNiu(gid, uid) + if err != nil { + ctx.SendChain(message.Text("你还没有牛牛呢,咋的你想凭空造一个啊")) + return + } + t := fmt.Sprintf("%d_%d", gid, uid) + value, ok := countDeleteNiuNiu.Load(t) + if ok { + if time.Since(value.TimeLimit) < 24*time.Hour { + money := getMoneyForNumber(value.Count) + walletOf := wallet.GetWalletOf(uid) + if !(walletOf > money) { + ctx.SendChain(message.Text(fmt.Sprintf("你今天已经注销了%d次了,此次注销需要%d个ATRI币,没钱就等待明天重置吧", value.Count+1, money))) + return + } + if err = wallet.InsertWalletOf(uid, -money); err != nil { + ctx.SendChain(message.Text("ERROR:", err)) + return + } + countDeleteNiuNiu.Store(t, &propsCount{ + Count: value.Count + 1, + }) + } else { + countDeleteNiuNiu.Delete(t) + } + } else { + countDeleteNiuNiu.Store(t, &propsCount{ + Count: 1, + TimeLimit: time.Now(), + }) + value = &propsCount{} + } + err = db.deleteniuniu(gid, uid) + if err != nil { + ctx.SendChain(message.Text("注销失败")) + return + } + ctx.SendChain(message.Text("这是你今天第", value.Count+1, "次注销,注销成功,你已经没有牛牛了")) + }) +} diff --git a/plugin/niuniu/niuniu/model.go b/plugin/niuniu/niuniu/model.go new file mode 100644 index 0000000000..b980c419c0 --- /dev/null +++ b/plugin/niuniu/niuniu/model.go @@ -0,0 +1,385 @@ +// Package niuniu 牛牛大作战 +package niuniu + +import ( + "bytes" + "errors" + "fmt" + "image/png" + "math" + "math/rand" + "sort" + "strconv" + "sync" + "time" + + fcext "github.com/FloatTech/floatbox/ctxext" + sql "github.com/FloatTech/sqlite" + zero "github.com/wdvxdr1123/ZeroBot" + "github.com/wdvxdr1123/ZeroBot/message" +) + +type model struct { + sql sql.Sqlite + sync.RWMutex +} + +type userInfo struct { + UID int64 + Length float64 + UserCount int + WeiGe int // 伟哥 + Philter int // 媚药 + Artifact int // 击剑神器 + ShenJi int // 击剑神稽 + Buff1 int // 暂定 + Buff2 int // 暂定 + Buff3 int // 暂定 + Buff4 int // 暂定 + Buff5 int // 暂定 +} + +type users []*userInfo + +var ( + db = &model{} + getdb = fcext.DoOnceOnSuccess(func(ctx *zero.Ctx) bool { + db.sql.DBPath = en.DataFolder() + "niuniu.db" + err := db.sql.Open(time.Hour * 24) + if err != nil { + ctx.SendChain(message.Text("ERROR: ", err)) + return false + } + return true + }) +) + +// useWeiGe 使用道具伟哥 +func (u *userInfo) useWeiGe() (string, float64) { + niuniu := u.Length + reduce := math.Abs(hitGlue(niuniu)) + niuniu += reduce + return randomChoice([]string{ + fmt.Sprintf("哈哈,你这一用道具,牛牛就像是被激发了潜能,增加了%.2fcm!看来今天是个大日子呢!", reduce), + fmt.Sprintf("你这是用了什么神奇的道具?牛牛竟然增加了%.2fcm,简直是牛气冲天!", reduce), + fmt.Sprintf("使用道具后,你的牛牛就像是开启了加速模式,一下增加了%.2fcm,这成长速度让人惊叹!", reduce), + }), niuniu +} + +// usePhilter 使用道具媚药 +func (u *userInfo) usePhilter() (string, float64) { + niuniu := u.Length + reduce := math.Abs(hitGlue(niuniu)) + niuniu -= reduce + return randomChoice([]string{ + fmt.Sprintf("你使用媚药,咿呀咿呀一下使当前长度发生了一些变化,当前长度%.2f", niuniu), + fmt.Sprintf("看来你追求的是‘微观之美’,故意使用道具让牛牛凹进去了%.2fcm!", reduce), + fmt.Sprintf("缩小奇迹’在你身上发生了,牛牛凹进去了%.2fcm,你的选择真是独特!", reduce), + }), niuniu +} + +// useArtifact 使用道具击剑神器 +func (u *userInfo) useArtifact(adduserniuniu float64) (string, float64, float64) { + myLength := u.Length + difference := myLength - adduserniuniu + var ( + change float64 + ) + if difference > 0 { + change = hitGlue(myLength + adduserniuniu) + } else { + change = hitGlue((myLength + adduserniuniu) / 2) + } + myLength += change + return randomChoice([]string{ + fmt.Sprintf("凭借神秘道具的力量,你让对方在你的长度面前俯首称臣!你的长度增加了%.2fcm,当前长度达到了%.2fcm", change, myLength), + fmt.Sprintf("神器在手,天下我有!你使用道具后,长度猛增%.2fcm,现在的总长度是%.2fcm,无人能敌!", change, myLength), + fmt.Sprintf("这就是道具的魔力!你轻松增加了%.2fcm,让对手望尘莫及,当前长度为%.2fcm!", change, myLength), + fmt.Sprintf("道具一出,谁与争锋!你的长度因道具而增长%.2fcm,现在的长度是%.2fcm,霸气尽显!", change, myLength), + fmt.Sprintf("使用道具的你,如同获得神助!你的长度增长了%.2fcm,达到%.2fcm的惊人长度,胜利自然到手!", change, myLength), + }), myLength, adduserniuniu - change/1.3 +} + +// useShenJi 使用道具击剑神稽 +func (u *userInfo) useShenJi(adduserniuniu float64) (string, float64, float64) { + myLength := u.Length + difference := myLength - adduserniuniu + var ( + change float64 + ) + if difference > 0 { + change = hitGlue(myLength + adduserniuniu) + } else { + change = hitGlue((myLength + adduserniuniu) / 2) + } + myLength -= change + var r string + if myLength > 0 { + r = randomChoice([]string{ + fmt.Sprintf("哦吼!?看来你的牛牛因为使用了神秘道具而缩水了呢🤣🤣🤣!缩小了%.2fcm!", change), + fmt.Sprintf("哈哈,看来这个道具有点儿调皮,让你的长度缩水了%.2fcm!现在你的长度是%.2fcm,下次可得小心使用哦!", change, myLength), + fmt.Sprintf("使用道具后,你的牛牛似乎有点儿害羞,缩水了%.2fcm!现在的长度是%.2fcm,希望下次它能挺直腰板!", change, myLength), + fmt.Sprintf("哎呀,这个道具的效果有点儿意外,你的长度减少了%.2fcm,现在只有%.2fcm了!下次选道具可得睁大眼睛!", change, myLength), + }) + } else { + r = randomChoice([]string{ + fmt.Sprintf("哦哟,小姐姐真是玩得一手好游戏,使用道具后数值又降低了%.2fcm,小巧得更显魅力!", change), + fmt.Sprintf("看来小姐姐喜欢更加精致的风格,使用道具后,数值减少了%.2fcm,更加迷人了!", change), + fmt.Sprintf("小姐姐的每一次变化都让人惊喜,使用道具后,数值减少了%.2fcm,更加优雅动人!", change), + fmt.Sprintf("小姐姐这是在展示什么是真正的精致小巧,使用道具后,数值减少了%.2fcm,美得不可方物!", change), + }) + } + return r, myLength, adduserniuniu + 0.7*change +} + +func (u *userInfo) processNiuNiuAction(t string, props string) (string, error) { + var ( + messages string + info userInfo + err error + f float64 + ) + load, ok := prop.Load(t) + info = *u + if props != "" { + if props != "伟哥" && props != "媚药" { + err = errors.New("道具不存在") + } + if props == "击剑神器" || props == "击剑神稽" { + err = errors.New("道具不能混着用哦") + } + if err != nil { + return "", err + } + if err = u.createUserInfoByProps(props); err != nil { + return "", err + } + } + switch { + case ok && load.Count > 1 && time.Since(load.TimeLimit) < time.Minute*8: + messages, f = generateRandomStingTwo(u.Length) + u.Length = f + errMessage := fmt.Sprintf("你使用道具次数太快了,此次道具不会生效,等待%d再来吧", time.Minute*8-time.Since(load.TimeLimit)) + err = errors.New(errMessage) + + case u.WeiGe-info.WeiGe != 0: + messages, f = u.useWeiGe() + u.Length = f + updateMap(t, true) + + case u.Philter-info.Philter != 0: + messages, f = u.usePhilter() + u.Length = f + updateMap(t, true) + + default: + messages, f = generateRandomStingTwo(u.Length) + u.Length = f + } + return messages, err +} + +func (u *userInfo) createUserInfoByProps(props string) error { + var ( + err error + ) + switch props { + case "伟哥": + if u.WeiGe > 0 { + u.WeiGe-- + } else { + err = errors.New("你还没有伟哥呢,不能使用") + } + case "媚药": + if u.Philter > 0 { + u.Philter-- + } else { + err = errors.New("你还没有媚药呢,不能使用") + } + case "击剑神器": + if u.Artifact > 0 { + u.Artifact-- + } else { + err = errors.New("你还没有击剑神器呢,不能使用") + } + case "击剑神稽": + if u.ShenJi > 0 { + u.ShenJi-- + } else { + err = errors.New("你还没有击剑神稽呢,不能使用") + } + default: + err = errors.New("道具不存在") + } + return err +} + +// 接收值依次是 被jj用户的信息 记录gid和uid的字符串 道具名称 +// 返回值依次是 要发送的消息 错误信息 +func (u *userInfo) processJJuAction(adduserniuniu *userInfo, t string, props string) (string, error) { + var ( + fencingResult string + f float64 + f1 float64 + info userInfo + err error + ) + v, ok := prop.Load(t) + info = *u + if props != "" { + if props != "击剑神器" && props != "击剑神稽" { + err = errors.New("道具不存在") + } + if props == "伟哥" || props == "媚药" { + err = errors.New("道具不能混着用哦") + } + if err = u.createUserInfoByProps(props); err != nil { + return "", err + } + } + switch { + case ok && v.Count > 1 && time.Since(v.TimeLimit) < time.Minute*8: + fencingResult, f, f1 = fencing(u.Length, adduserniuniu.Length) + u.Length = f + adduserniuniu.Length = f1 + errMessage := fmt.Sprintf("你使用道具次数太快了,此次道具不会生效,等待%d再来吧", time.Minute*8-time.Since(v.TimeLimit)) + err = errors.New(errMessage) + case u.ShenJi-info.ShenJi != 0: + fencingResult, f, f1 = u.useShenJi(adduserniuniu.Length) + u.Length = f + adduserniuniu.Length = f1 + updateMap(t, true) + case u.Artifact-info.Artifact != 0: + fencingResult, f, f1 = u.useArtifact(adduserniuniu.Length) + u.Length = f + adduserniuniu.Length = f1 + updateMap(t, true) + default: + fencingResult, f, f1 = fencing(u.Length, adduserniuniu.Length) + u.Length = f + adduserniuniu.Length = f1 + } + return fencingResult, err +} + +func (u *userInfo) purchaseItem(n int) (int, error) { + var ( + money int + err error + ) + switch n { + case 1: + money = 300 + u.WeiGe += 5 + case 2: + money = 300 + u.Philter += 5 + case 3: + money = 500 + u.Artifact += 2 + case 4: + money = 500 + u.ShenJi += 2 + default: + err = errors.New("无效的选择") + } + return money, err +} + +func (m users) setupDrawList(ctx *zero.Ctx, t bool) ([]byte, error) { + allUsers := make(drawer, len(m)) + for i, info := range m { + allUsers[i] = drawUserRanking{ + name: ctx.CardOrNickName(info.UID), + user: info, + } + } + image, err := allUsers.draw(t) + if err != nil { + return nil, err + } + var buf bytes.Buffer + err = png.Encode(&buf, image) + return buf.Bytes(), err +} + +func (m users) positive() users { + var m1 []*userInfo + for _, i2 := range m { + if i2.Length > 0 { + m1 = append(m1, i2) + } + } + return m1 +} + +func (m users) negative() users { + var m1 []*userInfo + for _, i2 := range m { + if i2.Length <= 0 { + m1 = append(m1, i2) + } + } + return m1 +} + +func (m users) sort(isDesc bool) { + t := func(i, j int) bool { + return m[i].Length < m[j].Length + } + if isDesc { + t = func(i, j int) bool { + return m[i].Length > m[j].Length + } + } + sort.Slice(m, t) +} + +func (m users) ranking(niuniu float64, uid int64) int { + m.sort(niuniu > 0) + for i, user := range m { + if user.UID == uid { + return i + 1 + } + } + return -1 +} + +func (db *model) randLength() float64 { + return float64(rand.Intn(9)+1) + (float64(rand.Intn(100)) / 100) +} + +func (db *model) createGIDTable(gid int64) error { + db.Lock() + defer db.Unlock() + return db.sql.Create(strconv.FormatInt(gid, 10), &userInfo{}) +} + +// findNiuNiu 返回一个用户的牛牛信息 +func (db *model) findNiuNiu(gid, uid int64) (*userInfo, error) { + db.RLock() + defer db.RUnlock() + u := userInfo{} + err := db.sql.Find(strconv.FormatInt(gid, 10), &u, "where UID = "+strconv.FormatInt(uid, 10)) + return &u, err +} + +// insertNiuNiu 更新一个用户的牛牛信息 +func (db *model) insertNiuNiu(u *userInfo, gid int64) error { + db.Lock() + defer db.Unlock() + return db.sql.Insert(strconv.FormatInt(gid, 10), u) +} + +func (db *model) deleteniuniu(gid, uid int64) error { + db.Lock() + defer db.Unlock() + return db.sql.Del(strconv.FormatInt(gid, 10), "where UID = "+strconv.FormatInt(uid, 10)) +} + +func (db *model) readAllTable(gid int64) (users, error) { + db.Lock() + defer db.Unlock() + a, err := sql.FindAll[userInfo](&db.sql, strconv.FormatInt(gid, 10), "where UserCount = 0") + return a, err +} diff --git a/plugin/niuniu/niuniu/utils.go b/plugin/niuniu/niuniu/utils.go new file mode 100644 index 0000000000..8bd83337a6 --- /dev/null +++ b/plugin/niuniu/niuniu/utils.go @@ -0,0 +1,274 @@ +// Package niuniu 牛牛大作战 +package niuniu + +import ( + "fmt" + "math" + "math/rand" + "time" +) + +func randomChoice(options []string) string { + return options[rand.Intn(len(options))] +} + +func updateMap(t string, d bool) { + value, ok := prop.Load(t) + if value == nil { + return + } + // 检查一次是否已经过期 + if !d { + if time.Since(value.TimeLimit) > time.Minute*8 { + prop.Delete(t) + } + return + } + if ok { + prop.Store(t, &propsCount{ + Count: value.Count + 1, + TimeLimit: value.TimeLimit, + }) + } else { + prop.Store(t, &propsCount{ + Count: 1, + TimeLimit: time.Now(), + }) + } + if time.Since(value.TimeLimit) > time.Minute*8 { + prop.Delete(t) + } +} + +func getMoneyForNumber(n int) (money int) { + switch n { + case 1: + money = 5 + case 2: + money = 10 + default: + money = n * 10 + } + return +} + +func niuNiuProfit(niuniu float64) (money int, message string) { + switch { + case 0 < niuniu && niuniu <= 15: + message = randomChoice([]string{ + "你的牛牛太小啦", + "这么小的牛牛就要肩负起这么大的责任吗?快去打胶吧!", + }) + case niuniu > 15: + money = int(niuniu * 10) + message = randomChoice([]string{ + fmt.Sprintf("你的牛牛已经离你而去了,你赚取了%d个ATRI币", money), + fmt.Sprintf("啊!你的牛☞已经没啦🤣,为了这点钱就出卖你的牛牛可真不值,你赚取了%d个ATRI币", money), + }) + case niuniu <= 0 && niuniu >= -15: + message = randomChoice([]string{ + "你的牛牛太小啦", + "这么小的牛牛就要肩负起这么大的责任吗?快去找别人玩吧!", + }) + case niuniu < -15: + money = int(math.Abs(niuniu * 10)) + message = randomChoice([]string{ + fmt.Sprintf("此世做了女孩子来世来当男孩子(bushi),你赚取了%d个ATRI币", money), + fmt.Sprintf("呜呜呜,不哭不哭当女孩子不委屈的,你赚取了%d个ATRI币", money), + }) + } + return +} + +func generateRandomStingTwo(niuniu float64) (string, float64) { + probability := rand.Intn(100 + 1) + reduce := math.Abs(hitGlue(niuniu)) + switch { + case probability <= 40: + niuniu += reduce + return randomChoice([]string{ + fmt.Sprintf("你嘿咻嘿咻一下,促进了牛牛发育,牛牛增加%.2fcm了呢!", reduce), + fmt.Sprintf("你打了个舒服痛快的🦶呐,牛牛增加了%.2fcm呢!", reduce), + }), niuniu + case probability <= 60: + return randomChoice([]string{ + "你打了个🦶,但是什么变化也没有,好奇怪捏~", + "你的牛牛刚开始变长了,可过了一会又回来了,什么变化也没有,好奇怪捏~", + }), niuniu + default: + niuniu -= reduce + if niuniu < 0 { + return randomChoice([]string{ + fmt.Sprintf("哦吼!?看来你的牛牛凹进去了%.2fcm呢!", reduce), + fmt.Sprintf("你突发恶疾!你的牛牛凹进去了%.2fcm!", reduce), + fmt.Sprintf("笑死,你因为打🦶过度导致牛牛凹进去了%.2fcm!🤣🤣🤣", reduce), + }), niuniu + } + return randomChoice([]string{ + fmt.Sprintf("阿哦,你过度打🦶,牛牛缩短%.2fcm了呢!", reduce), + fmt.Sprintf("你的牛牛变长了很多,你很激动地继续打🦶,然后牛牛缩短了%.2fcm呢!", reduce), + fmt.Sprintf("小打怡情,大打伤身,强打灰飞烟灭!你过度打🦶,牛牛缩短了%.2fcm捏!", reduce), + }), niuniu + } +} + +func generateRandomString(niuniu float64) string { + switch { + case niuniu <= -100: + return "wtf?你已经进化成魅魔了!魅魔在击剑时有20%的几率消耗自身长度吞噬对方牛牛呢。" + case niuniu <= -50: + return "嗯....好像已经穿过了身体吧..从另一面来看也可以算是凸出来的吧?" + case niuniu <= -25: + return randomChoice([]string{ + "这名女生,你的身体很健康哦!", + "WOW,真的凹进去了好多呢!", + "你已经是我们女孩子的一员啦!", + }) + case niuniu <= -10: + return randomChoice([]string{ + "你已经是一名女生了呢,", + "从女生的角度来说,你发育良好(,", + "你醒啦?你已经是一名女孩子啦!", + "唔...可以放进去一根手指了都...", + }) + case niuniu <= 0: + return randomChoice([]string{ + "安了安了,不要伤心嘛,做女生有什么不好的啊。", + "不哭不哭,摸摸头,虽然很难再长出来,但是请不要伤心啦啊!", + "加油加油!我看好你哦!", + "你醒啦?你现在已经是一名女孩子啦!", + }) + case niuniu <= 10: + return randomChoice([]string{ + "你行不行啊?细狗!", + "虽然短,但是小小的也很可爱呢。", + "像一只蚕宝宝。", + "长大了。", + }) + case niuniu <= 25: + return randomChoice([]string{ + "唔...没话说", + "已经很长了呢!", + }) + case niuniu <= 50: + return randomChoice([]string{ + "话说这种真的有可能吗?", + "厚礼谢!", + }) + case niuniu <= 100: + return randomChoice([]string{ + "已经突破天际了嘛...", + "唔...这玩意应该不会变得比我高吧?", + "你这个长度会死人的...!", + "你马上要进化成牛头人了!!", + "你是什么怪物,不要过来啊!!", + }) + default: + return "惊世骇俗!你已经进化成牛头人了!牛头人在击剑时有20%的几率消耗自身长度吞噬对方牛牛呢。" + } +} + +// fencing 击剑对决逻辑,返回对决结果和myLength的变化值 +func fencing(myLength, oppoLength float64) (string, float64, float64) { + devourLimit := 0.27 + + probability := rand.Intn(100) + 1 + + switch { + case oppoLength <= -100 && myLength > 0 && 10 < probability && probability <= 20: + change := hitGlue(oppoLength) + rand.Float64()*math.Log2(math.Abs(0.5*(myLength+oppoLength))) + myLength += change + return fmt.Sprintf("对方身为魅魔诱惑了你,你同化成魅魔!当前长度%.2fcm!", -myLength), -myLength, oppoLength + + case oppoLength >= 100 && myLength > 0 && 10 < probability && probability <= 20: + change := math.Min(math.Abs(devourLimit*myLength), math.Abs(1.5*myLength)) + myLength += change + return fmt.Sprintf("对方以牛头人的荣誉摧毁了你的牛牛!当前长度%.2fcm!", myLength), myLength, oppoLength + + case myLength <= -100 && oppoLength > 0 && 10 < probability && probability <= 20: + change := hitGlue(myLength+oppoLength) + rand.Float64()*math.Log2(math.Abs(0.5*(myLength+oppoLength))) + oppoLength -= change + myLength -= change + return fmt.Sprintf("你身为魅魔诱惑了对方,吞噬了对方部分长度!当前长度%.2fcm!", myLength), myLength, oppoLength + + case myLength >= 100 && oppoLength > 0 && 10 < probability && probability <= 20: + myLength -= oppoLength + oppoLength = 0.01 + return fmt.Sprintf("你以牛头人的荣誉摧毁了对方的牛牛!当前长度%.2fcm!", myLength), myLength, oppoLength + + default: + return determineResultBySkill(myLength, oppoLength) + } +} + +// determineResultBySkill 根据击剑技巧决定结果 +func determineResultBySkill(myLength, oppoLength float64) (string, float64, float64) { + probability := rand.Intn(100) + 1 + winProbability := calculateWinProbability(myLength, oppoLength) * 100 + return applySkill(myLength, oppoLength, + float64(probability) <= winProbability) +} + +// calculateWinProbability 计算胜率 +func calculateWinProbability(heightA, heightB float64) float64 { + pA := 0.9 + heightRatio := math.Max(heightA, heightB) / math.Min(heightA, heightB) + reductionRate := 0.1 * (heightRatio - 1) + reduction := pA * reductionRate + + adjustedPA := pA - reduction + return math.Max(adjustedPA, 0.01) +} + +// applySkill 应用击剑技巧并生成结果 +func applySkill(myLength, oppoLength float64, increaseLength1 bool) (string, float64, float64) { + reduce := fence(oppoLength) + // 兜底操作 + if reduce == 0 { + reduce = rand.Float64() + float64(rand.Intn(3)) + } + if increaseLength1 { + myLength += reduce + oppoLength -= 0.8 * reduce + if myLength < 0 { + return fmt.Sprintf("哦吼!?你的牛牛在长大欸!长大了%.2fcm!", reduce), myLength, oppoLength + } + return fmt.Sprintf("你以绝对的长度让对方屈服了呢!你的长度增加%.2fcm,当前长度%.2fcm!", reduce, myLength), myLength, oppoLength + } + myLength -= reduce + oppoLength += 0.8 * reduce + if myLength < 0 { + return fmt.Sprintf("哦吼!?看来你的牛牛因为击剑而凹进去了呢🤣🤣🤣!凹进去了%.2fcm!", reduce), myLength, oppoLength + } + return fmt.Sprintf("对方以绝对的长度让你屈服了呢!你的长度减少%.2fcm,当前长度%.2fcm!", reduce, myLength), myLength, oppoLength +} + +// fence 根据长度计算减少的长度 +func fence(rd float64) float64 { + rd = math.Abs(rd) + if rd == 0 { + rd = 1 + } + r := hitGlue(rd)*2 + rand.Float64()*math.Log2(rd) + + return float64(int(r * rand.Float64())) +} + +func hitGlue(l float64) float64 { + if l == 0 { + l = 0.1 + } + l = math.Abs(l) + switch { + case l > 1 && l <= 10: + return rand.Float64() * math.Log2(l*2) + case 10 < l && l <= 100: + return rand.Float64() * math.Log2(l*1.5) + case 100 < l && l <= 1000: + return rand.Float64() * (math.Log10(l*1.5) * 2) + case l > 1000: + return rand.Float64() * (math.Log10(l) * 2) + default: + return rand.Float64() + } +} From 8b0654014a7041d5d155c8a138502ab555890cc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=87=7E?= <158024940+xyy0411@users.noreply.github.com> Date: Sun, 27 Oct 2024 12:46:50 +0800 Subject: [PATCH 2/3] Add files via upload --- README.md | 3302 +++++++++++++++++++++++++++-------------------------- 1 file changed, 1652 insertions(+), 1650 deletions(-) diff --git a/README.md b/README.md index 0c88052daa..ccde167e1a 100644 --- a/README.md +++ b/README.md @@ -1,1650 +1,1652 @@ -
- 椛 - zbp-uwu -
- -

ZeroBot-Plugin

- - “椛椛是[真寻](https://github.com/HibiKier/zhenxun_bot)的好朋友!” - - ZeroBot-Plugin 是 ZeroBot 的 实用插件合集

- - -
- - [![miraigo](https://img.shields.io/badge/OneBot-MiraiGo-green.svg?style=social&logo=appveyor)](https://github.com/Mrs4s/MiraiGo) - [![oicq](https://img.shields.io/badge/OneBot-OICQ-green.svg?style=social&logo=appveyor)](https://github.com/takayama-lily/oicq) - [![mirai](https://img.shields.io/badge/OneBot-Mirai-green.svg?style=social&logo=appveyor)](https://github.com/mamoe/mirai) - - - - [![go](https://goreportcard.com/badge/github.com/FloatTech/ZeroBot-Plugin?style=flat-square&logo=go)](https://goreportcard.com/badge/github.com/FloatTech/ZeroBot-Plugin) - [![onebot](https://img.shields.io/badge/onebot-v11-black?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABwCAMAAADxPgR5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxQTFRF////29vbr6+vAAAAk1hCcwAAAAR0Uk5T////AEAqqfQAAAKcSURBVHja7NrbctswDATQXfD//zlpO7FlmwAWIOnOtNaTM5JwDMa8E+PNFz7g3waJ24fviyDPgfhz8fHP39cBcBL9KoJbQUxjA2iYqHL3FAnvzhL4GtVNUcoSZe6eSHizBcK5LL7dBr2AUZlev1ARRHCljzRALIEog6H3U6bCIyqIZdAT0eBuJYaGiJaHSjmkYIZd+qSGWAQnIaz2OArVnX6vrItQvbhZJtVGB5qX9wKqCMkb9W7aexfCO/rwQRBzsDIsYx4AOz0nhAtWu7bqkEQBO0Pr+Ftjt5fFCUEbm0Sbgdu8WSgJ5NgH2iu46R/o1UcBXJsFusWF/QUaz3RwJMEgngfaGGdSxJkE/Yg4lOBryBiMwvAhZrVMUUvwqU7F05b5WLaUIN4M4hRocQQRnEedgsn7TZB3UCpRrIJwQfqvGwsg18EnI2uSVNC8t+0QmMXogvbPg/xk+Mnw/6kW/rraUlvqgmFreAA09xW5t0AFlHrQZ3CsgvZm0FbHNKyBmheBKIF2cCA8A600aHPmFtRB1XvMsJAiza7LpPog0UJwccKdzw8rdf8MyN2ePYF896LC5hTzdZqxb6VNXInaupARLDNBWgI8spq4T0Qb5H4vWfPmHo8OyB1ito+AysNNz0oglj1U955sjUN9d41LnrX2D/u7eRwxyOaOpfyevCWbTgDEoilsOnu7zsKhjRCsnD/QzhdkYLBLXjiK4f3UWmcx2M7PO21CKVTH84638NTplt6JIQH0ZwCNuiWAfvuLhdrcOYPVO9eW3A67l7hZtgaY9GZo9AFc6cryjoeFBIWeU+npnk/nLE0OxCHL1eQsc1IciehjpJv5mqCsjeopaH6r15/MrxNnVhu7tmcslay2gO2Z1QfcfX0JMACG41/u0RrI9QAAAABJRU5ErkJggg==)](https://t.me/zerobotplugin) - [![zerobot](https://img.shields.io/badge/zerobot-v1.7.4-black?style=flat-square&logo=go)](https://github.com/wdvxdr1123/ZeroBot) - - - - [![license](https://img.shields.io/github/license/FloatTech/ZeroBot-Plugin.svg?style=flat-square&logo=gnu)](https://raw.githubusercontent.com/FloatTech/ZeroBot-Plugin/master/LICENSE) - [![tencent-qq](https://img.shields.io/badge/%E7%BE%A4-1048452984-red?style=flat-square&logo=tencent-qq)](https://jq.qq.com/?_wv=1027&k=QMb7x1mM) - [![tencent-guild](https://img.shields.io/badge/%E9%A2%91%E9%81%93-Zer0BotPlugin-yellow?style=flat-square&logo=tencent-qq)](https://pd.qq.com/s/fjkx81mnr) - [![telegram](https://img.shields.io/badge/Telegram-click%20me-informational?style=flat-square&logo=telegram)](https://t.me/zerobotplugin) - - 本项目符合 [OneBot](https://github.com/howmanybots/onebot) 标准,可基于以下项目与机器人框架/平台进行交互 - | 项目地址 | 平台 | 核心作者 | 备注 | - | :---: | :---: | :---: | :---: | - | [LLOneBot](https://github.com/LLOneBot/LLOneBot) | NTQQ | linyuchen | 目前推荐使用 | - | [go-cqhttp](https://github.com/Mrs4s/go-cqhttp) | [MiraiGo](https://github.com/Mrs4s/MiraiGo) | Mrs4s | 因签名原因不再维护 | - | [onebot-kotlin](https://github.com/yyuueexxiinngg/onebot-kotlin) | [Mirai](https://github.com/mamoe/mirai) | yyuueexxiinngg | 不再积极维护 | - | [oicq/http-api](https://github.com/takayama-lily/oicq/tree/master/http-api) | [OICQ](https://github.com/takayama-lily/oicq) | takayama | 已归档不再维护 | - - [![Star Trend](https://api.star-history.com/svg?repos=FloatTech/ZeroBot-Plugin&type=Timeline)](https://seladb.github.io/StarTrack-js/#/preload?r=FloatTech,ZeroBot-Plugin) - -
- -> 专为[后 go-cqhttp 时代](https://github.com/Mrs4s/go-cqhttp/issues/2471)开发迁移的`类zbp`新机器人现已出炉,基于官方api,稳定不风控: [NanoBot-Plugin](https://github.com/FloatTech/NanoBot-Plugin) - -> 如果您对开发插件感兴趣,欢迎加入[ZeroBot-Plugin-Playground](https://github.com/FloatTech/ZeroBot-Plugin-Playground) - -> webui持续开发中, 欢迎加入[ZeroBot-Plugin-Webui](https://github.com/FloatTech/ZeroBot-Plugin-Webui) - -## 命令行参数 -> `[]`代表是可选参数 -```bash -zerobot [-h] [-m] [-n nickname] [-t token] [-u url] [-g url] [-p prefix] [-d|w] [-c|s config.json] [-l latency] [-r ringlen] [-x max process time] [-mirror] [qq1 qq2 qq3 ...] [&] -``` -- **-h**: 显示帮助 -- **-m**: 不自动标记消息为已读 -- **-n nickname**: 设置默认昵称,默认为`椛椛` -- **-t token**: 设置`AccessToken`,默认为空 -- **-u url**: 设置`Url`,默认为`ws://127.0.0.1:6700` -- ~~**-g url**~~(默认禁用): 设置`webui url`,默认为`127.0.0.1:3000` -- **-p prefix**: 设置命令前缀,默认为`/` -- **-d|w**: 开启 debug | warning 级别及以上日志输出 -- **-c config.json**: 从`config.json`加载`bot`配置 -- **-s config.json**: 保存现在`bot`配置到`config.json` -- **-l latency**: 全局处理延时 (ms) -- **-r ringlen**: 接收消息环缓冲区大小,`0`为不设缓冲,并发处理 -- **-x max process time**: 最大处理时间 (min) -- **-mirror**: 直接使用镜像懒加载数据站而不尝试访问源站 -- **qqs**: superusers 的 qq 号 -- **&**: 驻留在后台,必须放在最后,仅`Linux`下有效 - -默认配置文件格式如下。当选择从配置文件加载时,将忽略相应命令行参数。 -```json -{ - "zero": { - "nickname": ["椛椛", "ATRI", "atri", "亚托莉", "アトリ"], - "command_prefix": "/", - "super_users": [], - "ring_len": 4096, - "latency": 233000000, - "max_process_time": 240000000000, - "mark_message": true - }, - "ws": [{ "Url": "ws://127.0.0.1:6700", "AccessToken": "" }], - "wss": null -} -``` - -## 功能 -> 在编译时,以下功能除插件控制外,均可通过注释`main.go`中的相应`import`而物理禁用,减小插件体积。 - -> 通过插件控制,还可动态管理某个功能在某个群的打开/关闭。 - -> 插件的优先级为`import`的先后顺序。 - -> `webui`默认禁用不编译,打开后会增加程序体积。 - -
- 插件控制 - - - [x] /响应 (在发送的群/用户开始工作) - - - [x] /沉默 (在发送的群/用户停止工作) - - - [x] /全局响应 (在所有位置开始工作,无视单独的沉默) - - - [x] /全局沉默 (在所有本应沉默的位置停止工作,显式指定启用的位置不受影响) - - - [x] /启用 xxx (在发送的群/用户启用xxx) - - - [x] /禁用 xxx (在发送的群/用户禁用xxx) - - - [x] /此处启用所有插件 - - - [x] /此处禁用所有插件 - - - [x] /全局启用 xxx - - - [x] /全局禁用 xxx - - - [x] /还原 xxx (在发送的群/用户还原xxx的开启状态到初始状态) - - - 注:当全局未配置或与默认相同时,状态取决于单独配置,后备为默认配置;当全局与默认不同时,状态取决于全局配置,单独配置失效。 - - - [x] /改变默认启用状态 xxx - - - [x] /禁止 service qq1 qq2... (禁止 qqs 使用服务 service) - - - [x] /允许 service qq1 qq2... (重新允许 qqs 使用服务 service) - - - [x] /封禁 qq1 qq2... (禁止 qqs 使用全部服务) - - - [x] /解封 qq1 qq2... (允许 qqs 使用全部服务) - - - [x] /用法 xxx - - - [x] /服务列表 - - - [x] /设置服务列表显示行数 xx (默认值为 9, 该设置仅运行时有效, zbp 重启后重置) - - - [x] (默认禁用) /设置webui用户名 zerobot 密码 123456 - - - [x] (默认禁用) /webui启动 - - - [x] (默认禁用) /webui停止 - - - [x] @Bot 插件冲突检测 (会在本群发送一条消息并在约 1s 后撤回以检测其它同类 bot 中已启用的插件并禁用) - -
-
- 动态加载插件 - - `import _ "github.com/FloatTech/ZeroBot-Plugin-Dynamic/dyloader"` - - - 本功能需要`cgo`,故已分离出主线。详见[ZeroBot-Plugin-Dynamic](https://github.com/FloatTech/ZeroBot-Plugin-Dynamic) - -
- -### *高优先级* -
- 聊天 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chat"` - - - [x] [BOT名字] - - - [x] [戳一戳BOT] - - - [x] 空调开 - - - [x] 空调关 - - - [x] 群温度 - - - [x] 设置温度[正整数] - -
-
- 聊天时长统计 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chatcount"` - - - [x] 查询水群@xxx - - - [x] 查看水群排名 - -
-
- 睡眠管理 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/sleep_manage"` - - - [x] 早安 | 晚安 - -
-
- ATRI - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/atri" - ` - - [x] 具体指令看 /用法 atri - - - 注:本插件基于 [ATRI](https://github.com/Kyomotoi/ATRI) ,为 Golang 移植版 - -
-
- 群管 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/manager"` - - - [x] 禁言[@xxx][分钟] - - - [x] 解除禁言[@xxx] - - - [x] 我要自闭 | 禅定 x [分钟 | 小时 | 天] - - - [x] 开启全员禁言 - - - [x] 解除全员禁言 - - - [x] 升为管理[@xxx] - - - [x] 取消管理[@xxx] - - - [x] 修改名片[@xxx][xxx] - - - [x] 修改头衔[@xxx][xxx] - - - [x] 申请头衔[xxx] - - - [x] 踢出群聊[@xxx] - - - [x] 退出群聊[群号]@Bot - - - [x] \*入群欢迎 - - - [x] \*退群通知 - - - [x] 设置欢迎语[欢迎~] 可选添加 [{at}] [{nickname}] [{avatar}] [{id}] - - - [x] 在[MM]月[dd]日的[hh]点[mm]分时(用[url])提醒大家[xxx] - - - [x] 在[MM]月[每周 | 周几]的[hh]点[mm]分时(用[url])提醒大家[xxx] - - - [x] 取消在[MM]月[dd]日的[hh]点[mm]分的提醒 - - - [x] 取消在[MM]月[每周 | 周几]的[hh]点[mm]分的提醒 - - - [x] 在"cron"时(用[url])提醒大家[xxx] - - - [x] 取消在"cron"的提醒 - - - [x] 列出所有提醒 - - - [x] 翻牌 - - - [x] 赞我 - - - [x] [开启 | 关闭]入群验证 - - - [x] [开启 | 关闭]gist加群自动审批 - - - [x] 对信息回复:[设置 | 取消]精华 - - - [x] 取消精华 [信息ID] - - - [x] /精华列表 - - - [ ] 同意好友请求 - - - [x] 对信息回复: 撤回 - - - [ ] 警告[@xxx] - - - 注:使用gist加群自动审批,请在群介绍添加以下说明,同时开启`需要回答问题并由管理员审核`:加群请在github新建一个gist,其文件名为本群群号的字符串的md5(小写),内容为一行,是当前unix时间戳(10分钟内有效)。然后请将您的用户名和gist哈希(小写)按照username/gisthash的格式填写到回答即可。 - - - 设置欢迎语可选添加参数说明:{at}可在发送时艾特被欢迎者 {nickname}是被欢迎者名字 {avatar}是被欢迎者头像 {uid}是被欢迎者QQ号 {gid}是当前群群号 {groupname} 是当前群群名 - -
-
- 定时指令触发器 - - `import _ "github.com/FloatTech/zbputils/job"` - - - 注意:触发器具有限速,每 2s 仅允许最多一次触发 - - - [x] 记录以"完全匹配关键词"触发的(代表我执行的)指令 - - - [x] 取消以"完全匹配关键词"触发的(代表我执行的)指令 - - - [x] 记录在"cron"触发的(别名xxx的)指令 - - - [x] 取消在"cron"触发的指令 - - - [x] 查看所有触发指令 - - - [x] 查看在"cron"触发的指令 - - - [x] 查看以"完全匹配关键词"触发的(代表我执行的)指令 - - - [x] 注入指令结果:任意指令 - - - [x] 执行指令:任意指令 - - - 注:任意指令可以使用形如`?::参数1提示语::1!`,`?::参数2提示语::2!`,`?::?可选参数3提示语,不回答将填入空值::3!`,`!::从url获取的参数::4!`,`!::?可选的从url获取的参数,出错将填入空值::5!`的未定参数,在注入时一一匹配 - - - 一些示例 - -> 每日9:30推送摸鱼人日历 - -``` -记录在"30 9 * * *"触发的指令 -run[CQ:image,file=https://api.vvhan.com/api/moyu] -``` - -> 每日12:00以1/2概率执行coser指令 - -```python -记录在"0 12 * * *"触发的指令 -注入指令结果:>runcoderaw py -from random import random -if random() > 0.5: print('coser') -else: print('今天没有coser哦~') -``` - -> 每日15:00询问设置定时者否想看coser - -```python -记录在"0 15 * * *"触发的指令 -注入指令结果:>runcoderaw py -if '?::想看coser吗?::1!' == '想': print('coser') -else: print('好吧') -``` - -> 自行编写简易的选择困难症助手小插件 - -```python -记录以"简易的选择困难症助手"触发的指令 -执行指令:>runcoderaw py -from random import random -if random() > 0.5: print('您最终会选?::请输入您的选择1::1!') -else: print('您最终会选?::请输入您的选择2::2!') -简易的选择困难症助手 -``` - -> 自行编写随机b站404页趣图插件 - -```python -记录以"随机b站404页趣图"触发的代表我执行的指令 -注入指令结果:>runcoderaw py -import json -j = json.loads(r'''!::https://api.iyk0.com/bili_chart::1!''') -print("run[CQ:image,file="+j["img"]+"]") -随机b站404页趣图 -``` - -![随机b站404页趣图](https://user-images.githubusercontent.com/41315874/157371451-c09ad3bb-c61a-4a42-9c47-fab3305bc0f8.png) - - - [x] [我|大家|有人][说|问][正则表达式]你[答|说|做|执行][模版] - - - [x] [查看|看看][我|大家|有人][说|问][正则表达式] - - - [x] 删除[大家|有人|我][说|问|让你做|让你执行][正则表达式] - - - 注:模版是指含有`$1` `$2`这样的未定参数,会在正则匹配时按顺序填入子匹配对应值 - -
- -### *中优先级* -
- ahsai tts - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ahsai"` - - - [x] 使[ 伊織弓鶴 | 紲星あかり | 結月ゆかり | 京町セイカ |東北きりたん | 東北イタコ | ついなちゃん標準語 | ついなちゃん関西弁 | 音街ウナ | 琴葉茜 | 吉田くん | 民安ともえ | 桜乃そら | 月読アイ | 琴葉葵 | 東北ずん子 | 月読ショウタ | 水奈瀬コウ ]说(日语) - -
-
- AIfalse - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ai_false"` - - - [x] 查询计算机当前活跃度: [检查身体 | 自检 | 启动自检 | 系统状态] - - - [x] 设置默认限速为每 m [分钟 | 秒] n 次触发 - -
-
- AIWife - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/aiwife"` - - - [x] waifu | 随机waifu(从[100000个AI生成的waifu](https://www.thiswaifudoesnotexist.net/)中随机一位) - -
-
- 支付宝到账语音 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/alipayvoice"` - - - [x] 支付宝到账 1 - -
-
- 触发者撤回时也自动撤回 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/autowithdraw"` - - - [x] 撤回一条消息 - -
-
- base16384加解密 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/b14"` - - - [x] 加密xxx - - - [x] 解密xxx - - - [x] 用yyy加密xxx - - - [x] 用yyy解密xxx - -
-
- 百度内容审核 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/baiduaudit"` - - - [x] 获取BDAkey - - - [x] 配置BDAKey [API Key] [Secret Key] - - - [x] 获取BDAkey - - - [x] [开启|关闭]内容审核 - - - [x] [开启|关闭]撤回提示 - - - [x] [开启|关闭]详细提示 - - - [x] [开启|关闭]撤回禁言 - - - [x] [开启|关闭]禁言累加 - - - [x] [开启|关闭]文本检测 - - - [x] [开启|关闭]图像检测 - - - [x] 设置最大禁言时间[分钟,默认:60,最大43200] - - - [x] 设置每次累加时间[分钟,默认:1] - - - [x] 设置撤回禁言时间[分钟,默认:1] - - - [x] 查看检测类型 - - - [x] 查看检测配置 - - - [x] 测试文本检测[文本内容] - - - [x] 测试图像检测[图片] - - - [x] 设置检测类型[类型编号] - - - [x] 设置不检测类型[类型编号] - - 检测类型编号列表:[1:违禁违规|2:文本色情|3:敏感信息|4:恶意推广|5:低俗辱骂|6:恶意推广-联系方式|7:恶意推广-软文推广] -
-
- base64卦加解密 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/base64gua"` - - - [x] 六十四卦加密xxx - - - [x] 六十四卦解密xxx - - - [x] 六十四卦用yyy加密xxx - - - [x] 六十四卦用yyy解密xxx - -
-
- base天城文加解密 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/baseamasiro"` - - - [x] 天城文加密xxx - - - [x] 天城文解密xxx - - - [x] 天城文用yyy加密xxx - - - [x] 天城文用yyy解密xxx - -
-
- bilibili - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili"` - - - [x] >vup info [xxx] - - - [x] >user info [xxx] - - - [x] 查成分 [xxx] - - - [x] 查弹幕 [xxx] 2 (最后一个参数是页码) - - - [x] 设置b站cookie b_ut=7;buvid3=0;i-wanna-go-back=-1;innersign=0; (最好把cookie设全) - - 获取Cookie可以使用[这个工具](https://github.com/XiaoMiku01/login_bili_go) - - - [x] 更新vup - -
-
- b站动态、专栏、视频、直播解析 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili"` - - - [x] t.bilibili.com/642277677329285174 | bilibili.com/read/cv17134450 | bilibili.com/video/BV13B4y1x7pS | live.bilibili.com/22603245 - -
-
- b站动态、直播推送,需要配合job一起使用 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili"` - - - [x] 添加b站订阅[uid|name] - - - [x] 取消b站订阅[uid|name] - - - [x] 取消b站动态订阅[uid|name] - - - [x] 取消b站直播订阅[uid|name] - - - [x] b站推送列表 - - - [x] 拉取b站推送 (使用job执行定时任务------记录在"@every 5m"触发的指令) - -
-
- 书评 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/book_review"` - - - [x] 书评[xxx] - - - [x] 随机书评 - -
-
- 选择困难症帮手 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/choose"` - - - [x] 选择[选择项1]还是[选项2]还是[更多选项] - -
-
- 抽象话 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chouxianghua"` - - - [x] 抽象翻译[xxx] - -
-
- 英文字符翻转 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chrev"` - - - [x] 翻转 I love you - -
-
- coser - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/coser" ` - - - [x] coser - -
-
- cp短打 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/cpstory"` - - - [x] 组cp[@xxx][@xxx] - - - [x] 磕cp大老师 雪乃 - -
-
- 今日早报 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/dailynews"` - - - [x] 今日早报 - -
-
- DeepDanbooru二次元图标签识别 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/danbooru"` - - - [x] 鉴赏图片[图片] - -
-
- 嘉然 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/diana"` - - - [x] 小作文 - - - [x] 发大病 - - - [x] 教你一篇小作文[作文] - -
-
- 程序员做饭指南 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/dish"` - - - [x] 怎么做 | 烹饪[菜名] - - - [x] 随机菜谱 | 随便做点菜 - -
-
- 多功能抽签 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/drawlots"` - - 支持图包文件夹和gif抽签 - - - [x] (刷新)抽签列表 - - - [x] 抽[签名]签 - - - [x] 看签[gif签名] - - - [x] 加签[签名][gif图片] - - - [x] 删签[gif签名] - -
-
- 漂流瓶 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/drift_bottle"` - - - [x] @Bot pick (随机捞一个漂流瓶) - - - [x] @Bot throw xxx (投递内容xxx,支持图片文字,投递内容需要大于10个字符或者带有图片) - -
-
- 合成emoji - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/emojimix"` - - - [x] [emoji][emoji] - -
-
- 颜文字抽象转写 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/emozi"` - - - [x] 抽象转写[文段] - - [x] 抽象还原[文段] - - [x] 抽象登录[用户名] - -
-
- 好友申请及群聊邀请事件处理 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/event"` - - - [x] [开启|关闭]自动同意[申请|邀请|主人] - - - [x] [同意|拒绝][申请|邀请][flag] - - - flag跟随事件一起发送, 默认同意主人的事件 - -
-
- 渲染任意文字到图片 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/font"` - - - [x] (用[终末体|终末变体|紫罗兰体|樱酥体|Consolas体|粗苹方体|未来荧黑体|Gugi体|八丸体|Impact体|猫啃体|苹方体])渲染(抖动)文字xxx - -
-
- 每日运势 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/fortune"` - - - [x] 运势 | 抽签 - - - [x] 设置底图[车万 DC4 爱因斯坦 星空列车 樱云之恋 富婆妹 李清歌 公主连结 原神 明日方舟 碧蓝航线 碧蓝幻想 战双 阴阳师 赛马娘 东方归言录 奇异恩典 夏日口袋 ASoul Hololive] - -
-
- 笑话 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/funny"` - - - [x] 讲个笑话[@xxx|qq号|人名] | 夸夸[@xxx|qq号|人名] - -
-
- 原神抽卡 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/genshin"` - - - [x] 切换原神卡池 - - - [x] 原神十连 - -
-
- gif - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/gif"` - - - [x] 爬[@xxx] - - - [x] 摸[@xxx] - - - [x] 搓[@xxx] - - - 注:更多指令见项目 --> https://github.com/FloatTech/ZeroBot-Plugin-Gif - -
-
- GitHub仓库搜索 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/github"` - - - [x] >github [xxx] - - - [x] >github -p [xxx] - -
-
- 猜歌 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/guessmusic"` - - 猜歌插件(该插件依赖ffmpeg) - - ---------主 人 指 令--------- - - [x] 设置猜歌歌库路径 [绝对路径] - - [x] [创建/删除]歌单 [歌单名称] - - [x] 下载歌曲[歌曲名称/网易云歌曲ID]到[歌单名称] - - -------管 理 员 指 令-------- - - [x] 设置猜歌默认歌单 [歌单名称] - - [x] 上传歌曲[群文件的音乐名]到[歌单名称] - - ------公 用 指 令------ - - [x] 歌单列表 - - [x] [个人/团队]猜歌 - - ------插 件 扩 展------ - - - 本插件内置了[NeteaseCloudMusicApi](https://binaryify.github.io/NeteaseCloudMusicApi/#/)框架的一些功能 - - [x] 设置猜歌API帮助 - - [x] 设置猜歌API [API首页网址] - - [x] 猜歌[开启/关闭][歌单/歌词]自动下载 - - [ ] 登录网易云 - - [x] 歌单信息 [网易云歌单链接/ID] - - [x] [歌单名称]绑定网易云[网易云歌单链接/ID] - - [x] 下载歌单[网易云歌单链接/ID]到[歌单名称] - - [x] 解除绑定 [歌单名称] - -
-
- 一言 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/hitokoto"` - - - [x] 一言[xxx] - - - [x] 系列一言 - -
-
- 炉石 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/hs"` - - - [x] 搜卡[xxxx] - - - [x] [卡组代码xxx] - - - 注:更多搜卡指令参数:https://hs.fbigame.com/misc/searchhelp - -
-
- 百人一首 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/hyaku"` - - - [x] 百人一首 - - - [x] 百人一首之n - -
-
- 注入指令 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/inject"` - - - [x] run[CQ码] - -
-
- 煎蛋网无聊图 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/jandan"` - - - [x] 来份[屌|弔|吊]图 - - - [x] 更新[屌|弔|吊]图 - -
-
- 日语听力学习材料 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/jptingroom"` - - - [x] 随机日语听力 - - - [x] 随机日语歌曲 - - - [x] 日语听力 xxx - - - [x] 日语歌曲 xxx - -
-
- 疯狂星期四 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/kfccrazythursday"` - - - [x] 疯狂星期四 - -
-
- kokomi原神面板 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/kokomi"` - - - [x] kokomi菜单 - - - [x] XX面板 - - - 注:本插件未并入主仓库,需自行安装(须源码方式运行才能添加插件),安装地址[kokomi-原神面板查询插件](https://github.com/lianhong2758/kokomi-plugin) - -
-
- lolicon - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/lolicon"` - - - [x] 随机图片 - - - [x] 随机图片 萝莉|少女 - - - [x] 设置随机图片地址[http...] - - - 每一小时发一张图 -``` -记录在"@every 1h"触发的指令 -来份萝莉 -``` - -
-
- 桑帛云 API - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/lolimi"` - - - [x] 随机妹子 - - - [x] 随机绕口令 - - - [x] 颜值鉴定[图片] - - - [x] 随机情话 - - - [x] 发病 嘉然 - - - [x] 让[嘉然|塔菲|东雪莲|懒羊羊|科比|孙笑川|陈泽|丁真|空|荧|派蒙|纳西妲|阿贝多|温迪|枫原万叶|钟离|荒泷一斗|八重神子|艾尔海森|提纳里|迪希雅|卡维|宵宫|莱依拉|赛诺|诺艾尔|托马|凝光|莫娜|北斗|神里绫华|雷电将军|芭芭拉|鹿野院平藏|五郎|迪奥娜|凯亚|安柏|班尼特|琴|柯莱|夜兰|妮露|辛焱|珐露珊|魈|香菱|达达利亚|砂糖|早柚|云堇|刻晴|丽莎|迪卢克|烟绯|重云|珊瑚宫心海|胡桃|可莉|流浪者|久岐忍|神里绫人|甘雨|戴因斯雷布|优菈|菲谢尔|行秋|白术|九条裟罗|雷泽|申鹤|迪娜泽黛|凯瑟琳|多莉|坎蒂丝|萍姥姥|罗莎莉亚|留云借风真君|绮良良|瑶瑶|七七|奥兹|米卡|夏洛蒂|埃洛伊|博士|女士|大慈树王|三月七|娜塔莎|希露瓦|虎克|克拉拉|丹恒|希儿|布洛妮娅|瓦尔特|杰帕德|佩拉|姬子|艾丝妲|白露|星|穹|桑博|伦纳德|停云|罗刹|卡芙卡|彦卿|史瓦罗|螺丝咕姆|阿兰|银狼|素裳|丹枢|黑塔|景元|帕姆|可可利亚|半夏|符玄|公输师傅|奥列格|青雀|大毫|青镞|费斯曼|绿芙蓉|镜流|信使|丽塔|失落迷迭|缭乱星棘|伊甸|伏特加女孩|狂热蓝调|莉莉娅|萝莎莉娅|八重樱|八重霞|卡莲|第六夜想曲|卡萝尔|姬子|极地战刃|布洛妮娅|次生银翼|理之律者|真理之律者|迷城骇兔|希儿|魇夜星渊|黑希儿|帕朵菲莉丝|天元骑英|幽兰黛尔|德丽莎|月下初拥|朔夜观星|暮光骑士|明日香|李素裳|格蕾修|梅比乌斯|渡鸦|人之律者|爱莉希雅|爱衣|天穹游侠|琪亚娜|空之律者|终焉之律者|薪炎之律者|云墨丹心|符华|识之律者|维尔薇|始源之律者|芽衣|雷之律者|苏莎娜|阿波尼亚|陆景和|莫弈|夏彦|左然]说我测尼玛 - -
-
- MagicPrompt-Stable-Diffusion吟唱提示 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/magicprompt"` - - - [x] 吟唱提示[xxxx] - -
-
- 钓鱼模拟器 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/mcfish"` - - - [x] 钓鱼商店 - - [x] 购买xxx [数量] - - [x] 出售[xxx [数量]|所有垃圾] - - [x] 钓鱼背包 - - [x] 装备[xx竿|三叉戟|美西螈] - - [x] 附魔[诱钓|海之眷顾] - - [x] 修复鱼竿 - - [x] 合成[xx竿|三叉戟] - - [x] 进行钓鱼 - - [x] 进行n次钓鱼 - -
-
- 简易midi音乐制作 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/midicreate"` - - - [x] midi制作 CCGGAAGR FFEEDDCR GGFFEEDR GGFFEEDR CCGGAAGR FFEEDDCR - - - [x] 个人听音练习 - - - [x] 团队听音练习 - - - [x] *.mid (midi 转 txt) - - - [x] midi制作*.txt (txt 转 midi) - - - [x] 设置音色40 (0~127) - - - [x] 注: 该插件需要安装timidity, linux安装脚本可参考 https://gitcode.net/anto_july/midi/-/raw/master/timidity.sh, windows安装脚本可参考 https://gitcode.net/anto_july/midi/-/raw/master/timidity.bat?inline=false, windows需要管理员模式运行 - - - [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] 让[派蒙|空|荧|阿贝多|枫原万叶|温迪|八重神子|纳西妲|钟离|诺艾尔|凝光|托马|北斗|莫娜|荒泷一斗|提纳里|芭芭拉|艾尔海森|雷电将军|赛诺|琴|班尼特|五郎|神里绫华|迪希雅|夜兰|辛焱|安柏|宵宫|云堇|妮露|烟绯|鹿野院平藏|凯亚|达达利亚|迪卢克|可莉|早柚|香菱|重云|刻晴|久岐忍|珊瑚宫心海|迪奥娜|戴因斯雷布|魈|神里绫人|丽莎|优菈|凯瑟琳|雷泽|菲谢尔|九条裟罗|甘雨|行秋|胡桃|迪娜泽黛|柯莱|申鹤|砂糖|萍姥姥|奥兹|罗莎莉亚|式大将|哲平|坎蒂丝|托克|留云借风真君|昆钧|塞琉斯|多莉|大肉丸|莱依拉|散兵|拉赫曼|杜拉夫|阿守|玛乔丽|纳比尔|海芭夏|九条镰治|阿娜耶|阿晃|阿扎尔|七七|博士|白术|埃洛伊|大慈树王|女士|丽塔|失落迷迭|缭乱星棘|伊甸|伏特加女孩|狂热蓝调|莉莉娅|萝莎莉娅|八重樱|八重霞|卡莲|第六夜想曲|卡萝尔|姬子|极地战刃|布洛妮娅|次生银翼|理之律者|迷城骇兔|希儿|魇夜星渊|黑希儿|帕朵菲莉丝|天元骑英|幽兰黛尔|德丽莎|月下初拥|朔夜观星|暮光骑士|明日香|李素裳|格蕾修|梅比乌斯|渡鸦|人之律者|爱莉希雅|爱衣|天穹游侠|琪亚娜|空之律者|薪炎之律者|云墨丹心|符华|识之律者|维尔薇|芽衣|雷之律者|阿波尼亚]说(中文) - -
-
- 摸鱼 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/moyu"` - - - [x] /启用 moyu - - - [x] /禁用 moyu - -``` -记录在"0 10 * * *"触发的指令 -摸鱼提醒 -``` - -
-
- 摸鱼人日历 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/moyu_calendar"` - - - [x] /启用 moyucalendar - - - [x] /禁用 moyucalendar - -``` -记录在"30 8 * * *"触发的指令 -摸鱼人日历 -``` - -
-
- 点歌 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/music"` - - - [x] 点歌[xxx] - - - [x] 网易点歌[xxx] - - - [x] 酷我点歌[xxx] - - - [x] 酷狗点歌[xxx] - -
-
- 本地涩图 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nativesetu"` - - - [x] 本地[xxx] - - - [x] 刷新本地[xxx] - - - [x] 设置本地setu绝对路径[xxx] - - - [x] 刷新所有本地setu - - - [x] 所有本地setu分类 - - - 注:刷新文件夹较慢,请耐心等待刷新完成,会提示“成功”。 - -
-
- 拼音首字母释义工具 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nbnhhsh"` - - - [x] ?? [缩写] - -
-
- 日语语法学习 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nihongo"` - - - [x] 日语语法 [xxx] (使用tag随机) - - - [x] 搜索日语语法 [xxx] - -
-
- 牛牛大作战 - -`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/niuniu" ` - -- [x] 打胶 - -- [x] 使用[道具名称]打胶 - -- [x] jj[@xxx] - -- [x] 使用[道具名称]jj[@xxx] - -- [x] 赎牛牛 - -- [x] 牛牛商店 - -- [x] 牛牛背包 - -- [x] 注册牛牛 - -- [x] 注销牛牛 - -- [x] 牛子长度排行 - -- [x] 牛子深度排行 - -- [x] 查看我的牛牛 - -
-
- 小说 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/novel" ` - - - [x] 小说[xxx] - - - 设置小说配置 zerobot 123456 - - - 下载小说30298 - - - 注: 建议去https://www.23qb.com/ 注册一个账号, 小说下载有积分限制 - -
-
- nsfw图片识别 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nsfw"` - - - [x] nsfw打分[图片] - - - [x] 当图片属于非 neutral 类别时自动发送评价(默认禁用,启用输入 /启用 nsfwauto) - -
-
- 抽wife - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nwife"` - - - [x] 抽wife[@xxx] - - - [x] 添加wife[名字][图片] - - - [x] 删除wife[名字] - - - [x] [让 | 不让]所有人均可添加wife - - - 注:不同群添加后不会重叠 - -
-
- 浅草寺求签 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/omikuji"` - - - [x] 求签 | 占卜 - - - [x] 解签 - -
-
- 抽扑克 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/poker"` - - - [x] 抽扑克牌 - -
-
- 一群一天一夫一妻制群老婆 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/qqwife"` - - - 引入好感度系统,好感度越高,自由恋爱成功率越高 - - - [x] 设置CD为xx小时 - - - [x] [允许|禁止]自由恋爱 - - - [x] [允许|禁止]牛头人 - - - [x] 娶群友 - - - [x] [娶|嫁][@对方QQ] - - - [x] 当[对方Q号|@对方QQ]的小三 - - - [x] 做媒 @攻方QQ @受方QQ - - - [x] 买礼物给[对方Q号|@对方QQ] - - - [x] 群老婆列表 - - - [x] 查好感度[对方Q号|@对方QQ] - - - [x] 好感度列表 - - - [x] 重置花名册 - -
-
- qq空间表白墙 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/qzone"` - - - [x] 登录QQ空间 (Cookie过期很快, 要经常登录) - - - [x] 发说说[xxx] - - - [x] (匿名)发表白墙[xxx] - - - [x] [ 同意 | 拒绝 ]表白墙 1,2,3 (最后一个参数是表白墙的序号数组, 用英文逗号连接) - - - [x] 查看[ 等待 | 同意 | 拒绝 | 所有 ]表白墙 0 (最后一个参数是页码, 建议私聊审稿) - -
-
- Real-CUGAN清晰术 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/realcugan"` - - - [x] 清晰术(双重吟唱|三重吟唱|四重吟唱)(强力术式|中等术式|弱术式|不变式|原式)[图片] - -
-
- 投胎 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/reborn"` - - - [x] reborn - - - 注:本插件来源于[tgbot](https://github.com/YukariChiba/tgbot/blob/main/modules/Reborn.py) - -
-
- 打劫 - -`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/robbery"` - -- [x] 打劫[对方Q号|@对方QQ] - -
-
- 在线代码运行 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/runcode"` - - - [x] >runcode [language] help - - - [x] >runcode [language] [code block] - - - [x] >runcoderaw [language] [code block] - -
-
- 搜图 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/saucenao"` - - - [x] 以图搜图 | 搜索图片 | 以图识图[图片] - - - [x] 搜图[P站图片ID] - - - [x] 设置 saucenao api key [apikey] - -
-
- 签到得分 - -`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/score"` - - - [x] 签到 - - [x] 获得签到背景[@xxx] | 获得签到背景 - - [x] 设置签到预设(0~3) - - [x] 查看等级排名 - - 注:跨群排行 - - [x] 查看我的钱包 - - [x] 查看钱包排名 - - 注:本群排行,若群人数太多不建议使用该功能!!! - -
-
- 沙雕app - -`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/shadiao"` - -- [x] 哄我 -- [x] 渣我 -- [x] 来碗绿茶 -- [x] 发个朋友圈 -- [x] 来碗毒鸡汤 -- [x] 讲个段子 -- [x] 马丁路德骂我 - -
-
- shindan - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/shindan"` - - - [x] 今天是什么少女[@xxx] - - - [x] 异世界转生[@xxx] - - - [x] 卖萌[@xxx] - - - [x] 今日老婆[@xxx] - - - [x] 黄油角色[@xxx] - -
-
- steam - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/steam"` - - - [x] steam[添加|删除]订阅xxxxx - - - [x] steam查询订阅 - - - [x] steam绑定 api key xxxxxxx - - - [x] 查看apikey - - - [x] 拉取steam订阅 (使用job执行定时任务------记录在"@every 1m"触发的指令) - -
-
- 抽塔罗牌 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/tarot"` - - - [x] 抽[塔罗牌|大阿卡纳|小阿卡纳] - - [x] 抽n张[塔罗牌|大阿卡纳|小阿卡纳] - - [x] 解塔罗牌[牌名] - - [x] [塔罗|大阿卡纳|小阿卡纳|混合]牌阵[圣三角|时间之流|四要素|五牌阵|吉普赛十字|马蹄|六芒星] - -
-
- 舔狗日记 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/tiangou"` - - - [x] 舔狗日记 - -
-
- 搜番 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/tracemoe"` - - - [x] 搜番 | 搜索番剧[图片] - -
-
- 翻译 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/translation"` - - - [x] >TL 你好 - -
-
- vtb语录 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/vtb_quotation"` - - - [x] vtb语录 - - - [x] 随机vtb - - - [x] 更新vtb - -
-
- 钱包 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wallet"` - - - [x] 查看钱包排名 - - - [x] 设置硬币名称[ATRI币] - - - [x] 管理钱包余额[+金额|-金额][@xxx] - - - [x] 查看我的钱包|查看钱包余额[@xxx] - - - [x] 钱包转账[金额][@xxx] - - - 注:仅超级用户能"管理钱包余额", - -
-
- 据意查句 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wantquotes"` - - - [x] 据意查句 大海 - - - [x] 登录据意查句 - -
-
- 星际战甲 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/warframeapi"` - - - [x] wf时间同步 - - - [x] [金星|地球|火卫二]平原状态 - - - [x] .wm [物品名称] - - - [x] 仲裁 - - - [x] 警报 - - - [x] 每日特惠 -
-
- 百度文心AI - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wenxinAI"` - - 基于百度文心API的一些功能 - - key申请链接:https://wenxin.baidu.com/moduleApi/key - - - [x] 为[自己/本群/QQ号/群+群号]设置文心key [API Key] [Secret Key] - - - [x] 为[自己/本群/QQ号/群+群号]设置画图key [API Key] [Secret Key] - - 例:“为10086设置画图key 123 456”;“为群10010设置画图key 789 101” - - 文心key和画图key的API key 可以是相同的,只是文心key日限为200,画图日限为50,以此作区别。 - - - [x] 文心作文 (x字的)[作文题目] - - - [x] 文心提案 (x字的)[文案标题] - - - [x] 文心摘要 (x字的)[文章内容] - - - [x] 文心小说 (x字的)[小说上文] - - - [x] 文心对联 [上联] - - - [x] 文心问答 [问题] - - - [x] 文心补全 [带“_”的填空题] - - - [x] 文心自定义 [prompt] - - - [x] [bot名称]画几张[图片描述]的[图片类型][图片尺寸] - - 指令示例: - - - 文心作文 我的椛椛机器人 - - - 文心作文 300字的我的椛椛机器人 - - - 椛椛帮我画几张金凤凰,背景绚烂,高饱和,古风,仙境,高清,4K,古风的油画方图 - -
-
- 抽老婆 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wife"` - - - [x] 抽老婆 - -
-
- 聊天热词 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/word_count"` - - - [x] 热词 [群号] [消息数目]|热词 123456 1000 - -
-
- 猜单词 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wordle"` - - - [x] 个人猜单词 - - - [x] 团队猜单词 - - - [x] 团队六阶猜单词 - - - [x] 团队七阶猜单词 - -
-
- 鬼东西 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wtf"` - - - [x] 鬼东西列表 - - - [x] 查询鬼东西[序号][@xxx] - - - 注:由于需要科学,默认注释。 - -
-
- 一些游戏王插件 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ygo"` - - ##### 白鸽API卡查 - - ###### `"github.com/FloatTech/ZeroBot-Plugin/plugin/ygo/ygocdb.go"` - - [x] /ydp [xxx] - - [x] /yds [xxx] - - [x] /ydb [xxx] - - 注:[xxx]为搜索内容;p:返回一张图片;s:返回一张效果描述;b:高级搜索 - - ##### 集换社卡价查询 - - ###### `"github.com/FloatTech/ZeroBot-Plugin/plugin/ygo/ygotrade.go"` - - [x] 查卡价 [卡名] - - [x] 查卡价 [卡名] -r [稀有度 稀有度 ...] - - [x] 查卡店 [卡名] - - [x] 查卡店 [卡名] -r [稀有度] - - 注:卡店只支持单个稀有度查询 - -
-
- 月幕galgame图 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ymgal"` - - - [x] 随机galCG - - - [x] 随机gal表情包 - - - [x] galCG[xxx] - - - [x] gal表情包[xxx] - - - [x] 更新gal - -
-
- 遇见API - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/yujn"` - - - [x] 小姐姐视频 - - [x] 小姐姐视频2 - - [x] 黑丝视频 - - [x] 白丝视频 - - [x] 欲梦视频 - - [x] 甜妹视频 - - [x] 双倍快乐 - - [x] 纯情女高 - - [x] 萝莉视频 - - [x] 玉足视频 - - [x] 帅哥视频 - - [x] 热舞视频 - - [x] 吊带视频 - - [x] 汉服视频 - - [x] 极品狱卒 - - [x] 清纯视频 - - [x] 快手变装 - - [x] 抖音变装 - - [x] 萌娃视频 - - [x] 穿搭视频 - - [x] 完美身材 - - [x] 御姐撒娇 - - [x] 绿茶语音 - - [x] 怼人语音 - - [x] 随机骚话 - - [x] 随机污句子 - - [x] 随机美句 - - [x] 土味情话 - - [x] 让[lulu]说我测尼玛 - -
- -### *低优先级* - -
- 骂人 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/curse"` - - - [x] 骂我 - - - [x] 大力骂我 - -
-
- 人工智能回复 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/aireply"` - - - [x] @Bot 任意文本(任意一句话回复) - - - [x] 设置文字回复模式[婧枫|沫沫|青云客|小爱|ChatGPT] - - - [x] 设置 ChatGPT api key xxx - -
-
- 词典匹配回复 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/thesaurus"` - - - [x] 切换[kimo|傲娇|可爱]词库 - - [x] 设置词库触发概率0.x (0 -
- 打断复读 - - `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/breakrepeat"` - - - [x] (打断三次以上的复读) - -
- -## 三种使用方法,推荐第一种 - -### 1. 使用稳定版/测试版 (推荐) - -可以前往[Release](https://github.com/FloatTech/ZeroBot-Plugin/releases)页面下载对应系统版本可执行文件,编译时开启了全部插件。 -### 2. 本地直接运行 - -1. 下载安装最新 [Go](https://studygolang.com/dl) 环境 -2. 下载本项目[压缩包](https://github.com/FloatTech/ZeroBot-Plugin/archive/master.zip),本地解压 -3. 编辑 main.go 文件,内容按需修改 -4. 运行 OneBot 框架 -5. `Windows`下双击 run.bat 文件,`Linux`下使用 run.sh 运行本插件 - -### 3. 编译运行 - -#### a. 利用 Actions 在线编译 - -1. 点击右上角 Fork 本项目,并转跳到自己 Fork 的仓库 -2. 点击仓库上方的 Actions 按钮,确认使用 Actions -3. 编辑 main.go 文件,内容按需修改 -4. 前往 Release 页面发布一个 Release,`tag`形如`v1.2.3`,以触发稳定版编译流程 -5. 点击 Actions 按钮,等待编译完成,回到 Release 页面下载编译好的文件 -6. 运行 OneBot 框架,并同时运行本插件 -7. 啾咪~ - -#### b. 本地编译/交叉编译 - -1. 下载安装最新 [Go](https://studygolang.com/dl) 环境 -2. clone 并进入本项目,下载所需包 - -```bash -git clone --depth=1 https://github.com/FloatTech/ZeroBot-Plugin.git -cd ZeroBot-Plugin -go version -go env -w GOPROXY=https://goproxy.cn,direct -go env -w GO111MODULE=auto -go mod tidy -``` - -3. 编辑 main.go 文件,内容按需修改 -4. 按照平台输入命令编译,下面举了一些例子 - -```bash -# 本机平台 -go build -ldflags "-s -w" -o zerobot -trimpath -# x64 Linux 平台 如各种云服务器 -GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o zerobot -trimpath -# x64 Windows 平台 如大多数家用电脑 -GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o zerobot.exe -trimpath -# armv6 Linux 平台 如树莓派 zero W -GOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=0 go build -ldflags "-s -w" -o zerobot -trimpath -# (由于引入了github.com/fumiama/sqlite3,本项不再可用)mips Linux 平台 如 路由器 wndr4300 -GOOS=linux GOARCH=mips GOMIPS=softfloat CGO_ENABLED=0 go build -ldflags "-s -w" -o zerobot -trimpath -``` - -5. 运行 OneBot 框架,并同时运行本插件 - -## 特别感谢 - -- [ZeroBot](https://github.com/wdvxdr1123/ZeroBot) -- [ATRI](https://github.com/Kyomotoi/ATRI) - -同时感谢以下开发者对 ZeroBot-Plugin 作出的贡献: - - - - +
+ 椛 + zbp-uwu +
+ +

ZeroBot-Plugin

+ + “椛椛是[真寻](https://github.com/HibiKier/zhenxun_bot)的好朋友!” + + ZeroBot-Plugin 是 ZeroBot 的 实用插件合集

+ + +
+ + [![miraigo](https://img.shields.io/badge/OneBot-MiraiGo-green.svg?style=social&logo=appveyor)](https://github.com/Mrs4s/MiraiGo) + [![oicq](https://img.shields.io/badge/OneBot-OICQ-green.svg?style=social&logo=appveyor)](https://github.com/takayama-lily/oicq) + [![mirai](https://img.shields.io/badge/OneBot-Mirai-green.svg?style=social&logo=appveyor)](https://github.com/mamoe/mirai) + + + + [![go](https://goreportcard.com/badge/github.com/FloatTech/ZeroBot-Plugin?style=flat-square&logo=go)](https://goreportcard.com/badge/github.com/FloatTech/ZeroBot-Plugin) + [![onebot](https://img.shields.io/badge/onebot-v11-black?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABwCAMAAADxPgR5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxQTFRF////29vbr6+vAAAAk1hCcwAAAAR0Uk5T////AEAqqfQAAAKcSURBVHja7NrbctswDATQXfD//zlpO7FlmwAWIOnOtNaTM5JwDMa8E+PNFz7g3waJ24fviyDPgfhz8fHP39cBcBL9KoJbQUxjA2iYqHL3FAnvzhL4GtVNUcoSZe6eSHizBcK5LL7dBr2AUZlev1ARRHCljzRALIEog6H3U6bCIyqIZdAT0eBuJYaGiJaHSjmkYIZd+qSGWAQnIaz2OArVnX6vrItQvbhZJtVGB5qX9wKqCMkb9W7aexfCO/rwQRBzsDIsYx4AOz0nhAtWu7bqkEQBO0Pr+Ftjt5fFCUEbm0Sbgdu8WSgJ5NgH2iu46R/o1UcBXJsFusWF/QUaz3RwJMEgngfaGGdSxJkE/Yg4lOBryBiMwvAhZrVMUUvwqU7F05b5WLaUIN4M4hRocQQRnEedgsn7TZB3UCpRrIJwQfqvGwsg18EnI2uSVNC8t+0QmMXogvbPg/xk+Mnw/6kW/rraUlvqgmFreAA09xW5t0AFlHrQZ3CsgvZm0FbHNKyBmheBKIF2cCA8A600aHPmFtRB1XvMsJAiza7LpPog0UJwccKdzw8rdf8MyN2ePYF896LC5hTzdZqxb6VNXInaupARLDNBWgI8spq4T0Qb5H4vWfPmHo8OyB1ito+AysNNz0oglj1U955sjUN9d41LnrX2D/u7eRwxyOaOpfyevCWbTgDEoilsOnu7zsKhjRCsnD/QzhdkYLBLXjiK4f3UWmcx2M7PO21CKVTH84638NTplt6JIQH0ZwCNuiWAfvuLhdrcOYPVO9eW3A67l7hZtgaY9GZo9AFc6cryjoeFBIWeU+npnk/nLE0OxCHL1eQsc1IciehjpJv5mqCsjeopaH6r15/MrxNnVhu7tmcslay2gO2Z1QfcfX0JMACG41/u0RrI9QAAAABJRU5ErkJggg==)](https://t.me/zerobotplugin) + [![zerobot](https://img.shields.io/badge/zerobot-v1.7.4-black?style=flat-square&logo=go)](https://github.com/wdvxdr1123/ZeroBot) + + + + [![license](https://img.shields.io/github/license/FloatTech/ZeroBot-Plugin.svg?style=flat-square&logo=gnu)](https://raw.githubusercontent.com/FloatTech/ZeroBot-Plugin/master/LICENSE) + [![tencent-qq](https://img.shields.io/badge/%E7%BE%A4-1048452984-red?style=flat-square&logo=tencent-qq)](https://jq.qq.com/?_wv=1027&k=QMb7x1mM) + [![tencent-guild](https://img.shields.io/badge/%E9%A2%91%E9%81%93-Zer0BotPlugin-yellow?style=flat-square&logo=tencent-qq)](https://pd.qq.com/s/fjkx81mnr) + [![telegram](https://img.shields.io/badge/Telegram-click%20me-informational?style=flat-square&logo=telegram)](https://t.me/zerobotplugin) + + 本项目符合 [OneBot](https://github.com/howmanybots/onebot) 标准,可基于以下项目与机器人框架/平台进行交互 + | 项目地址 | 平台 | 核心作者 | 备注 | + | :---: | :---: | :---: | :---: | + | [LLOneBot](https://github.com/LLOneBot/LLOneBot) | NTQQ | linyuchen | 目前推荐使用 | + | [go-cqhttp](https://github.com/Mrs4s/go-cqhttp) | [MiraiGo](https://github.com/Mrs4s/MiraiGo) | Mrs4s | 因签名原因不再维护 | + | [onebot-kotlin](https://github.com/yyuueexxiinngg/onebot-kotlin) | [Mirai](https://github.com/mamoe/mirai) | yyuueexxiinngg | 不再积极维护 | + | [oicq/http-api](https://github.com/takayama-lily/oicq/tree/master/http-api) | [OICQ](https://github.com/takayama-lily/oicq) | takayama | 已归档不再维护 | + + [![Star Trend](https://api.star-history.com/svg?repos=FloatTech/ZeroBot-Plugin&type=Timeline)](https://seladb.github.io/StarTrack-js/#/preload?r=FloatTech,ZeroBot-Plugin) + +
+ +> 专为[后 go-cqhttp 时代](https://github.com/Mrs4s/go-cqhttp/issues/2471)开发迁移的`类zbp`新机器人现已出炉,基于官方api,稳定不风控: [NanoBot-Plugin](https://github.com/FloatTech/NanoBot-Plugin) + +> 如果您对开发插件感兴趣,欢迎加入[ZeroBot-Plugin-Playground](https://github.com/FloatTech/ZeroBot-Plugin-Playground) + +> webui持续开发中, 欢迎加入[ZeroBot-Plugin-Webui](https://github.com/FloatTech/ZeroBot-Plugin-Webui) + +## 命令行参数 +> `[]`代表是可选参数 +```bash +zerobot [-h] [-m] [-n nickname] [-t token] [-u url] [-g url] [-p prefix] [-d|w] [-c|s config.json] [-l latency] [-r ringlen] [-x max process time] [-mirror] [qq1 qq2 qq3 ...] [&] +``` +- **-h**: 显示帮助 +- **-m**: 不自动标记消息为已读 +- **-n nickname**: 设置默认昵称,默认为`椛椛` +- **-t token**: 设置`AccessToken`,默认为空 +- **-u url**: 设置`Url`,默认为`ws://127.0.0.1:6700` +- ~~**-g url**~~(默认禁用): 设置`webui url`,默认为`127.0.0.1:3000` +- **-p prefix**: 设置命令前缀,默认为`/` +- **-d|w**: 开启 debug | warning 级别及以上日志输出 +- **-c config.json**: 从`config.json`加载`bot`配置 +- **-s config.json**: 保存现在`bot`配置到`config.json` +- **-l latency**: 全局处理延时 (ms) +- **-r ringlen**: 接收消息环缓冲区大小,`0`为不设缓冲,并发处理 +- **-x max process time**: 最大处理时间 (min) +- **-mirror**: 直接使用镜像懒加载数据站而不尝试访问源站 +- **qqs**: superusers 的 qq 号 +- **&**: 驻留在后台,必须放在最后,仅`Linux`下有效 + +默认配置文件格式如下。当选择从配置文件加载时,将忽略相应命令行参数。 +```json +{ + "zero": { + "nickname": ["椛椛", "ATRI", "atri", "亚托莉", "アトリ"], + "command_prefix": "/", + "super_users": [], + "ring_len": 4096, + "latency": 233000000, + "max_process_time": 240000000000, + "mark_message": true + }, + "ws": [{ "Url": "ws://127.0.0.1:6700", "AccessToken": "" }], + "wss": null +} +``` + +## 功能 +> 在编译时,以下功能除插件控制外,均可通过注释`main.go`中的相应`import`而物理禁用,减小插件体积。 + +> 通过插件控制,还可动态管理某个功能在某个群的打开/关闭。 + +> 插件的优先级为`import`的先后顺序。 + +> `webui`默认禁用不编译,打开后会增加程序体积。 + +
+ 插件控制 + + - [x] /响应 (在发送的群/用户开始工作) + + - [x] /沉默 (在发送的群/用户停止工作) + + - [x] /全局响应 (在所有位置开始工作,无视单独的沉默) + + - [x] /全局沉默 (在所有本应沉默的位置停止工作,显式指定启用的位置不受影响) + + - [x] /启用 xxx (在发送的群/用户启用xxx) + + - [x] /禁用 xxx (在发送的群/用户禁用xxx) + + - [x] /此处启用所有插件 + + - [x] /此处禁用所有插件 + + - [x] /全局启用 xxx + + - [x] /全局禁用 xxx + + - [x] /还原 xxx (在发送的群/用户还原xxx的开启状态到初始状态) + + - 注:当全局未配置或与默认相同时,状态取决于单独配置,后备为默认配置;当全局与默认不同时,状态取决于全局配置,单独配置失效。 + + - [x] /改变默认启用状态 xxx + + - [x] /禁止 service qq1 qq2... (禁止 qqs 使用服务 service) + + - [x] /允许 service qq1 qq2... (重新允许 qqs 使用服务 service) + + - [x] /封禁 qq1 qq2... (禁止 qqs 使用全部服务) + + - [x] /解封 qq1 qq2... (允许 qqs 使用全部服务) + + - [x] /用法 xxx + + - [x] /服务列表 + + - [x] /设置服务列表显示行数 xx (默认值为 9, 该设置仅运行时有效, zbp 重启后重置) + + - [x] (默认禁用) /设置webui用户名 zerobot 密码 123456 + + - [x] (默认禁用) /webui启动 + + - [x] (默认禁用) /webui停止 + + - [x] @Bot 插件冲突检测 (会在本群发送一条消息并在约 1s 后撤回以检测其它同类 bot 中已启用的插件并禁用) + +
+
+ 动态加载插件 + + `import _ "github.com/FloatTech/ZeroBot-Plugin-Dynamic/dyloader"` + + - 本功能需要`cgo`,故已分离出主线。详见[ZeroBot-Plugin-Dynamic](https://github.com/FloatTech/ZeroBot-Plugin-Dynamic) + +
+ +### *高优先级* +
+ 聊天 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chat"` + + - [x] [BOT名字] + + - [x] [戳一戳BOT] + + - [x] 空调开 + + - [x] 空调关 + + - [x] 群温度 + + - [x] 设置温度[正整数] + +
+
+ 聊天时长统计 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chatcount"` + + - [x] 查询水群@xxx + + - [x] 查看水群排名 + +
+
+ 睡眠管理 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/sleep_manage"` + + - [x] 早安 | 晚安 + +
+
+ ATRI + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/atri" + ` + - [x] 具体指令看 /用法 atri + + - 注:本插件基于 [ATRI](https://github.com/Kyomotoi/ATRI) ,为 Golang 移植版 + +
+
+ 群管 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/manager"` + + - [x] 禁言[@xxx][分钟] + + - [x] 解除禁言[@xxx] + + - [x] 我要自闭 | 禅定 x [分钟 | 小时 | 天] + + - [x] 开启全员禁言 + + - [x] 解除全员禁言 + + - [x] 升为管理[@xxx] + + - [x] 取消管理[@xxx] + + - [x] 修改名片[@xxx][xxx] + + - [x] 修改头衔[@xxx][xxx] + + - [x] 申请头衔[xxx] + + - [x] 踢出群聊[@xxx] + + - [x] 退出群聊[群号]@Bot + + - [x] \*入群欢迎 + + - [x] \*退群通知 + + - [x] 设置欢迎语[欢迎~] 可选添加 [{at}] [{nickname}] [{avatar}] [{id}] + + - [x] 在[MM]月[dd]日的[hh]点[mm]分时(用[url])提醒大家[xxx] + + - [x] 在[MM]月[每周 | 周几]的[hh]点[mm]分时(用[url])提醒大家[xxx] + + - [x] 取消在[MM]月[dd]日的[hh]点[mm]分的提醒 + + - [x] 取消在[MM]月[每周 | 周几]的[hh]点[mm]分的提醒 + + - [x] 在"cron"时(用[url])提醒大家[xxx] + + - [x] 取消在"cron"的提醒 + + - [x] 列出所有提醒 + + - [x] 翻牌 + + - [x] 赞我 + + - [x] [开启 | 关闭]入群验证 + + - [x] [开启 | 关闭]gist加群自动审批 + + - [x] 对信息回复:[设置 | 取消]精华 + + - [x] 取消精华 [信息ID] + + - [x] /精华列表 + + - [ ] 同意好友请求 + + - [x] 对信息回复: 撤回 + + - [ ] 警告[@xxx] + + - 注:使用gist加群自动审批,请在群介绍添加以下说明,同时开启`需要回答问题并由管理员审核`:加群请在github新建一个gist,其文件名为本群群号的字符串的md5(小写),内容为一行,是当前unix时间戳(10分钟内有效)。然后请将您的用户名和gist哈希(小写)按照username/gisthash的格式填写到回答即可。 + + - 设置欢迎语可选添加参数说明:{at}可在发送时艾特被欢迎者 {nickname}是被欢迎者名字 {avatar}是被欢迎者头像 {uid}是被欢迎者QQ号 {gid}是当前群群号 {groupname} 是当前群群名 + +
+
+ 定时指令触发器 + + `import _ "github.com/FloatTech/zbputils/job"` + + - 注意:触发器具有限速,每 2s 仅允许最多一次触发 + + - [x] 记录以"完全匹配关键词"触发的(代表我执行的)指令 + + - [x] 取消以"完全匹配关键词"触发的(代表我执行的)指令 + + - [x] 记录在"cron"触发的(别名xxx的)指令 + + - [x] 取消在"cron"触发的指令 + + - [x] 查看所有触发指令 + + - [x] 查看在"cron"触发的指令 + + - [x] 查看以"完全匹配关键词"触发的(代表我执行的)指令 + + - [x] 注入指令结果:任意指令 + + - [x] 执行指令:任意指令 + + - 注:任意指令可以使用形如`?::参数1提示语::1!`,`?::参数2提示语::2!`,`?::?可选参数3提示语,不回答将填入空值::3!`,`!::从url获取的参数::4!`,`!::?可选的从url获取的参数,出错将填入空值::5!`的未定参数,在注入时一一匹配 + + - 一些示例 + +> 每日9:30推送摸鱼人日历 + +``` +记录在"30 9 * * *"触发的指令 +run[CQ:image,file=https://api.vvhan.com/api/moyu] +``` + +> 每日12:00以1/2概率执行coser指令 + +```python +记录在"0 12 * * *"触发的指令 +注入指令结果:>runcoderaw py +from random import random +if random() > 0.5: print('coser') +else: print('今天没有coser哦~') +``` + +> 每日15:00询问设置定时者否想看coser + +```python +记录在"0 15 * * *"触发的指令 +注入指令结果:>runcoderaw py +if '?::想看coser吗?::1!' == '想': print('coser') +else: print('好吧') +``` + +> 自行编写简易的选择困难症助手小插件 + +```python +记录以"简易的选择困难症助手"触发的指令 +执行指令:>runcoderaw py +from random import random +if random() > 0.5: print('您最终会选?::请输入您的选择1::1!') +else: print('您最终会选?::请输入您的选择2::2!') +简易的选择困难症助手 +``` + +> 自行编写随机b站404页趣图插件 + +```python +记录以"随机b站404页趣图"触发的代表我执行的指令 +注入指令结果:>runcoderaw py +import json +j = json.loads(r'''!::https://api.iyk0.com/bili_chart::1!''') +print("run[CQ:image,file="+j["img"]+"]") +随机b站404页趣图 +``` + +![随机b站404页趣图](https://user-images.githubusercontent.com/41315874/157371451-c09ad3bb-c61a-4a42-9c47-fab3305bc0f8.png) + + - [x] [我|大家|有人][说|问][正则表达式]你[答|说|做|执行][模版] + + - [x] [查看|看看][我|大家|有人][说|问][正则表达式] + + - [x] 删除[大家|有人|我][说|问|让你做|让你执行][正则表达式] + + - 注:模版是指含有`$1` `$2`这样的未定参数,会在正则匹配时按顺序填入子匹配对应值 + +
+ +### *中优先级* +
+ ahsai tts + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ahsai"` + + - [x] 使[ 伊織弓鶴 | 紲星あかり | 結月ゆかり | 京町セイカ |東北きりたん | 東北イタコ | ついなちゃん標準語 | ついなちゃん関西弁 | 音街ウナ | 琴葉茜 | 吉田くん | 民安ともえ | 桜乃そら | 月読アイ | 琴葉葵 | 東北ずん子 | 月読ショウタ | 水奈瀬コウ ]说(日语) + +
+
+ AIfalse + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ai_false"` + + - [x] 查询计算机当前活跃度: [检查身体 | 自检 | 启动自检 | 系统状态] + + - [x] 设置默认限速为每 m [分钟 | 秒] n 次触发 + +
+
+ AIWife + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/aiwife"` + + - [x] waifu | 随机waifu(从[100000个AI生成的waifu](https://www.thiswaifudoesnotexist.net/)中随机一位) + +
+
+ 支付宝到账语音 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/alipayvoice"` + + - [x] 支付宝到账 1 + +
+
+ 触发者撤回时也自动撤回 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/autowithdraw"` + + - [x] 撤回一条消息 + +
+
+ base16384加解密 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/b14"` + + - [x] 加密xxx + + - [x] 解密xxx + + - [x] 用yyy加密xxx + + - [x] 用yyy解密xxx + +
+
+ 百度内容审核 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/baiduaudit"` + + - [x] 获取BDAkey + + - [x] 配置BDAKey [API Key] [Secret Key] + + - [x] 获取BDAkey + + - [x] [开启|关闭]内容审核 + + - [x] [开启|关闭]撤回提示 + + - [x] [开启|关闭]详细提示 + + - [x] [开启|关闭]撤回禁言 + + - [x] [开启|关闭]禁言累加 + + - [x] [开启|关闭]文本检测 + + - [x] [开启|关闭]图像检测 + + - [x] 设置最大禁言时间[分钟,默认:60,最大43200] + + - [x] 设置每次累加时间[分钟,默认:1] + + - [x] 设置撤回禁言时间[分钟,默认:1] + + - [x] 查看检测类型 + + - [x] 查看检测配置 + + - [x] 测试文本检测[文本内容] + + - [x] 测试图像检测[图片] + + - [x] 设置检测类型[类型编号] + + - [x] 设置不检测类型[类型编号] + + 检测类型编号列表:[1:违禁违规|2:文本色情|3:敏感信息|4:恶意推广|5:低俗辱骂|6:恶意推广-联系方式|7:恶意推广-软文推广] +
+
+ base64卦加解密 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/base64gua"` + + - [x] 六十四卦加密xxx + + - [x] 六十四卦解密xxx + + - [x] 六十四卦用yyy加密xxx + + - [x] 六十四卦用yyy解密xxx + +
+
+ base天城文加解密 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/baseamasiro"` + + - [x] 天城文加密xxx + + - [x] 天城文解密xxx + + - [x] 天城文用yyy加密xxx + + - [x] 天城文用yyy解密xxx + +
+
+ bilibili + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili"` + + - [x] >vup info [xxx] + + - [x] >user info [xxx] + + - [x] 查成分 [xxx] + + - [x] 查弹幕 [xxx] 2 (最后一个参数是页码) + + - [x] 设置b站cookie b_ut=7;buvid3=0;i-wanna-go-back=-1;innersign=0; (最好把cookie设全) + + 获取Cookie可以使用[这个工具](https://github.com/XiaoMiku01/login_bili_go) + + - [x] 更新vup + +
+
+ b站动态、专栏、视频、直播解析 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili"` + + - [x] t.bilibili.com/642277677329285174 | bilibili.com/read/cv17134450 | bilibili.com/video/BV13B4y1x7pS | live.bilibili.com/22603245 + +
+
+ b站动态、直播推送,需要配合job一起使用 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili"` + + - [x] 添加b站订阅[uid|name] + + - [x] 取消b站订阅[uid|name] + + - [x] 取消b站动态订阅[uid|name] + + - [x] 取消b站直播订阅[uid|name] + + - [x] b站推送列表 + + - [x] 拉取b站推送 (使用job执行定时任务------记录在"@every 5m"触发的指令) + +
+
+ 书评 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/book_review"` + + - [x] 书评[xxx] + + - [x] 随机书评 + +
+
+ 选择困难症帮手 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/choose"` + + - [x] 选择[选择项1]还是[选项2]还是[更多选项] + +
+
+ 抽象话 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chouxianghua"` + + - [x] 抽象翻译[xxx] + +
+
+ 英文字符翻转 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chrev"` + + - [x] 翻转 I love you + +
+
+ coser + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/coser" ` + + - [x] coser + +
+
+ cp短打 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/cpstory"` + + - [x] 组cp[@xxx][@xxx] + + - [x] 磕cp大老师 雪乃 + +
+
+ 今日早报 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/dailynews"` + + - [x] 今日早报 + +
+
+ DeepDanbooru二次元图标签识别 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/danbooru"` + + - [x] 鉴赏图片[图片] + +
+
+ 嘉然 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/diana"` + + - [x] 小作文 + + - [x] 发大病 + + - [x] 教你一篇小作文[作文] + +
+
+ 程序员做饭指南 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/dish"` + + - [x] 怎么做 | 烹饪[菜名] + + - [x] 随机菜谱 | 随便做点菜 + +
+
+ 多功能抽签 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/drawlots"` + + 支持图包文件夹和gif抽签 + + - [x] (刷新)抽签列表 + + - [x] 抽[签名]签 + + - [x] 看签[gif签名] + + - [x] 加签[签名][gif图片] + + - [x] 删签[gif签名] + +
+
+ 漂流瓶 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/drift_bottle"` + + - [x] @Bot pick (随机捞一个漂流瓶) + + - [x] @Bot throw xxx (投递内容xxx,支持图片文字,投递内容需要大于10个字符或者带有图片) + +
+
+ 合成emoji + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/emojimix"` + + - [x] [emoji][emoji] + +
+
+ 颜文字抽象转写 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/emozi"` + + - [x] 抽象转写[文段] + - [x] 抽象还原[文段] + - [x] 抽象登录[用户名] + +
+
+ 好友申请及群聊邀请事件处理 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/event"` + + - [x] [开启|关闭]自动同意[申请|邀请|主人] + + - [x] [同意|拒绝][申请|邀请][flag] + + - flag跟随事件一起发送, 默认同意主人的事件 + +
+
+ 渲染任意文字到图片 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/font"` + + - [x] (用[终末体|终末变体|紫罗兰体|樱酥体|Consolas体|粗苹方体|未来荧黑体|Gugi体|八丸体|Impact体|猫啃体|苹方体])渲染(抖动)文字xxx + +
+
+ 每日运势 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/fortune"` + + - [x] 运势 | 抽签 + + - [x] 设置底图[车万 DC4 爱因斯坦 星空列车 樱云之恋 富婆妹 李清歌 公主连结 原神 明日方舟 碧蓝航线 碧蓝幻想 战双 阴阳师 赛马娘 东方归言录 奇异恩典 夏日口袋 ASoul Hololive] + +
+
+ 笑话 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/funny"` + + - [x] 讲个笑话[@xxx|qq号|人名] | 夸夸[@xxx|qq号|人名] + +
+
+ 原神抽卡 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/genshin"` + + - [x] 切换原神卡池 + + - [x] 原神十连 + +
+
+ gif + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/gif"` + + - [x] 爬[@xxx] + + - [x] 摸[@xxx] + + - [x] 搓[@xxx] + + - 注:更多指令见项目 --> https://github.com/FloatTech/ZeroBot-Plugin-Gif + +
+
+ GitHub仓库搜索 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/github"` + + - [x] >github [xxx] + + - [x] >github -p [xxx] + +
+
+ 猜歌 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/guessmusic"` + + 猜歌插件(该插件依赖ffmpeg) + + ---------主 人 指 令--------- + - [x] 设置猜歌歌库路径 [绝对路径] + - [x] [创建/删除]歌单 [歌单名称] + - [x] 下载歌曲[歌曲名称/网易云歌曲ID]到[歌单名称] + + -------管 理 员 指 令-------- + - [x] 设置猜歌默认歌单 [歌单名称] + - [x] 上传歌曲[群文件的音乐名]到[歌单名称] + + ------公 用 指 令------ + - [x] 歌单列表 + - [x] [个人/团队]猜歌 + + ------插 件 扩 展------ + + - 本插件内置了[NeteaseCloudMusicApi](https://binaryify.github.io/NeteaseCloudMusicApi/#/)框架的一些功能 + - [x] 设置猜歌API帮助 + - [x] 设置猜歌API [API首页网址] + - [x] 猜歌[开启/关闭][歌单/歌词]自动下载 + - [ ] 登录网易云 + - [x] 歌单信息 [网易云歌单链接/ID] + - [x] [歌单名称]绑定网易云[网易云歌单链接/ID] + - [x] 下载歌单[网易云歌单链接/ID]到[歌单名称] + - [x] 解除绑定 [歌单名称] + +
+
+ 一言 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/hitokoto"` + + - [x] 一言[xxx] + + - [x] 系列一言 + +
+
+ 炉石 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/hs"` + + - [x] 搜卡[xxxx] + + - [x] [卡组代码xxx] + + - 注:更多搜卡指令参数:https://hs.fbigame.com/misc/searchhelp + +
+
+ 百人一首 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/hyaku"` + + - [x] 百人一首 + + - [x] 百人一首之n + +
+
+ 注入指令 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/inject"` + + - [x] run[CQ码] + +
+
+ 煎蛋网无聊图 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/jandan"` + + - [x] 来份[屌|弔|吊]图 + + - [x] 更新[屌|弔|吊]图 + +
+
+ 日语听力学习材料 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/jptingroom"` + + - [x] 随机日语听力 + + - [x] 随机日语歌曲 + + - [x] 日语听力 xxx + + - [x] 日语歌曲 xxx + +
+
+ 疯狂星期四 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/kfccrazythursday"` + + - [x] 疯狂星期四 + +
+
+ kokomi原神面板 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/kokomi"` + + - [x] kokomi菜单 + + - [x] XX面板 + + - 注:本插件未并入主仓库,需自行安装(须源码方式运行才能添加插件),安装地址[kokomi-原神面板查询插件](https://github.com/lianhong2758/kokomi-plugin) + +
+
+ lolicon + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/lolicon"` + + - [x] 随机图片 + + - [x] 随机图片 萝莉|少女 + + - [x] 设置随机图片地址[http...] + + - 每一小时发一张图 +``` +记录在"@every 1h"触发的指令 +来份萝莉 +``` + +
+
+ 桑帛云 API + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/lolimi"` + + - [x] 随机妹子 + + - [x] 随机绕口令 + + - [x] 颜值鉴定[图片] + + - [x] 随机情话 + + - [x] 发病 嘉然 + + - [x] 让[嘉然|塔菲|东雪莲|懒羊羊|科比|孙笑川|陈泽|丁真|空|荧|派蒙|纳西妲|阿贝多|温迪|枫原万叶|钟离|荒泷一斗|八重神子|艾尔海森|提纳里|迪希雅|卡维|宵宫|莱依拉|赛诺|诺艾尔|托马|凝光|莫娜|北斗|神里绫华|雷电将军|芭芭拉|鹿野院平藏|五郎|迪奥娜|凯亚|安柏|班尼特|琴|柯莱|夜兰|妮露|辛焱|珐露珊|魈|香菱|达达利亚|砂糖|早柚|云堇|刻晴|丽莎|迪卢克|烟绯|重云|珊瑚宫心海|胡桃|可莉|流浪者|久岐忍|神里绫人|甘雨|戴因斯雷布|优菈|菲谢尔|行秋|白术|九条裟罗|雷泽|申鹤|迪娜泽黛|凯瑟琳|多莉|坎蒂丝|萍姥姥|罗莎莉亚|留云借风真君|绮良良|瑶瑶|七七|奥兹|米卡|夏洛蒂|埃洛伊|博士|女士|大慈树王|三月七|娜塔莎|希露瓦|虎克|克拉拉|丹恒|希儿|布洛妮娅|瓦尔特|杰帕德|佩拉|姬子|艾丝妲|白露|星|穹|桑博|伦纳德|停云|罗刹|卡芙卡|彦卿|史瓦罗|螺丝咕姆|阿兰|银狼|素裳|丹枢|黑塔|景元|帕姆|可可利亚|半夏|符玄|公输师傅|奥列格|青雀|大毫|青镞|费斯曼|绿芙蓉|镜流|信使|丽塔|失落迷迭|缭乱星棘|伊甸|伏特加女孩|狂热蓝调|莉莉娅|萝莎莉娅|八重樱|八重霞|卡莲|第六夜想曲|卡萝尔|姬子|极地战刃|布洛妮娅|次生银翼|理之律者|真理之律者|迷城骇兔|希儿|魇夜星渊|黑希儿|帕朵菲莉丝|天元骑英|幽兰黛尔|德丽莎|月下初拥|朔夜观星|暮光骑士|明日香|李素裳|格蕾修|梅比乌斯|渡鸦|人之律者|爱莉希雅|爱衣|天穹游侠|琪亚娜|空之律者|终焉之律者|薪炎之律者|云墨丹心|符华|识之律者|维尔薇|始源之律者|芽衣|雷之律者|苏莎娜|阿波尼亚|陆景和|莫弈|夏彦|左然]说我测尼玛 + +
+
+ MagicPrompt-Stable-Diffusion吟唱提示 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/magicprompt"` + + - [x] 吟唱提示[xxxx] + +
+
+ 钓鱼模拟器 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/mcfish"` + + - [x] 钓鱼商店 + - [x] 购买xxx [数量] + - [x] 出售[xxx [数量]|所有垃圾] + - [x] 钓鱼背包 + - [x] 装备[xx竿|三叉戟|美西螈] + - [x] 附魔[诱钓|海之眷顾] + - [x] 修复鱼竿 + - [x] 合成[xx竿|三叉戟] + - [x] 进行钓鱼 + - [x] 进行n次钓鱼 + +
+
+ 简易midi音乐制作 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/midicreate"` + + - [x] midi制作 CCGGAAGR FFEEDDCR GGFFEEDR GGFFEEDR CCGGAAGR FFEEDDCR + + - [x] 个人听音练习 + + - [x] 团队听音练习 + + - [x] *.mid (midi 转 txt) + + - [x] midi制作*.txt (txt 转 midi) + + - [x] 设置音色40 (0~127) + + - [x] 注: 该插件需要安装timidity, linux安装脚本可参考 https://gitcode.net/anto_july/midi/-/raw/master/timidity.sh, windows安装脚本可参考 https://gitcode.net/anto_july/midi/-/raw/master/timidity.bat?inline=false, windows需要管理员模式运行 + + - [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] 让[派蒙|空|荧|阿贝多|枫原万叶|温迪|八重神子|纳西妲|钟离|诺艾尔|凝光|托马|北斗|莫娜|荒泷一斗|提纳里|芭芭拉|艾尔海森|雷电将军|赛诺|琴|班尼特|五郎|神里绫华|迪希雅|夜兰|辛焱|安柏|宵宫|云堇|妮露|烟绯|鹿野院平藏|凯亚|达达利亚|迪卢克|可莉|早柚|香菱|重云|刻晴|久岐忍|珊瑚宫心海|迪奥娜|戴因斯雷布|魈|神里绫人|丽莎|优菈|凯瑟琳|雷泽|菲谢尔|九条裟罗|甘雨|行秋|胡桃|迪娜泽黛|柯莱|申鹤|砂糖|萍姥姥|奥兹|罗莎莉亚|式大将|哲平|坎蒂丝|托克|留云借风真君|昆钧|塞琉斯|多莉|大肉丸|莱依拉|散兵|拉赫曼|杜拉夫|阿守|玛乔丽|纳比尔|海芭夏|九条镰治|阿娜耶|阿晃|阿扎尔|七七|博士|白术|埃洛伊|大慈树王|女士|丽塔|失落迷迭|缭乱星棘|伊甸|伏特加女孩|狂热蓝调|莉莉娅|萝莎莉娅|八重樱|八重霞|卡莲|第六夜想曲|卡萝尔|姬子|极地战刃|布洛妮娅|次生银翼|理之律者|迷城骇兔|希儿|魇夜星渊|黑希儿|帕朵菲莉丝|天元骑英|幽兰黛尔|德丽莎|月下初拥|朔夜观星|暮光骑士|明日香|李素裳|格蕾修|梅比乌斯|渡鸦|人之律者|爱莉希雅|爱衣|天穹游侠|琪亚娜|空之律者|薪炎之律者|云墨丹心|符华|识之律者|维尔薇|芽衣|雷之律者|阿波尼亚]说(中文) + +
+
+ 摸鱼 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/moyu"` + + - [x] /启用 moyu + + - [x] /禁用 moyu + +``` +记录在"0 10 * * *"触发的指令 +摸鱼提醒 +``` + +
+
+ 摸鱼人日历 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/moyu_calendar"` + + - [x] /启用 moyucalendar + + - [x] /禁用 moyucalendar + +``` +记录在"30 8 * * *"触发的指令 +摸鱼人日历 +``` + +
+
+ 点歌 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/music"` + + - [x] 点歌[xxx] + + - [x] 网易点歌[xxx] + + - [x] 酷我点歌[xxx] + + - [x] 酷狗点歌[xxx] + +
+
+ 本地涩图 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nativesetu"` + + - [x] 本地[xxx] + + - [x] 刷新本地[xxx] + + - [x] 设置本地setu绝对路径[xxx] + + - [x] 刷新所有本地setu + + - [x] 所有本地setu分类 + + - 注:刷新文件夹较慢,请耐心等待刷新完成,会提示“成功”。 + +
+
+ 拼音首字母释义工具 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nbnhhsh"` + + - [x] ?? [缩写] + +
+
+ 日语语法学习 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nihongo"` + + - [x] 日语语法 [xxx] (使用tag随机) + + - [x] 搜索日语语法 [xxx] + +
+
+ 牛牛大作战 + +`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/niuniu" ` + +- [x] 打胶 + +- [x] 使用[道具名称]打胶 + +- [x] jj[@xxx] + +- [x] 使用[道具名称]jj[@xxx] + +- [x] 赎牛牛 + +- [x] 出售牛牛 + +- [x] 牛牛商店 + +- [x] 牛牛背包 + +- [x] 注册牛牛 + +- [x] 注销牛牛 + +- [x] 牛子长度排行 + +- [x] 牛子深度排行 + +- [x] 查看我的牛牛 + +
+
+ 小说 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/novel" ` + + - [x] 小说[xxx] + + - 设置小说配置 zerobot 123456 + + - 下载小说30298 + + - 注: 建议去https://www.23qb.com/ 注册一个账号, 小说下载有积分限制 + +
+
+ nsfw图片识别 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nsfw"` + + - [x] nsfw打分[图片] + + - [x] 当图片属于非 neutral 类别时自动发送评价(默认禁用,启用输入 /启用 nsfwauto) + +
+
+ 抽wife + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/nwife"` + + - [x] 抽wife[@xxx] + + - [x] 添加wife[名字][图片] + + - [x] 删除wife[名字] + + - [x] [让 | 不让]所有人均可添加wife + + - 注:不同群添加后不会重叠 + +
+
+ 浅草寺求签 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/omikuji"` + + - [x] 求签 | 占卜 + + - [x] 解签 + +
+
+ 抽扑克 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/poker"` + + - [x] 抽扑克牌 + +
+
+ 一群一天一夫一妻制群老婆 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/qqwife"` + + - 引入好感度系统,好感度越高,自由恋爱成功率越高 + + - [x] 设置CD为xx小时 + + - [x] [允许|禁止]自由恋爱 + + - [x] [允许|禁止]牛头人 + + - [x] 娶群友 + + - [x] [娶|嫁][@对方QQ] + + - [x] 当[对方Q号|@对方QQ]的小三 + + - [x] 做媒 @攻方QQ @受方QQ + + - [x] 买礼物给[对方Q号|@对方QQ] + + - [x] 群老婆列表 + + - [x] 查好感度[对方Q号|@对方QQ] + + - [x] 好感度列表 + + - [x] 重置花名册 + +
+
+ qq空间表白墙 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/qzone"` + + - [x] 登录QQ空间 (Cookie过期很快, 要经常登录) + + - [x] 发说说[xxx] + + - [x] (匿名)发表白墙[xxx] + + - [x] [ 同意 | 拒绝 ]表白墙 1,2,3 (最后一个参数是表白墙的序号数组, 用英文逗号连接) + + - [x] 查看[ 等待 | 同意 | 拒绝 | 所有 ]表白墙 0 (最后一个参数是页码, 建议私聊审稿) + +
+
+ Real-CUGAN清晰术 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/realcugan"` + + - [x] 清晰术(双重吟唱|三重吟唱|四重吟唱)(强力术式|中等术式|弱术式|不变式|原式)[图片] + +
+
+ 投胎 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/reborn"` + + - [x] reborn + + - 注:本插件来源于[tgbot](https://github.com/YukariChiba/tgbot/blob/main/modules/Reborn.py) + +
+
+ 打劫 + +`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/robbery"` + +- [x] 打劫[对方Q号|@对方QQ] + +
+
+ 在线代码运行 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/runcode"` + + - [x] >runcode [language] help + + - [x] >runcode [language] [code block] + + - [x] >runcoderaw [language] [code block] + +
+
+ 搜图 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/saucenao"` + + - [x] 以图搜图 | 搜索图片 | 以图识图[图片] + + - [x] 搜图[P站图片ID] + + - [x] 设置 saucenao api key [apikey] + +
+
+ 签到得分 + +`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/score"` + + - [x] 签到 + - [x] 获得签到背景[@xxx] | 获得签到背景 + - [x] 设置签到预设(0~3) + - [x] 查看等级排名 + - 注:跨群排行 + - [x] 查看我的钱包 + - [x] 查看钱包排名 + - 注:本群排行,若群人数太多不建议使用该功能!!! + +
+
+ 沙雕app + +`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/shadiao"` + +- [x] 哄我 +- [x] 渣我 +- [x] 来碗绿茶 +- [x] 发个朋友圈 +- [x] 来碗毒鸡汤 +- [x] 讲个段子 +- [x] 马丁路德骂我 + +
+
+ shindan + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/shindan"` + + - [x] 今天是什么少女[@xxx] + + - [x] 异世界转生[@xxx] + + - [x] 卖萌[@xxx] + + - [x] 今日老婆[@xxx] + + - [x] 黄油角色[@xxx] + +
+
+ steam + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/steam"` + + - [x] steam[添加|删除]订阅xxxxx + + - [x] steam查询订阅 + + - [x] steam绑定 api key xxxxxxx + + - [x] 查看apikey + + - [x] 拉取steam订阅 (使用job执行定时任务------记录在"@every 1m"触发的指令) + +
+
+ 抽塔罗牌 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/tarot"` + + - [x] 抽[塔罗牌|大阿卡纳|小阿卡纳] + - [x] 抽n张[塔罗牌|大阿卡纳|小阿卡纳] + - [x] 解塔罗牌[牌名] + - [x] [塔罗|大阿卡纳|小阿卡纳|混合]牌阵[圣三角|时间之流|四要素|五牌阵|吉普赛十字|马蹄|六芒星] + +
+
+ 舔狗日记 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/tiangou"` + + - [x] 舔狗日记 + +
+
+ 搜番 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/tracemoe"` + + - [x] 搜番 | 搜索番剧[图片] + +
+
+ 翻译 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/translation"` + + - [x] >TL 你好 + +
+
+ vtb语录 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/vtb_quotation"` + + - [x] vtb语录 + + - [x] 随机vtb + + - [x] 更新vtb + +
+
+ 钱包 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wallet"` + + - [x] 查看钱包排名 + + - [x] 设置硬币名称[ATRI币] + + - [x] 管理钱包余额[+金额|-金额][@xxx] + + - [x] 查看我的钱包|查看钱包余额[@xxx] + + - [x] 钱包转账[金额][@xxx] + + - 注:仅超级用户能"管理钱包余额", + +
+
+ 据意查句 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wantquotes"` + + - [x] 据意查句 大海 + + - [x] 登录据意查句 + +
+
+ 星际战甲 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/warframeapi"` + + - [x] wf时间同步 + + - [x] [金星|地球|火卫二]平原状态 + + - [x] .wm [物品名称] + + - [x] 仲裁 + + - [x] 警报 + + - [x] 每日特惠 +
+
+ 百度文心AI + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wenxinAI"` + + 基于百度文心API的一些功能 + + key申请链接:https://wenxin.baidu.com/moduleApi/key + + - [x] 为[自己/本群/QQ号/群+群号]设置文心key [API Key] [Secret Key] + + - [x] 为[自己/本群/QQ号/群+群号]设置画图key [API Key] [Secret Key] + + 例:“为10086设置画图key 123 456”;“为群10010设置画图key 789 101” + + 文心key和画图key的API key 可以是相同的,只是文心key日限为200,画图日限为50,以此作区别。 + + - [x] 文心作文 (x字的)[作文题目] + + - [x] 文心提案 (x字的)[文案标题] + + - [x] 文心摘要 (x字的)[文章内容] + + - [x] 文心小说 (x字的)[小说上文] + + - [x] 文心对联 [上联] + + - [x] 文心问答 [问题] + + - [x] 文心补全 [带“_”的填空题] + + - [x] 文心自定义 [prompt] + + - [x] [bot名称]画几张[图片描述]的[图片类型][图片尺寸] + + 指令示例: + + - 文心作文 我的椛椛机器人 + + - 文心作文 300字的我的椛椛机器人 + + - 椛椛帮我画几张金凤凰,背景绚烂,高饱和,古风,仙境,高清,4K,古风的油画方图 + +
+
+ 抽老婆 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wife"` + + - [x] 抽老婆 + +
+
+ 聊天热词 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/word_count"` + + - [x] 热词 [群号] [消息数目]|热词 123456 1000 + +
+
+ 猜单词 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wordle"` + + - [x] 个人猜单词 + + - [x] 团队猜单词 + + - [x] 团队六阶猜单词 + + - [x] 团队七阶猜单词 + +
+
+ 鬼东西 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wtf"` + + - [x] 鬼东西列表 + + - [x] 查询鬼东西[序号][@xxx] + + - 注:由于需要科学,默认注释。 + +
+
+ 一些游戏王插件 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ygo"` + + ##### 白鸽API卡查 + + ###### `"github.com/FloatTech/ZeroBot-Plugin/plugin/ygo/ygocdb.go"` + - [x] /ydp [xxx] + - [x] /yds [xxx] + - [x] /ydb [xxx] + - 注:[xxx]为搜索内容;p:返回一张图片;s:返回一张效果描述;b:高级搜索 + + ##### 集换社卡价查询 + + ###### `"github.com/FloatTech/ZeroBot-Plugin/plugin/ygo/ygotrade.go"` + - [x] 查卡价 [卡名] + - [x] 查卡价 [卡名] -r [稀有度 稀有度 ...] + - [x] 查卡店 [卡名] + - [x] 查卡店 [卡名] -r [稀有度] + - 注:卡店只支持单个稀有度查询 + +
+
+ 月幕galgame图 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ymgal"` + + - [x] 随机galCG + + - [x] 随机gal表情包 + + - [x] galCG[xxx] + + - [x] gal表情包[xxx] + + - [x] 更新gal + +
+
+ 遇见API + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/yujn"` + + - [x] 小姐姐视频 + - [x] 小姐姐视频2 + - [x] 黑丝视频 + - [x] 白丝视频 + - [x] 欲梦视频 + - [x] 甜妹视频 + - [x] 双倍快乐 + - [x] 纯情女高 + - [x] 萝莉视频 + - [x] 玉足视频 + - [x] 帅哥视频 + - [x] 热舞视频 + - [x] 吊带视频 + - [x] 汉服视频 + - [x] 极品狱卒 + - [x] 清纯视频 + - [x] 快手变装 + - [x] 抖音变装 + - [x] 萌娃视频 + - [x] 穿搭视频 + - [x] 完美身材 + - [x] 御姐撒娇 + - [x] 绿茶语音 + - [x] 怼人语音 + - [x] 随机骚话 + - [x] 随机污句子 + - [x] 随机美句 + - [x] 土味情话 + - [x] 让[lulu]说我测尼玛 + +
+ +### *低优先级* + +
+ 骂人 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/curse"` + + - [x] 骂我 + + - [x] 大力骂我 + +
+
+ 人工智能回复 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/aireply"` + + - [x] @Bot 任意文本(任意一句话回复) + + - [x] 设置文字回复模式[婧枫|沫沫|青云客|小爱|ChatGPT] + + - [x] 设置 ChatGPT api key xxx + +
+
+ 词典匹配回复 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/thesaurus"` + + - [x] 切换[kimo|傲娇|可爱]词库 + - [x] 设置词库触发概率0.x (0 +
+ 打断复读 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/breakrepeat"` + + - [x] (打断三次以上的复读) + +
+ +## 三种使用方法,推荐第一种 + +### 1. 使用稳定版/测试版 (推荐) + +可以前往[Release](https://github.com/FloatTech/ZeroBot-Plugin/releases)页面下载对应系统版本可执行文件,编译时开启了全部插件。 +### 2. 本地直接运行 + +1. 下载安装最新 [Go](https://studygolang.com/dl) 环境 +2. 下载本项目[压缩包](https://github.com/FloatTech/ZeroBot-Plugin/archive/master.zip),本地解压 +3. 编辑 main.go 文件,内容按需修改 +4. 运行 OneBot 框架 +5. `Windows`下双击 run.bat 文件,`Linux`下使用 run.sh 运行本插件 + +### 3. 编译运行 + +#### a. 利用 Actions 在线编译 + +1. 点击右上角 Fork 本项目,并转跳到自己 Fork 的仓库 +2. 点击仓库上方的 Actions 按钮,确认使用 Actions +3. 编辑 main.go 文件,内容按需修改 +4. 前往 Release 页面发布一个 Release,`tag`形如`v1.2.3`,以触发稳定版编译流程 +5. 点击 Actions 按钮,等待编译完成,回到 Release 页面下载编译好的文件 +6. 运行 OneBot 框架,并同时运行本插件 +7. 啾咪~ + +#### b. 本地编译/交叉编译 + +1. 下载安装最新 [Go](https://studygolang.com/dl) 环境 +2. clone 并进入本项目,下载所需包 + +```bash +git clone --depth=1 https://github.com/FloatTech/ZeroBot-Plugin.git +cd ZeroBot-Plugin +go version +go env -w GOPROXY=https://goproxy.cn,direct +go env -w GO111MODULE=auto +go mod tidy +``` + +3. 编辑 main.go 文件,内容按需修改 +4. 按照平台输入命令编译,下面举了一些例子 + +```bash +# 本机平台 +go build -ldflags "-s -w" -o zerobot -trimpath +# x64 Linux 平台 如各种云服务器 +GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o zerobot -trimpath +# x64 Windows 平台 如大多数家用电脑 +GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o zerobot.exe -trimpath +# armv6 Linux 平台 如树莓派 zero W +GOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=0 go build -ldflags "-s -w" -o zerobot -trimpath +# (由于引入了github.com/fumiama/sqlite3,本项不再可用)mips Linux 平台 如 路由器 wndr4300 +GOOS=linux GOARCH=mips GOMIPS=softfloat CGO_ENABLED=0 go build -ldflags "-s -w" -o zerobot -trimpath +``` + +5. 运行 OneBot 框架,并同时运行本插件 + +## 特别感谢 + +- [ZeroBot](https://github.com/wdvxdr1123/ZeroBot) +- [ATRI](https://github.com/Kyomotoi/ATRI) + +同时感谢以下开发者对 ZeroBot-Plugin 作出的贡献: + + + + From d4ab67a77347b77adaabf273c204630535368871 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=87=7E?= <158024940+xyy0411@users.noreply.github.com> Date: Sun, 27 Oct 2024 12:55:22 +0800 Subject: [PATCH 3/3] fix