@@ -4,6 +4,7 @@ package pigpig
44import (
55 "encoding/base64"
66 "encoding/json"
7+ "errors" // 【新增】引入 errors 库
78 "fmt"
89 "math/rand"
910 "path/filepath"
@@ -44,17 +45,17 @@ var (
4445func init () {
4546 engine = control .AutoRegister (& ctrl.Options [* zero.Ctx ]{
4647 DisableOnDefault : false ,
47- Brief : "随机/搜索猪猪表情包 " ,
48+ Brief : "来份猪猪 " ,
4849 Help : "- 随机猪猪:随机发送一张猪猪表情\n - 搜索猪猪 [关键词]:搜索相关猪猪\n - 猪猪id [id]:精确查找" ,
49- PublicDataFolder : "Pig" ,
50+ PrivateDataFolder : "Pig" ,
5051 })
5152
5253 engine .OnRegex (`^随机猪猪$` ).SetBlock (true ).Handle (handleRandomPig )
5354 engine .OnRegex (`^搜索猪猪\s+(.+)$` ).SetBlock (true ).Handle (handleSearchPig )
5455 engine .OnRegex (`^猪猪id\s+(\d+)$` ).SetBlock (true ).Handle (handlePigByID )
5556}
5657
57- // checkAndUpdateData 检查并更新数据 (读取 pig_data.json)
58+ // checkAndUpdateData 检查并更新数据
5859func checkAndUpdateData (ctx * zero.Ctx ) error {
5960 pigMutex .Lock ()
6061 defer pigMutex .Unlock ()
@@ -71,16 +72,16 @@ func checkAndUpdateData(ctx *zero.Ctx) error {
7172 // 读取根目录下的 pig_data.json
7273 dataBytes , err := engine .GetLazyData ("pig_data.json" , true )
7374 if err != nil {
74- return fmt . Errorf ("读取数据文件失败: %v" , err )
75+ return errors . New ("读取数据文件失败: " + err . Error () )
7576 }
7677
7778 var data PigResponse
7879 if err := json .Unmarshal (dataBytes , & data ); err != nil {
79- return fmt . Errorf ("解析JSON失败: %v" , err )
80+ return errors . New ("解析JSON失败: " + err . Error () )
8081 }
8182
8283 if len (data .Images ) == 0 {
83- return fmt . Errorf ("数据文件为空" )
84+ return errors . New ("数据文件为空" )
8485 }
8586
8687 pigCache = data .Images
@@ -96,19 +97,16 @@ func checkAndUpdateData(ctx *zero.Ctx) error {
9697// fetchImageLazy 按需从 assets 文件夹获取图片并转为 Base64
9798func fetchImageLazy (img PigImage ) (string , error ) {
9899 if img .Filename == "" {
99- return "" , fmt . Errorf ("图片数据异常,缺少文件名" )
100+ return "" , errors . New ("图片数据异常,缺少文件名" )
100101 }
101102
102- // 【核心逻辑】拼接 assets 子目录
103- // JSON 里的 Filename 是 "2072.jpg"
104- // 实际在仓库里的路径是 "Pig/assets/2072.jpg"
105- // GetLazyData 会自动在前加上 "Pig/",传 "assets/2072.jpg"
103+ // 拼接 assets 子目录
106104 targetPath := filepath .Join ("assets" , img .Filename )
107105
108106 // false 表示优先使用本地文件,不强制从网络拉取
109107 imgData , err := engine .GetLazyData (targetPath , false )
110108 if err != nil {
111- return "" , fmt . Errorf ("图片资源缺失 (%s ): %v" , targetPath , err )
109+ return "" , errors . New ("图片资源缺失 (" + targetPath + " ): " + err . Error () )
112110 }
113111
114112 return "base64://" + base64 .StdEncoding .EncodeToString (imgData ), nil
@@ -117,15 +115,15 @@ func fetchImageLazy(img PigImage) (string, error) {
117115// handleRandomPig 处理随机猪猪
118116func handleRandomPig (ctx * zero.Ctx ) {
119117 if err := checkAndUpdateData (ctx ); err != nil {
120- ctx .SendChain (message .Text ("❌ 获取数据失败 : " , err ))
118+ ctx .SendChain (message .Text ("[Pig] ERROR : " , err , " \n EXP: 随机猪猪失败,获取数据错误" ))
121119 return
122120 }
123121
124122 pigMutex .RLock ()
125123 defer pigMutex .RUnlock ()
126124
127125 if len (pigCache ) == 0 {
128- ctx .SendChain (message .Text ("❌ 暂无猪猪数据" ))
126+ ctx .SendChain (message .Text ("[Pig] ERROR: 暂无猪猪数据,请联系管理员 " ))
129127 return
130128 }
131129
@@ -134,7 +132,7 @@ func handleRandomPig(ctx *zero.Ctx) {
134132
135133 b64Image , err := fetchImageLazy (target )
136134 if err != nil {
137- ctx .SendChain (message .Text ("❌ 图片加载失败 : " , err ))
135+ ctx .SendChain (message .Text ("[Pig] ERROR : " , err , " \n EXP: 图片加载失败" ))
138136 return
139137 }
140138
@@ -150,7 +148,7 @@ func handleSearchPig(ctx *zero.Ctx) {
150148 keyword = strings .TrimSpace (keyword )
151149
152150 if err := checkAndUpdateData (ctx ); err != nil {
153- ctx .SendChain (message .Text ("❌ 获取数据失败 : " , err ))
151+ ctx .SendChain (message .Text ("[Pig] ERROR : " , err , " \n EXP: 搜索猪猪失败,获取数据错误" ))
154152 return
155153 }
156154
@@ -166,7 +164,7 @@ func handleSearchPig(ctx *zero.Ctx) {
166164 }
167165
168166 if len (results ) == 0 {
169- ctx .SendChain (message .Text (fmt . Sprintf ( "❌ 未找到包含“%s”的猪猪。 " , keyword ) ))
167+ ctx .SendChain (message .Text ("[Pig] ERROR: 未找到包含“" , keyword , "”的猪猪" ))
170168 return
171169 }
172170
@@ -187,7 +185,7 @@ func handleSearchPig(ctx *zero.Ctx) {
187185
188186 b64Image , err := fetchImageLazy (results [0 ])
189187 if err != nil {
190- ctx .SendChain (message .Text (sb .String () + "\n ❌ 图片加载失败 : " + err . Error () ))
188+ ctx .SendChain (message .Text (sb .String (), "\n \n [Pig] ERROR : " , err , " \n EXP: 图片加载失败" ))
191189 return
192190 }
193191
@@ -202,7 +200,7 @@ func handlePigByID(ctx *zero.Ctx) {
202200 targetID := ctx .State ["regex_matched" ].([]string )[1 ]
203201
204202 if err := checkAndUpdateData (ctx ); err != nil {
205- ctx .SendChain (message .Text ("❌ 获取数据失败 : " , err ))
203+ ctx .SendChain (message .Text ("[Pig] ERROR : " , err , " \n EXP: 精确查找失败,获取数据错误" ))
206204 return
207205 }
208206
@@ -219,13 +217,13 @@ func handlePigByID(ctx *zero.Ctx) {
219217 }
220218
221219 if target == nil {
222- ctx .SendChain (message .Text (fmt . Sprintf ( "❌ 未找到 ID 为 %s 的猪猪。 " , targetID ) ))
220+ ctx .SendChain (message .Text ("[Pig] ERROR: 未找到 ID 为 " , targetID , " 的猪猪" ))
223221 return
224222 }
225223
226224 b64Image , err := fetchImageLazy (* target )
227225 if err != nil {
228- ctx .SendChain (message .Text ("❌ 图片加载失败 : " , err ))
226+ ctx .SendChain (message .Text ("[Pig] ERROR : " , err , " \n EXP: 图片加载失败" ))
229227 return
230228 }
231229
0 commit comments