Prechádzať zdrojové kódy

feat: 添加查询余额的交互能力 (#70)

二丫讲梵 2 rokov pred
rodič
commit
65d74beede
3 zmenil súbory, kde vykonal 21 pridanie a 9 odobranie
  1. 11 8
      main.go
  2. 9 1
      public/gpt.go
  3. 1 0
      public/public.go

+ 11 - 8
main.go

@@ -110,16 +110,19 @@ func ProcessRequest(rmsg public.ReceiveMsg) error {
 			logger.Warning(fmt.Errorf("send message error: %v", err))
 		}
 	case "余额":
-		rst, err := public.GetBalance()
-		if err != nil {
-			logger.Warning(fmt.Errorf("get balance error: %v", err))
-			return err
+		cacheMsg := public.UserService.GetUserMode("system_balance")
+		if cacheMsg == "" {
+			rst, err := public.GetBalance()
+			if err != nil {
+				logger.Warning(fmt.Errorf("get balance error: %v", err))
+				return err
+			}
+			t1 := time.Unix(int64(rst.Grants.Data[0].EffectiveAt), 0)
+			t2 := time.Unix(int64(rst.Grants.Data[0].ExpiresAt), 0)
+			cacheMsg = fmt.Sprintf("💵 已用: 💲%v\n💵 剩余: 💲%v\n⏳ 有效时间: 从 %v 到 %v\n", fmt.Sprintf("%.2f", rst.TotalUsed), fmt.Sprintf("%.2f", rst.TotalAvailable), t1.Format("2006-01-02 15:04:05"), t2.Format("2006-01-02 15:04:05"))
 		}
-		t1 := time.Unix(int64(rst.Grants.Data[0].EffectiveAt), 0)
-		t2 := time.Unix(int64(rst.Grants.Data[0].ExpiresAt), 0)
-		msg := fmt.Sprintf("💵 已用: 💲%v\n💵 剩余: 💲%v\n⏳ 有效时间: 从 %v 到 %v\n", fmt.Sprintf("%.2f", rst.TotalUsed), fmt.Sprintf("%.2f", rst.TotalAvailable), t1.Format("2006-01-02 15:04:05"), t2.Format("2006-01-02 15:04:05"))
 
-		_, err = rmsg.ReplyText(msg, rmsg.SenderStaffId)
+		_, err := rmsg.ReplyText(cacheMsg, rmsg.SenderStaffId)
 		if err != nil {
 			logger.Warning(fmt.Errorf("send message error: %v", err))
 		}

+ 9 - 1
public/gpt.go

@@ -10,7 +10,10 @@ import (
 )
 
 func InitAiCli() *resty.Client {
-	return resty.New().SetTimeout(30*time.Second).SetHeader("Authorization", fmt.Sprintf("Bearer %s", config.LoadConfig().ApiKey)).SetProxy(config.LoadConfig().HttpProxy)
+	if config.LoadConfig().HttpProxy != "" {
+		return resty.New().SetTimeout(30*time.Second).SetHeader("Authorization", fmt.Sprintf("Bearer %s", config.LoadConfig().ApiKey)).SetProxy(config.LoadConfig().HttpProxy).SetRetryCount(3).SetRetryWaitTime(5 * time.Second)
+	}
+	return resty.New().SetTimeout(30*time.Second).SetHeader("Authorization", fmt.Sprintf("Bearer %s", config.LoadConfig().ApiKey)).SetRetryCount(3).SetRetryWaitTime(5 * time.Second)
 }
 
 type Billing struct {
@@ -42,5 +45,10 @@ func GetBalance() (Billing, error) {
 	if err != nil {
 		return data, err
 	}
+	t1 := time.Unix(int64(data.Grants.Data[0].EffectiveAt), 0)
+	t2 := time.Unix(int64(data.Grants.Data[0].ExpiresAt), 0)
+	msg := fmt.Sprintf("💵 已用: 💲%v\n💵 剩余: 💲%v\n⏳ 有效时间: 从 %v 到 %v\n", fmt.Sprintf("%.2f", data.TotalUsed), fmt.Sprintf("%.2f", data.TotalAvailable), t1.Format("2006-01-02 15:04:05"), t2.Format("2006-01-02 15:04:05"))
+	// 放入缓存
+	UserService.SetUserMode("system_balance", msg)
 	return data, nil
 }

+ 1 - 0
public/public.go

@@ -12,6 +12,7 @@ var UserService service.UserServiceInterface
 func InitSvc() {
 	config.LoadConfig()
 	UserService = service.NewUserService()
+	_, _ = GetBalance()
 }
 
 func FirstCheck(rmsg ReceiveMsg) bool {