Merge branch 'main' of nix13.pw:ScuroNeko/KurumiBotGo

This commit is contained in:
2026-02-18 14:07:33 +03:00
2 changed files with 10 additions and 16 deletions

View File

@@ -835,6 +835,7 @@ func _compress(ctx *laniakea.MsgContext, db *laniakea.DatabaseContext) {
res, err := api.CompressChat(messages) res, err := api.CompressChat(messages)
if err != nil { if err != nil {
ctx.Error(err) ctx.Error(err)
return
} }
if len(res.Choices) == 0 { if len(res.Choices) == 0 {
ctx.Answer("Не удалось сжать чат") ctx.Answer("Не удалось сжать чат")

View File

@@ -6,6 +6,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"io" "io"
"log"
"net/http" "net/http"
"net/url" "net/url"
"os" "os"
@@ -72,6 +73,7 @@ func NewOpenAIAPI(baseURL, token, model string) *OpenAIAPI {
proxy, err := url.Parse(os.Getenv("HTTPS_PROXY")) proxy, err := url.Parse(os.Getenv("HTTPS_PROXY"))
if err != nil { if err != nil {
logger.Error(err) logger.Error(err)
logger.Close()
} }
t := &http.Transport{} t := &http.Transport{}
if proxy.Host != "" { if proxy.Host != "" {
@@ -111,11 +113,13 @@ func (o *OpenAIAPI) DoRequest(url string, params any, retries int) ([]byte, erro
responseBody := make([]byte, 0) responseBody := make([]byte, 0)
data, err := json.Marshal(params) data, err := json.Marshal(params)
if err != nil { if err != nil {
log.Println("json marshal failed:", err)
return responseBody, err return responseBody, err
} }
req, err := http.NewRequest("POST", url, bytes.NewBuffer(data)) req, err := http.NewRequest("POST", url, bytes.NewBuffer(data))
if err != nil { if err != nil {
log.Println("create request failed:", err)
return responseBody, err return responseBody, err
} }
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
@@ -125,6 +129,7 @@ func (o *OpenAIAPI) DoRequest(url string, params any, retries int) ([]byte, erro
res, err := o.client.Do(req) res, err := o.client.Do(req)
if err != nil { if err != nil {
log.Println("do request failed:", err)
return nil, err return nil, err
} }
defer res.Body.Close() defer res.Body.Close()
@@ -138,23 +143,25 @@ func (o *OpenAIAPI) DoRequest(url string, params any, retries int) ([]byte, erro
} }
responseBody, err = io.ReadAll(res.Body) responseBody, err = io.ReadAll(res.Body)
if err != nil { if err != nil {
log.Println("read response failed:", err)
return responseBody, err return responseBody, err
} }
tempData := make(map[string]any) tempData := make(map[string]any)
err = json.Unmarshal(responseBody, &tempData) err = json.Unmarshal(responseBody, &tempData)
if err != nil { if err != nil {
log.Println("json unmarshal failed:", err)
return responseBody, err return responseBody, err
} }
// {"error":{"message":"openai_error","type":"bad_response_status_code","param":"","code":"bad_response_status_code"}} // {"error":{"message":"openai_error","type":"bad_response_status_code","param":"","code":"bad_response_status_code"}}
if errorData, ok := tempData["error"]; ok { if errorData, ok := tempData["error"]; ok {
if errorPayload, ok := errorData.(map[string]interface{}); ok { if errorPayload, ok := errorData.(map[string]any); ok {
code := errorPayload["code"].(string) code := errorPayload["code"].(string)
if code == "bad_response_status_code" { if code == "bad_response_status_code" {
if retries >= 3 { if retries >= 3 {
return responseBody, BadResponseErr return responseBody, BadResponseErr
} }
o.Logger.Debug("Retrying because of bad response status code") o.Logger.Warnln("Retrying because of bad response status code")
return o.DoRequest(url, params, retries+1) return o.DoRequest(url, params, retries+1)
} }
return nil, errors.New(code) return nil, errors.New(code)
@@ -163,20 +170,6 @@ func (o *OpenAIAPI) DoRequest(url string, params any, retries int) ([]byte, erro
return nil, errors.New(string(responseBody)) return nil, errors.New(string(responseBody))
} }
//if errorData, ok := tempData["error"]; ok {
// o.Logger.Error(errorData)
// errorPayload := errorData.(map[string]interface{})
// code := errorPayload["code"].(string)
// if code == "bad_response_status_code" {
// if retries >= 3 {
// return responseBody, BadResponseErr
// }
// o.Logger.Debug("Retrying because of bad response status code")
// return o.DoRequest(url, params, retries+1)
// }
// return nil, errors.New(code)
//}
return responseBody, err return responseBody, err
} }