️wordle逻辑优化,bilibilipush、translate添加信息 (#179)

* :sparkles:添加查成分功能

* :rotating_light:修lint

* :rotating_light:减少空格

* :bug:修改网址

* :bug:修改vup数量错误问题

* :bug:图片读取不了,就不读了

* 🐛 固定头像大小,bilibilipush调公有库

* 🎨 修改json转换

*  bilibilipush添加新类型,同时修改命令正则,wordle添加时间提醒,和单词语义,translate充实信息

* ️使用公用的翻译函数

* 🚨 添加return和stop

Co-authored-by: Guohuiyuan <haibaraguo@yeahka.com>
This commit is contained in:
himawari
2022-04-04 22:53:37 +08:00
committed by GitHub
parent ec513e8893
commit f89b6f5feb
4 changed files with 78 additions and 41 deletions

View File

@@ -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()