@@ -60,17 +60,51 @@ type catInfo struct {
60
60
Picurl string // 猫猫图片
61
61
}
62
62
63
- func (inf * catInfo ) avatar () string {
64
- nti , err := pool .NewNTImage (inf .Picurl )
65
- if err != nil {
66
- return inf .Picurl
67
- }
68
- return nti .String ()
63
+ func (c * catInfo ) avatar (Gid int64 ) string {
64
+ cache := "data/cybercat/cache" // 指定缓存路径
65
+ cache = path .Join (engine .DataFolder (), "cache" )
66
+ imgname := fmt .Sprintf ("%d_%d" , c .User , Gid )
67
+ imgfile := filepath .Join (cache , c .Type + imgname + ".png" )
68
+ aimgfile := filepath .Join (file .BOTPATH , imgfile )
69
+
70
+ if _ , err := os .Stat (cache ); os .IsNotExist (err ) {
71
+ err := os .MkdirAll (cache , 0755 )
72
+ if err != nil {
73
+ fmt .Println ("Error creating cache directory:" , err )
74
+ return err .Error ()
75
+ }
76
+ }
77
+ if file .IsNotExist (aimgfile ) {
78
+ breed := c .Type
79
+ data , err := web .GetData (apiURL + "search?has_breeds=" + breed )
80
+ if err != nil {
81
+ fmt .Println ("Error fetching avatar URL:" , err )
82
+ return err .Error () // 返回错误信息
83
+ }
84
+ imgurl := gjson .ParseBytes (data ).Get ("0.url" ).String ()
85
+ imgdata , err := web .GetData (imgurl )
86
+ if err != nil {
87
+ return "错误:未能解析图片URL"
88
+ }
89
+ var f * os.File
90
+ f , err = os .Create (aimgfile ) // 使用 aimgfile 作为文件路径
91
+ if err != nil {
92
+ fmt .Println ("Error creating file:" , err )
93
+ return err .Error () // 返回错误信息
94
+ }
95
+ defer f .Close ()
96
+ _ , err = f .Write ([]byte (imgdata )) // 写入图片数据
97
+ if err != nil {
98
+ fmt .Println ("Error writing file:" , err )
99
+ return err .Error () // 返回错误信息
100
+ }
101
+ }
102
+ return "file:///" + aimgfile // 返回文件协议的完整路径
69
103
}
70
104
71
105
var (
72
- catdata = & catdb {
73
- db : & sql.Sqlite {} ,
106
+ dbpath = "data/cybercat/catdata.db"
107
+ catdata = & catdb { db : sql .New ( dbpath ) ,
74
108
}
75
109
engine = control .Register ("cybercat" , & ctrl.Options [* zero.Ctx ]{
76
110
DisableOnDefault : false ,
0 commit comments