Skip to content

Commit cb3a1f1

Browse files
authored
将suineko参数修改为结构体
1 parent ae820f8 commit cb3a1f1

File tree

1 file changed

+61
-42
lines changed

1 file changed

+61
-42
lines changed

plugin/cybercat/catdata.go

Lines changed: 61 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@ type catdb struct {
5151
sql.Sqlite
5252
}
5353

54+
type breedInfo struct {
55+
TypeName string
56+
Temperament string
57+
Description string
58+
ImageURL string
59+
Err error
60+
}
61+
5462
type catInfo struct {
5563
User int64 // 主人
5664
Name string // 喵喵名称
@@ -116,12 +124,12 @@ func (inf *catInfo) avatar(gid int64) string {
116124
}
117125

118126
// 4. 后备方案:随机猫图
119-
_, _, _, url, err := suineko()//nolint:dogsled
120-
if err == nil && url != "" {
121-
if err := downloadAndSave(url, aimgfile); err == nil {
122-
return "file:///" + aimgfile
123-
}
124-
}
127+
result := suineko()
128+
if result.Err == nil && result.ImageURL != "" {
129+
if err := downloadAndSave(result.ImageURL, aimgfile); err == nil {
130+
return "file:///" + aimgfile
131+
}
132+
}
125133

126134
// 5. 最终后备:透明PNG(避免报错)
127135
return "base64://iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="
@@ -177,44 +185,55 @@ var (
177185
)
178186

179187
func init() {
180-
engine.OnRegex(`^吸(.*猫)$`).SetBlock(true).Handle(func(ctx *zero.Ctx) {
181-
typeOfcat := ctx.State["regex_matched"].([]string)[1]
182-
if typeOfcat == "猫" {
183-
typeName, temperament, description, url, err := suineko()
184-
if err != nil {
185-
ctx.SendChain(message.Text("[ERROR]: ", err))
186-
return
187-
}
188-
ctx.SendChain(message.Image(url), message.Text("品种: ", typeName,
189-
"\n气质:\n", temperament, "\n描述:\n", description))
190-
return
191-
}
192-
breeds, ok := typeZH2Breeds[typeOfcat]
193-
if !ok {
194-
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("没有相关该品种的猫图"))
195-
return
196-
}
197-
picurl, err := getPicByBreed(breeds)
198-
if err != nil {
199-
ctx.SendChain(message.Text("[ERROR]: ", err))
200-
return
201-
}
202-
ctx.SendChain(message.Text("品种: ", typeOfcat), message.Image(picurl))
203-
})
188+
engine.OnRegex(`^吸(.*猫)$`).SetBlock(true).Handle(func(ctx *zero.Ctx) {
189+
typeOfcat := ctx.State["regex_matched"].([]string)[1]
190+
if typeOfcat == "猫" {
191+
result := suineko()
192+
if result.Err != nil {
193+
ctx.SendChain(message.Text("[ERROR]: ", result.Err))
194+
return
195+
}
196+
ctx.SendChain(
197+
message.Image(result.ImageURL),
198+
message.Text("品种: ", result.TypeName,
199+
"\n气质:\n", result.Temperament,
200+
"\n描述:\n", result.Description),
201+
)
202+
return
203+
}
204+
breeds, ok := typeZH2Breeds[typeOfcat]
205+
if !ok {
206+
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("没有相关该品种的猫图"))
207+
return
208+
}
209+
picurl, err := getPicByBreed(breeds)
210+
if err != nil {
211+
ctx.SendChain(message.Text("[ERROR]: ", err))
212+
return
213+
}
214+
ctx.SendChain(message.Text("品种: ", typeOfcat), message.Image(picurl))
215+
})
204216
}
205217

206-
func suineko() (typeName, temperament, description, url string, err error) {
207-
data, err := web.GetData(apiURL + "search?has_breeds=1")
208-
if err != nil {
209-
return
210-
}
211-
picID := gjson.ParseBytes(data).Get("0.id").String()
212-
picdata, err := web.GetData(apiURL + picID)
213-
if err != nil {
214-
return
215-
}
216-
name := gjson.ParseBytes(picdata).Get("breeds.0.name").String()
217-
return typeEN2ZH[name], gjson.ParseBytes(picdata).Get("breeds.0.temperament").String(), gjson.ParseBytes(picdata).Get("breeds.0.description").String(), gjson.ParseBytes(picdata).Get("url").String(), nil
218+
219+
func suineko() breedInfo {
220+
data, err := web.GetData(apiURL + "search?has_breeds=1")
221+
if err != nil {
222+
return breedInfo{Err: err}
223+
}
224+
picID := gjson.ParseBytes(data).Get("0.id").String()
225+
picdata, err := web.GetData(apiURL + picID)
226+
if err != nil {
227+
return breedInfo{Err: err}
228+
}
229+
name := gjson.ParseBytes(picdata).Get("breeds.0.name").String()
230+
return breedInfo{
231+
TypeName: typeEN2ZH[name],
232+
Temperament: gjson.ParseBytes(picdata).Get("breeds.0.temperament").String(),
233+
Description: gjson.ParseBytes(picdata).Get("breeds.0.description").String(),
234+
ImageURL: gjson.ParseBytes(picdata).Get("url").String(),
235+
Err: nil,
236+
}
218237
}
219238

220239
func getPicByBreed(catBreed string) (url string, err error) {

0 commit comments

Comments
 (0)