diff --git a/README.md b/README.md index 21fa7d16..e4ddbc04 100644 --- a/README.md +++ b/README.md @@ -349,11 +349,11 @@ print("run[CQ:image,file="+j["img"]+"]") - [x] 骂我 - [x] 大力骂我 - **b站推送** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili_push"` - - [x] 添加订阅[uid] - - [x] 取消订阅[uid] - - [x] 取消动态订阅[uid] - - [x] 取消直播订阅[uid] - - [x] 推送列表 + - [x] 添加b站订阅[uid] + - [x] 取消b站订阅[uid] + - [x] 取消b站动态订阅[uid] + - [x] 取消b站直播订阅[uid] + - [x] b站推送列表 - **网易云音乐热评** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wangyiyun"` - [x] 来份网易云热评 - **b站视频链接解析** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili_parse"` diff --git a/plugin/bilibili_push/bilibili_push.go b/plugin/bilibili_push/bilibili_push.go index e7db6385..9312af78 100644 --- a/plugin/bilibili_push/bilibili_push.go +++ b/plugin/bilibili_push/bilibili_push.go @@ -36,13 +36,14 @@ var bdb *bilibilipushdb var ( lastTime = map[int64]int64{} typeMsg = map[int64]string{ - 1: "转发了一条动态", - 2: "有图营业", - 4: "无图营业", - 8: "发布了新投稿", - 16: "发布了短视频", - 64: "发布了新专栏", - 256: "发布了新音频", + 1: "转发了一条动态", + 2: "有图营业", + 4: "无图营业", + 8: "发布了新投稿", + 16: "发布了短视频", + 64: "发布了新专栏", + 256: "发布了新音频", + 2048: "发布了新简报", } liveStatus = map[int64]int{} uidErrorMsg = map[int]string{ @@ -59,11 +60,11 @@ func init() { en := control.Register(serviceName, &control.Options{ DisableOnDefault: false, Help: "bilibilipush\n" + - "- 添加订阅[uid]\n" + - "- 取消订阅[uid]\n" + - "- 取消动态订阅[uid]\n" + - "- 取消直播订阅[uid]\n" + - "- 推送列表", + "- 添加b站订阅[uid]\n" + + "- 取消b站订阅[uid]\n" + + "- 取消b站动态订阅[uid]\n" + + "- 取消b站直播订阅[uid]\n" + + "- b站推送列表", PrivateDataFolder: serviceName, }) @@ -75,7 +76,7 @@ func init() { log.Println("[bilibilipush]加载bilibilipush数据库") }() - en.OnRegex(`^添加订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { + en.OnRegex(`^添加b站订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64) var name string var ok bool @@ -101,7 +102,7 @@ func init() { ctx.SendChain(message.Text("已添加" + name + "的订阅")) } }) - en.OnRegex(`^取消订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { + en.OnRegex(`^取消b站订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64) var name string var ok bool @@ -127,7 +128,7 @@ func init() { ctx.SendChain(message.Text("已取消" + name + "的订阅")) } }) - en.OnRegex(`^取消动态订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { + en.OnRegex(`^取消b站动态订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64) var name string var ok bool @@ -153,7 +154,7 @@ func init() { ctx.SendChain(message.Text("已取消" + name + "的动态订阅")) } }) - en.OnRegex(`^取消直播订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { + en.OnRegex(`^取消b站直播订阅\s?(\d+)$`, zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64) var name string var ok bool @@ -179,14 +180,14 @@ func init() { ctx.SendChain(message.Text("已取消" + name + "的直播订阅")) } }) - en.OnFullMatch("推送列表", zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { + en.OnFullMatch("b站推送列表", zero.UserOrGrpAdmin).SetBlock(true).Handle(func(ctx *zero.Ctx) { gid := ctx.Event.GroupID if gid == 0 { gid = -ctx.Event.UserID } bpl := bdb.getAllPushByGroup(gid) fmt.Println(bpl) - msg := "--------推送列表--------" + msg := "--------b站推送列表--------" for _, v := range bpl { if _, ok := upMap[v.BilibiliUID]; !ok { bdb.updateAllUp() @@ -401,6 +402,19 @@ func sendDynamic() { msg = append(msg, message.Text(cTitle)) cCover := gjson.Get(cOrigin, "cover").String() msg = append(msg, message.Image(cCover)) + case 2048: + cName := gjson.Get(cOrigin, "user.uname").String() + msg = append(msg, message.Text(cName+typeMsg[cOrigType]+"\n")) + cContent := gjson.Get(cOrigin, "vest.content").String() + msg = append(msg, message.Text(cContent+"\n")) + cTitle := gjson.Get(cOrigin, "sketch.title").String() + msg = append(msg, message.Text(cTitle+"\n")) + cDescText := gjson.Get(cOrigin, "sketch.desc_text").String() + msg = append(msg, message.Text(cDescText)) + cCoverURL := gjson.Get(cOrigin, "sketch.cover_url").String() + msg = append(msg, message.Image(cCoverURL)) + cTargetURL := gjson.Get(cOrigin, "sketch.target_url").String() + msg = append(msg, message.Text("简报链接:"+cTargetURL+"\n")) default: msg = append(msg, message.Text("未知动态类型"+strconv.FormatInt(cOrigType, 10)+"\n")) } @@ -462,6 +476,19 @@ func sendDynamic() { msg = append(msg, message.Text(cTitle)) cCover := gjson.Get(cardStr, "cover").String() msg = append(msg, message.Image(cCover)) + case 2048: + cName := gjson.Get(cardStr, "user.uname").String() + msg = append(msg, message.Text(cName+typeMsg[cType]+"\n")) + cContent := gjson.Get(cardStr, "vest.content").String() + msg = append(msg, message.Text(cContent+"\n")) + cTitle := gjson.Get(cardStr, "sketch.title").String() + msg = append(msg, message.Text(cTitle+"\n")) + cDescText := gjson.Get(cardStr, "sketch.desc_text").String() + msg = append(msg, message.Text(cDescText)) + cCoverURL := gjson.Get(cardStr, "sketch.cover_url").String() + msg = append(msg, message.Image(cCoverURL)) + cTargetURL := gjson.Get(cardStr, "sketch.target_url").String() + msg = append(msg, message.Text("简报链接:"+cTargetURL+"\n")) default: msg = append(msg, message.Text("未知动态类型"+strconv.FormatInt(cType, 10)+"\n")) } diff --git a/plugin/translation/tl.go b/plugin/translation/tl.go index bcd7c883..0225afaa 100644 --- a/plugin/translation/tl.go +++ b/plugin/translation/tl.go @@ -2,14 +2,11 @@ package translation import ( - "github.com/tidwall/gjson" - zero "github.com/wdvxdr1123/ZeroBot" - "github.com/wdvxdr1123/ZeroBot/message" - + "github.com/FloatTech/AnimeAPI/tl" control "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/ctxext" - "github.com/FloatTech/zbputils/process" - "github.com/FloatTech/zbputils/web" + zero "github.com/wdvxdr1123/ZeroBot" + "github.com/wdvxdr1123/ZeroBot/message" ) func init() { @@ -20,13 +17,11 @@ func init() { }).OnRegex(`^>TL\s(-.{1,10}? )?(.*)$`).SetBlock(true).Limit(ctxext.LimitByUser). Handle(func(ctx *zero.Ctx) { msg := []string{ctx.State["regex_matched"].([]string)[2]} - data, err := web.GetData("https://api.cloolc.club/fanyi?data=" + msg[0]) + data, err := tl.Translate(msg[0]) if err != nil { - ctx.SendChain(message.Text("ERROR:", err)) + ctx.SendChain(message.Text("Error:", data)) + return } - info := gjson.ParseBytes(data) - repo := info.Get("data.0") - process.SleepAbout1sTo2s() - ctx.SendChain(message.Text(repo.Get("value.0"))) + ctx.SendChain(message.Text(data)) }) } diff --git a/plugin/wordle/wordle.go b/plugin/wordle/wordle.go index 19cacdef..080df75c 100644 --- a/plugin/wordle/wordle.go +++ b/plugin/wordle/wordle.go @@ -4,6 +4,7 @@ package wordle import ( "errors" "fmt" + "github.com/FloatTech/AnimeAPI/tl" "image/color" "math/rand" "sort" @@ -62,7 +63,7 @@ func init() { en := control.Register("wordle", &control.Options{ DisableOnDefault: false, Help: "猜单词\n" + - "- 个人猜单词" + + "- 个人猜单词\n" + "- 团队猜单词", PublicDataFolder: "Wordle", }).ApplySingle(single.New( @@ -107,6 +108,11 @@ func init() { Handle(func(ctx *zero.Ctx) { class := classdict[ctx.State["regex_matched"].([]string)[2]] target := words[class].cet4[rand.Intn(len(words[class].cet4))] + tt, err := tl.Translate(target) + if err != nil { + ctx.SendChain(message.Text("ERROR:", err)) + return + } game := newWordleGame(target) _, img, cl, _ := game("") ctx.Send( @@ -125,35 +131,44 @@ func init() { zero.OnlyGroup, zero.CheckGroup(ctx.Event.GroupID)) } var win bool - var err error recv, cancel := next.Repeat() defer cancel() + tick := time.NewTimer(105 * time.Second) + after := time.NewTimer(120 * time.Second) for { select { - case <-time.After(time.Second * 120): + case <-tick.C: + ctx.SendChain(message.Text("猜单词,你还有15s作答时间")) + case <-after.C: ctx.Send( message.ReplyWithMessage(ctx.Event.MessageID, - message.Text("猜单词超时,游戏结束...答案是: ", target), + message.Text("猜单词超时,游戏结束...答案是: ", target, "(", tt, ")"), ), ) return case c := <-recv: + tick.Reset(105 * time.Second) + after.Reset(120 * time.Second) win, img, cl, err = game(c.Event.Message.String()) switch { case win: + tick.Stop() + after.Stop() ctx.Send( message.ReplyWithMessage(c.Event.MessageID, message.ImageBytes(img), - message.Text("太棒了,你猜出来了!"), + message.Text("太棒了,你猜出来了!答案是: ", target, "(", tt, ")"), ), ) cl() return case err == errTimesRunOut: + tick.Stop() + after.Stop() ctx.Send( message.ReplyWithMessage(c.Event.MessageID, message.ImageBytes(img), - message.Text("游戏结束...答案是: ", target), + message.Text("游戏结束...答案是: ", target, "(", tt, ")"), ), ) cl()