package workers import ( "encoding/json" "fmt" "io" "net/http" ) type Pkg struct { *StdAns } func (a *Pkg) GetMsg() string { if len(a.Parms) < 2 { return "请输入包名 如:/pkg linux 查询 linux 相关软件" } url := "https://archlinux.org/packages/search/json/?name=" + a.Parms[0] if len(a.Parms) > 2 { url += "&arch=" + a.Parms[1] } // fmt.Println("pkg url:", url) req, err := http.Get(url) if err != nil { return err.Error() } defer req.Body.Close() body, err := io.ReadAll(req.Body) if err != nil { return err.Error() } fmt.Println("pkg body:", string(body)) // var pkg []Package var pkg map[string]interface{} err = json.Unmarshal(body, &pkg) if err != nil { return err.Error() } // fmt.Println("pkg:", pkg) result := pkg["results"].([]interface{})[0].(map[string]interface{}) fmt.Println("result:", result) if result != nil { var msg string // for _, v := range result[0] { msg += "仓库:" + result["repo"].(string) + "\n" msg += "包名:" + result["pkgname"].(string) + "\n" msg += "版本:" + result["pkgver"].(string) + "\n" msg += "描述:" + result["pkgdesc"].(string) + "\n" msg += "打包:" + result["packager"].(string) + "\n" msg += "链接:" + result["url"].(string) + "\n" msg += "更新日期:" + result["last_update"].(string) + "\n" return msg } else { // req, _ := http.Get("https://aur.tuna.tsinghua.edu.cn/rpc/?v=5&type=info&arg=" + a.parms[1]) return "没有找到相关软件" } }