mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 22:00:11 +08:00
⚡️wordle逻辑优化,bilibilipush、translate添加信息 (#179)
* ✨添加查成分功能 * 🚨修lint * 🚨减少空格 * 🐛修改网址 * 🐛修改vup数量错误问题 * 🐛图片读取不了,就不读了 * 🐛 固定头像大小,bilibilipush调公有库 * 🎨 修改json转换 * ✨ bilibilipush添加新类型,同时修改命令正则,wordle添加时间提醒,和单词语义,translate充实信息 * ⚡️使用公用的翻译函数 * 🚨 添加return和stop Co-authored-by: Guohuiyuan <haibaraguo@yeahka.com>
This commit is contained in:
parent
ec513e8893
commit
f89b6f5feb
10
README.md
10
README.md
@ -349,11 +349,11 @@ print("run[CQ:image,file="+j["img"]+"]")
|
|||||||
- [x] 骂我
|
- [x] 骂我
|
||||||
- [x] 大力骂我
|
- [x] 大力骂我
|
||||||
- **b站推送** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili_push"`
|
- **b站推送** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili_push"`
|
||||||
- [x] 添加订阅[uid]
|
- [x] 添加b站订阅[uid]
|
||||||
- [x] 取消订阅[uid]
|
- [x] 取消b站订阅[uid]
|
||||||
- [x] 取消动态订阅[uid]
|
- [x] 取消b站动态订阅[uid]
|
||||||
- [x] 取消直播订阅[uid]
|
- [x] 取消b站直播订阅[uid]
|
||||||
- [x] 推送列表
|
- [x] b站推送列表
|
||||||
- **网易云音乐热评** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wangyiyun"`
|
- **网易云音乐热评** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wangyiyun"`
|
||||||
- [x] 来份网易云热评
|
- [x] 来份网易云热评
|
||||||
- **b站视频链接解析** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili_parse"`
|
- **b站视频链接解析** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/bilibili_parse"`
|
||||||
|
|||||||
@ -36,13 +36,14 @@ var bdb *bilibilipushdb
|
|||||||
var (
|
var (
|
||||||
lastTime = map[int64]int64{}
|
lastTime = map[int64]int64{}
|
||||||
typeMsg = map[int64]string{
|
typeMsg = map[int64]string{
|
||||||
1: "转发了一条动态",
|
1: "转发了一条动态",
|
||||||
2: "有图营业",
|
2: "有图营业",
|
||||||
4: "无图营业",
|
4: "无图营业",
|
||||||
8: "发布了新投稿",
|
8: "发布了新投稿",
|
||||||
16: "发布了短视频",
|
16: "发布了短视频",
|
||||||
64: "发布了新专栏",
|
64: "发布了新专栏",
|
||||||
256: "发布了新音频",
|
256: "发布了新音频",
|
||||||
|
2048: "发布了新简报",
|
||||||
}
|
}
|
||||||
liveStatus = map[int64]int{}
|
liveStatus = map[int64]int{}
|
||||||
uidErrorMsg = map[int]string{
|
uidErrorMsg = map[int]string{
|
||||||
@ -59,11 +60,11 @@ func init() {
|
|||||||
en := control.Register(serviceName, &control.Options{
|
en := control.Register(serviceName, &control.Options{
|
||||||
DisableOnDefault: false,
|
DisableOnDefault: false,
|
||||||
Help: "bilibilipush\n" +
|
Help: "bilibilipush\n" +
|
||||||
"- 添加订阅[uid]\n" +
|
"- 添加b站订阅[uid]\n" +
|
||||||
"- 取消订阅[uid]\n" +
|
"- 取消b站订阅[uid]\n" +
|
||||||
"- 取消动态订阅[uid]\n" +
|
"- 取消b站动态订阅[uid]\n" +
|
||||||
"- 取消直播订阅[uid]\n" +
|
"- 取消b站直播订阅[uid]\n" +
|
||||||
"- 推送列表",
|
"- b站推送列表",
|
||||||
PrivateDataFolder: serviceName,
|
PrivateDataFolder: serviceName,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -75,7 +76,7 @@ func init() {
|
|||||||
log.Println("[bilibilipush]加载bilibilipush数据库")
|
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)
|
buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64)
|
||||||
var name string
|
var name string
|
||||||
var ok bool
|
var ok bool
|
||||||
@ -101,7 +102,7 @@ func init() {
|
|||||||
ctx.SendChain(message.Text("已添加" + name + "的订阅"))
|
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)
|
buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64)
|
||||||
var name string
|
var name string
|
||||||
var ok bool
|
var ok bool
|
||||||
@ -127,7 +128,7 @@ func init() {
|
|||||||
ctx.SendChain(message.Text("已取消" + name + "的订阅"))
|
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)
|
buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64)
|
||||||
var name string
|
var name string
|
||||||
var ok bool
|
var ok bool
|
||||||
@ -153,7 +154,7 @@ func init() {
|
|||||||
ctx.SendChain(message.Text("已取消" + name + "的动态订阅"))
|
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)
|
buid, _ := strconv.ParseInt(ctx.State["regex_matched"].([]string)[1], 10, 64)
|
||||||
var name string
|
var name string
|
||||||
var ok bool
|
var ok bool
|
||||||
@ -179,14 +180,14 @@ func init() {
|
|||||||
ctx.SendChain(message.Text("已取消" + name + "的直播订阅"))
|
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
|
gid := ctx.Event.GroupID
|
||||||
if gid == 0 {
|
if gid == 0 {
|
||||||
gid = -ctx.Event.UserID
|
gid = -ctx.Event.UserID
|
||||||
}
|
}
|
||||||
bpl := bdb.getAllPushByGroup(gid)
|
bpl := bdb.getAllPushByGroup(gid)
|
||||||
fmt.Println(bpl)
|
fmt.Println(bpl)
|
||||||
msg := "--------推送列表--------"
|
msg := "--------b站推送列表--------"
|
||||||
for _, v := range bpl {
|
for _, v := range bpl {
|
||||||
if _, ok := upMap[v.BilibiliUID]; !ok {
|
if _, ok := upMap[v.BilibiliUID]; !ok {
|
||||||
bdb.updateAllUp()
|
bdb.updateAllUp()
|
||||||
@ -401,6 +402,19 @@ func sendDynamic() {
|
|||||||
msg = append(msg, message.Text(cTitle))
|
msg = append(msg, message.Text(cTitle))
|
||||||
cCover := gjson.Get(cOrigin, "cover").String()
|
cCover := gjson.Get(cOrigin, "cover").String()
|
||||||
msg = append(msg, message.Image(cCover))
|
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:
|
default:
|
||||||
msg = append(msg, message.Text("未知动态类型"+strconv.FormatInt(cOrigType, 10)+"\n"))
|
msg = append(msg, message.Text("未知动态类型"+strconv.FormatInt(cOrigType, 10)+"\n"))
|
||||||
}
|
}
|
||||||
@ -462,6 +476,19 @@ func sendDynamic() {
|
|||||||
msg = append(msg, message.Text(cTitle))
|
msg = append(msg, message.Text(cTitle))
|
||||||
cCover := gjson.Get(cardStr, "cover").String()
|
cCover := gjson.Get(cardStr, "cover").String()
|
||||||
msg = append(msg, message.Image(cCover))
|
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:
|
default:
|
||||||
msg = append(msg, message.Text("未知动态类型"+strconv.FormatInt(cType, 10)+"\n"))
|
msg = append(msg, message.Text("未知动态类型"+strconv.FormatInt(cType, 10)+"\n"))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,14 +2,11 @@
|
|||||||
package translation
|
package translation
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/tidwall/gjson"
|
"github.com/FloatTech/AnimeAPI/tl"
|
||||||
zero "github.com/wdvxdr1123/ZeroBot"
|
|
||||||
"github.com/wdvxdr1123/ZeroBot/message"
|
|
||||||
|
|
||||||
control "github.com/FloatTech/zbputils/control"
|
control "github.com/FloatTech/zbputils/control"
|
||||||
"github.com/FloatTech/zbputils/ctxext"
|
"github.com/FloatTech/zbputils/ctxext"
|
||||||
"github.com/FloatTech/zbputils/process"
|
zero "github.com/wdvxdr1123/ZeroBot"
|
||||||
"github.com/FloatTech/zbputils/web"
|
"github.com/wdvxdr1123/ZeroBot/message"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -20,13 +17,11 @@ func init() {
|
|||||||
}).OnRegex(`^>TL\s(-.{1,10}? )?(.*)$`).SetBlock(true).Limit(ctxext.LimitByUser).
|
}).OnRegex(`^>TL\s(-.{1,10}? )?(.*)$`).SetBlock(true).Limit(ctxext.LimitByUser).
|
||||||
Handle(func(ctx *zero.Ctx) {
|
Handle(func(ctx *zero.Ctx) {
|
||||||
msg := []string{ctx.State["regex_matched"].([]string)[2]}
|
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 {
|
if err != nil {
|
||||||
ctx.SendChain(message.Text("ERROR:", err))
|
ctx.SendChain(message.Text("Error:", data))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
info := gjson.ParseBytes(data)
|
ctx.SendChain(message.Text(data))
|
||||||
repo := info.Get("data.0")
|
|
||||||
process.SleepAbout1sTo2s()
|
|
||||||
ctx.SendChain(message.Text(repo.Get("value.0")))
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ package wordle
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/FloatTech/AnimeAPI/tl"
|
||||||
"image/color"
|
"image/color"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"sort"
|
"sort"
|
||||||
@ -62,7 +63,7 @@ func init() {
|
|||||||
en := control.Register("wordle", &control.Options{
|
en := control.Register("wordle", &control.Options{
|
||||||
DisableOnDefault: false,
|
DisableOnDefault: false,
|
||||||
Help: "猜单词\n" +
|
Help: "猜单词\n" +
|
||||||
"- 个人猜单词" +
|
"- 个人猜单词\n" +
|
||||||
"- 团队猜单词",
|
"- 团队猜单词",
|
||||||
PublicDataFolder: "Wordle",
|
PublicDataFolder: "Wordle",
|
||||||
}).ApplySingle(single.New(
|
}).ApplySingle(single.New(
|
||||||
@ -107,6 +108,11 @@ func init() {
|
|||||||
Handle(func(ctx *zero.Ctx) {
|
Handle(func(ctx *zero.Ctx) {
|
||||||
class := classdict[ctx.State["regex_matched"].([]string)[2]]
|
class := classdict[ctx.State["regex_matched"].([]string)[2]]
|
||||||
target := words[class].cet4[rand.Intn(len(words[class].cet4))]
|
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)
|
game := newWordleGame(target)
|
||||||
_, img, cl, _ := game("")
|
_, img, cl, _ := game("")
|
||||||
ctx.Send(
|
ctx.Send(
|
||||||
@ -125,35 +131,44 @@ func init() {
|
|||||||
zero.OnlyGroup, zero.CheckGroup(ctx.Event.GroupID))
|
zero.OnlyGroup, zero.CheckGroup(ctx.Event.GroupID))
|
||||||
}
|
}
|
||||||
var win bool
|
var win bool
|
||||||
var err error
|
|
||||||
recv, cancel := next.Repeat()
|
recv, cancel := next.Repeat()
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
tick := time.NewTimer(105 * time.Second)
|
||||||
|
after := time.NewTimer(120 * time.Second)
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-time.After(time.Second * 120):
|
case <-tick.C:
|
||||||
|
ctx.SendChain(message.Text("猜单词,你还有15s作答时间"))
|
||||||
|
case <-after.C:
|
||||||
ctx.Send(
|
ctx.Send(
|
||||||
message.ReplyWithMessage(ctx.Event.MessageID,
|
message.ReplyWithMessage(ctx.Event.MessageID,
|
||||||
message.Text("猜单词超时,游戏结束...答案是: ", target),
|
message.Text("猜单词超时,游戏结束...答案是: ", target, "(", tt, ")"),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
case c := <-recv:
|
case c := <-recv:
|
||||||
|
tick.Reset(105 * time.Second)
|
||||||
|
after.Reset(120 * time.Second)
|
||||||
win, img, cl, err = game(c.Event.Message.String())
|
win, img, cl, err = game(c.Event.Message.String())
|
||||||
switch {
|
switch {
|
||||||
case win:
|
case win:
|
||||||
|
tick.Stop()
|
||||||
|
after.Stop()
|
||||||
ctx.Send(
|
ctx.Send(
|
||||||
message.ReplyWithMessage(c.Event.MessageID,
|
message.ReplyWithMessage(c.Event.MessageID,
|
||||||
message.ImageBytes(img),
|
message.ImageBytes(img),
|
||||||
message.Text("太棒了,你猜出来了!"),
|
message.Text("太棒了,你猜出来了!答案是: ", target, "(", tt, ")"),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
cl()
|
cl()
|
||||||
return
|
return
|
||||||
case err == errTimesRunOut:
|
case err == errTimesRunOut:
|
||||||
|
tick.Stop()
|
||||||
|
after.Stop()
|
||||||
ctx.Send(
|
ctx.Send(
|
||||||
message.ReplyWithMessage(c.Event.MessageID,
|
message.ReplyWithMessage(c.Event.MessageID,
|
||||||
message.ImageBytes(img),
|
message.ImageBytes(img),
|
||||||
message.Text("游戏结束...答案是: ", target),
|
message.Text("游戏结束...答案是: ", target, "(", tt, ")"),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
cl()
|
cl()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user