@@ -12,19 +12,15 @@ import (
1212 fcext "github.com/FloatTech/floatbox/ctxext"
1313 "github.com/FloatTech/floatbox/file"
1414 "github.com/FloatTech/floatbox/process"
15- "github.com/FloatTech/floatbox/web"
1615 ctrl "github.com/FloatTech/zbpctrl"
1716 "github.com/FloatTech/zbputils/control"
1817 "github.com/FloatTech/zbputils/ctxext"
19- "github.com/FloatTech/zbputils/img/pool"
2018 "github.com/FloatTech/zbputils/img/text"
2119 "github.com/sirupsen/logrus"
2220 zero "github.com/wdvxdr1123/ZeroBot"
2321 "github.com/wdvxdr1123/ZeroBot/message"
2422)
2523
26- const bed = "https://gitcode.net/shudorcl/zbp-tarot/-/raw/master/"
27-
2824type cardInfo struct {
2925 Description string `json:"description"`
3026 ReverseDescription string `json:"reverseDescription"`
@@ -61,13 +57,42 @@ func init() {
6157 PublicDataFolder : "Tarot" ,
6258 }).ApplySingle (ctxext .DefaultSingle )
6359
64- cache := engine .DataFolder () + "cache"
65- _ = os .RemoveAll (cache )
66- err := os .MkdirAll (cache , 0755 )
67- if err != nil {
68- panic (err )
60+ logrus .Infof ("[tarot]uri: %s" , engine .DataFolder ())
61+
62+ MajorArcana := engine .DataFolder () + "MajorArcana"
63+ if _ , err := os .Stat (MajorArcana ); os .IsNotExist (err ) {
64+ err := os .MkdirAll (MajorArcana , 0755 )
65+ if err != nil {
66+ panic (err )
67+ }
6968 }
7069
70+ MinorArcana := engine .DataFolder () + "MinorArcana"
71+ if _ , err := os .Stat (MinorArcana ); os .IsNotExist (err ) {
72+ err := os .MkdirAll (MinorArcana , 0755 )
73+ if err != nil {
74+ panic (err )
75+ }
76+ }
77+
78+ Reverse_MajorArcana := engine .DataFolder () + "Reverse/MajorArcana"
79+ if _ , err := os .Stat (Reverse_MajorArcana ); os .IsNotExist (err ) {
80+ err := os .MkdirAll (Reverse_MajorArcana , 0755 )
81+ if err != nil {
82+ panic (err )
83+ }
84+ }
85+
86+ Reverse_MinorArcana := engine .DataFolder () + "Reverse/MinorArcana"
87+ if _ , err := os .Stat (Reverse_MinorArcana ); os .IsNotExist (err ) {
88+ err := os .MkdirAll (Reverse_MinorArcana , 0755 )
89+ if err != nil {
90+ panic (err )
91+ }
92+ }
93+
94+
95+
7196 getTarot := fcext .DoOnceOnSuccess (func (ctx * zero.Ctx ) bool {
7297 data , err := engine .GetLazyData ("tarots.json" , true )
7398 if err != nil {
@@ -140,30 +165,14 @@ func init() {
140165 if p == 1 {
141166 description = card .ReverseDescription
142167 }
143- imgurl := bed + reverse [p ] + card .ImgURL
144- imgname := ""
145- if p == 1 {
146- imgname = reverse [p ][:len (reverse [p ])- 1 ] + name
147- } else {
148- imgname = name
149- }
150- imgpath := cache + "/" + imgname + ".png"
151- err := pool .SendImageFromPool (imgpath , func (pth string ) error {
152- data , err := web .RequestDataWith (web .NewTLS12Client (), imgurl , "GET" , "gitcode.net" , web .RandUA (), nil )
153- if err != nil {
154- return err
155- }
156- f , err := os .Create (pth )
157- if err != nil {
158- return err
159- }
160- defer f .Close ()
161- return os .WriteFile (f .Name (), data , 0755 )
162- }, ctxext .Send (ctx ))
168+ imgurl := reverse [p ] + card .ImgURL
169+ _ , err := engine .GetLazyData (imgurl , true ) // 获取数据和错误
163170 if err != nil {
164- ctx . SendChain ( message . Text ( "ERROR: " , err ) )
165- return
171+ logrus . Infof ( "[tarot]下载数据错误: %s " , err )
172+ return
166173 }
174+ imgpath := "/" + engine .DataFolder () + "/" + imgurl
175+ ctx .SendChain (message .Image ("file:///" + file .BOTPATH + imgpath ))
167176 process .SleepAbout1sTo2s ()
168177 ctx .SendChain (message .Text (reasons [rand .Intn (len (reasons ))], position [p ], "的『" , name , "』\n 其释义为: " , description ))
169178 return
@@ -185,14 +194,14 @@ func init() {
185194 if p == 1 {
186195 description = card .ReverseDescription
187196 }
188- imgurl := bed + reverse [p ] + card .ImgURL
197+ imgurl := reverse [p ] + card .ImgURL
189198 tarotmsg := message.Message {message .Text (reasons [rand .Intn (len (reasons ))], position [p ], "的『" , name , "』\n " )}
190199 var imgmsg message.Segment
191200 var err error
192201 if p == 1 {
193- imgmsg , err = poolimg (imgurl , reverse [ p ][: len ( reverse [ p ]) - 1 ] + name , cache )
202+ imgmsg , err = poolimg (engine , imgurl , engine . DataFolder () )
194203 } else {
195- imgmsg , err = poolimg (imgurl , name , cache )
204+ imgmsg , err = poolimg (engine , imgurl , engine . DataFolder () )
196205 }
197206 if err != nil {
198207 ctx .SendChain (message .Text ("ERROR: " , err ))
@@ -211,9 +220,9 @@ func init() {
211220 match := ctx .State ["regex_matched" ].([]string )[1 ]
212221 info , ok := infoMap [match ]
213222 if ok {
214- imgurl := bed + info .ImgURL
223+ imgurl := info .ImgURL
215224 var tarotmsg message.Message
216- imgmsg , err := poolimg (imgurl , match , cache )
225+ imgmsg , err := poolimg (engine , imgurl , engine . DataFolder () )
217226 if err != nil {
218227 ctx .SendChain (message .Text ("ERROR: " , err ))
219228 return
@@ -280,13 +289,13 @@ func init() {
280289 description = card .ReverseDescription
281290 }
282291 var tarotmsg message.Message
283- imgurl := bed + reverse [p ] + card .ImgURL
292+ imgurl := reverse [p ] + card .ImgURL
284293 var imgmsg message.Segment
285294 var err error
286295 if p == 1 {
287- imgmsg , err = poolimg (imgurl , reverse [ p ][: len ( reverse [ p ]) - 1 ] + name , cache )
296+ imgmsg , err = poolimg (engine , imgurl , engine . DataFolder () )
288297 } else {
289- imgmsg , err = poolimg (imgurl , name , cache )
298+ imgmsg , err = poolimg (engine , imgurl , engine . DataFolder () )
290299 }
291300 if err != nil {
292301 ctx .SendChain (message .Text ("ERROR: " , err ))
@@ -319,26 +328,16 @@ func init() {
319328 })
320329}
321330
322- func poolimg (imgurl , imgname , cache string ) (msg message.Segment , err error ) {
323- imgfile := cache + "/" + imgname + ".png"
331+ func poolimg (engine * control. Engine , imgurl , cache string ) (msg message.Segment , err error ) {
332+ imgfile := cache + "/" + imgurl
324333 aimgfile := file .BOTPATH + "/" + imgfile
325334 if file .IsNotExist (aimgfile ) {
326- var data []byte
327- data , err = web .RequestDataWith (web .NewTLS12Client (), imgurl , "GET" , "gitcode.net" , web .RandUA (), nil )
335+ _ , err = engine .GetLazyData (imgurl , true ) // 获取数据和错误
328336 if err != nil {
329- return
330- }
331- var f * os.File
332- f , err = os .Create (imgfile )
333- if err != nil {
334- return
335- }
336- defer f .Close ()
337- err = os .WriteFile (f .Name (), data , 0755 )
338- if err != nil {
339- return
337+ logrus .Infof ("[tarot]下载数据错误: %s" , err )
338+ return
340339 }
341340 }
342341 msg = message .Image ("file:///" + aimgfile )
343- return
342+ return
344343}
0 commit comments