-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update 满足合并需要 #1094
Update 满足合并需要 #1094
Changes from all commits
df148af
72b4f2c
560ac8b
d334c9f
38a1133
29c591d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,19 +12,15 @@ import ( | |
fcext "github.com/FloatTech/floatbox/ctxext" | ||
"github.com/FloatTech/floatbox/file" | ||
"github.com/FloatTech/floatbox/process" | ||
"github.com/FloatTech/floatbox/web" | ||
ctrl "github.com/FloatTech/zbpctrl" | ||
"github.com/FloatTech/zbputils/control" | ||
"github.com/FloatTech/zbputils/ctxext" | ||
"github.com/FloatTech/zbputils/img/pool" | ||
"github.com/FloatTech/zbputils/img/text" | ||
"github.com/sirupsen/logrus" | ||
zero "github.com/wdvxdr1123/ZeroBot" | ||
"github.com/wdvxdr1123/ZeroBot/message" | ||
) | ||
|
||
const bed = "https://gitcode.net/shudorcl/zbp-tarot/-/raw/master/" | ||
|
||
type cardInfo struct { | ||
Description string `json:"description"` | ||
ReverseDescription string `json:"reverseDescription"` | ||
|
@@ -61,11 +57,38 @@ func init() { | |
PublicDataFolder: "Tarot", | ||
}).ApplySingle(ctxext.DefaultSingle) | ||
|
||
cache := engine.DataFolder() + "cache" | ||
_ = os.RemoveAll(cache) | ||
err := os.MkdirAll(cache, 0755) | ||
if err != nil { | ||
panic(err) | ||
logrus.Infof("[tarot]uri: %s", engine.DataFolder()) | ||
|
||
MajorArcana := engine.DataFolder() + "MajorArcana" | ||
if _, err := os.Stat(MajorArcana); os.IsNotExist(err) { | ||
err := os.MkdirAll(MajorArcana, 0755) | ||
if err != nil { | ||
return | ||
} | ||
} | ||
|
||
MinorArcana := engine.DataFolder() + "MinorArcana" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 变量名全部以小写开头。 |
||
if _, err := os.Stat(MinorArcana); os.IsNotExist(err) { | ||
err := os.MkdirAll(MinorArcana, 0755) | ||
if err != nil { | ||
return | ||
} | ||
} | ||
|
||
ReverseMajorArcana := engine.DataFolder() + "Reverse/MajorArcana" | ||
if _, err := os.Stat(ReverseMajorArcana); os.IsNotExist(err) { | ||
err := os.MkdirAll(ReverseMajorArcana, 0755) | ||
if err != nil { | ||
return | ||
} | ||
} | ||
|
||
ReverseMinorArcana := engine.DataFolder() + "Reverse/MinorArcana" | ||
if _, err := os.Stat(ReverseMinorArcana); os.IsNotExist(err) { | ||
err := os.MkdirAll(ReverseMinorArcana, 0755) | ||
if err != nil { | ||
return | ||
} | ||
} | ||
|
||
getTarot := fcext.DoOnceOnSuccess(func(ctx *zero.Ctx) bool { | ||
|
@@ -140,30 +163,14 @@ func init() { | |
if p == 1 { | ||
description = card.ReverseDescription | ||
} | ||
imgurl := bed + reverse[p] + card.ImgURL | ||
imgname := "" | ||
if p == 1 { | ||
imgname = reverse[p][:len(reverse[p])-1] + name | ||
} else { | ||
imgname = name | ||
} | ||
imgpath := cache + "/" + imgname + ".png" | ||
err := pool.SendImageFromPool(imgpath, func(pth string) error { | ||
data, err := web.RequestDataWith(web.NewTLS12Client(), imgurl, "GET", "gitcode.net", web.RandUA(), nil) | ||
if err != nil { | ||
return err | ||
} | ||
f, err := os.Create(pth) | ||
if err != nil { | ||
return err | ||
} | ||
defer f.Close() | ||
return os.WriteFile(f.Name(), data, 0755) | ||
}, ctxext.Send(ctx)) | ||
imgurl := reverse[p] + card.ImgURL | ||
_, err := engine.GetLazyData(imgurl, true) // 获取数据和错误 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 直接使用返回的data, 发 base64,即message.ImageBytes(data) |
||
if err != nil { | ||
ctx.SendChain(message.Text("ERROR: ", err)) | ||
logrus.Infof("[tarot]下载数据错误: %s", err) | ||
return | ||
} | ||
imgpath := "/" + engine.DataFolder() + "/" + imgurl | ||
ctx.SendChain(message.Image("file:///" + file.BOTPATH + imgpath)) | ||
process.SleepAbout1sTo2s() | ||
ctx.SendChain(message.Text(reasons[rand.Intn(len(reasons))], position[p], "的『", name, "』\n其释义为: ", description)) | ||
return | ||
|
@@ -185,15 +192,11 @@ func init() { | |
if p == 1 { | ||
description = card.ReverseDescription | ||
} | ||
imgurl := bed + reverse[p] + card.ImgURL | ||
imgurl := reverse[p] + card.ImgURL | ||
tarotmsg := message.Message{message.Text(reasons[rand.Intn(len(reasons))], position[p], "的『", name, "』\n")} | ||
var imgmsg message.Segment | ||
var err error | ||
if p == 1 { | ||
imgmsg, err = poolimg(imgurl, reverse[p][:len(reverse[p])-1]+name, cache) | ||
} else { | ||
imgmsg, err = poolimg(imgurl, name, cache) | ||
} | ||
imgmsg, err = poolimg(engine, imgurl, engine.DataFolder()) | ||
if err != nil { | ||
ctx.SendChain(message.Text("ERROR: ", err)) | ||
return | ||
|
@@ -211,9 +214,9 @@ func init() { | |
match := ctx.State["regex_matched"].([]string)[1] | ||
info, ok := infoMap[match] | ||
if ok { | ||
imgurl := bed + info.ImgURL | ||
imgurl := info.ImgURL | ||
var tarotmsg message.Message | ||
imgmsg, err := poolimg(imgurl, match, cache) | ||
imgmsg, err := poolimg(engine, imgurl, engine.DataFolder()) | ||
if err != nil { | ||
ctx.SendChain(message.Text("ERROR: ", err)) | ||
return | ||
|
@@ -280,14 +283,10 @@ func init() { | |
description = card.ReverseDescription | ||
} | ||
var tarotmsg message.Message | ||
imgurl := bed + reverse[p] + card.ImgURL | ||
imgurl := reverse[p] + card.ImgURL | ||
var imgmsg message.Segment | ||
var err error | ||
if p == 1 { | ||
imgmsg, err = poolimg(imgurl, reverse[p][:len(reverse[p])-1]+name, cache) | ||
} else { | ||
imgmsg, err = poolimg(imgurl, name, cache) | ||
} | ||
imgmsg, err = poolimg(engine, imgurl, engine.DataFolder()) | ||
if err != nil { | ||
ctx.SendChain(message.Text("ERROR: ", err)) | ||
return | ||
|
@@ -319,23 +318,13 @@ func init() { | |
}) | ||
} | ||
|
||
func poolimg(imgurl, imgname, cache string) (msg message.Segment, err error) { | ||
imgfile := cache + "/" + imgname + ".png" | ||
func poolimg(engine *control.Engine, imgurl, cache string) (msg message.Segment, err error) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 可直接删去pool/cache。 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 这个函数并无它名字的意义,它只是为了减少代码的修改量而存在,并且对于imgfile的拼凑这个提交的最新的代码为: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 那你应当把函数名和入参名都改了,该改的时候不该说减少修改量,反而影响之后看的人阅读代码。 |
||
imgfile := cache + "/" + imgurl | ||
aimgfile := file.BOTPATH + "/" + imgfile | ||
if file.IsNotExist(aimgfile) { | ||
var data []byte | ||
data, err = web.RequestDataWith(web.NewTLS12Client(), imgurl, "GET", "gitcode.net", web.RandUA(), nil) | ||
if err != nil { | ||
return | ||
} | ||
var f *os.File | ||
f, err = os.Create(imgfile) | ||
if err != nil { | ||
return | ||
} | ||
defer f.Close() | ||
err = os.WriteFile(f.Name(), data, 0755) | ||
_, err = engine.GetLazyData(imgurl, true) // 获取数据和错误 | ||
if err != nil { | ||
logrus.Infof("[tarot]下载数据错误: %s", err) | ||
return | ||
} | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
不必检测是否存在此文件夹,MkdirAll在文件夹存在时不会报错。直接每次执行即可。对于报错,直接panic(err),return没用。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
检测了又能咋样?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Github源在国内能拉取到的地方能有多少,大部分地区都是timeout,raw.githubusercontent.com的可访问性几乎为0,只有github.io的可访问性比较高,github.com能不能访问纯属看当地sni阻断程度,绝大部分时间都是无法访问
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
有没有一种可能,就是说我有办法绕过去,并且已经在zbp实装了。只要DNS正确就能下载,多的就不说了,你自己试试不就知道了。