mirror of
https://github.com/linux-do/new-api.git
synced 2025-09-21 09:46:37 +08:00
fix: auto ban
This commit is contained in:
parent
e3f66807ee
commit
5abb0a9c4e
@ -219,7 +219,12 @@ func testAllChannels(notify bool) error {
|
|||||||
if channel.AutoBan != nil && *channel.AutoBan == 0 {
|
if channel.AutoBan != nil && *channel.AutoBan == 0 {
|
||||||
ban = false
|
ban = false
|
||||||
}
|
}
|
||||||
if isChannelEnabled && service.ShouldDisableChannel(openaiErr, -1) && ban {
|
openAiErrWithStatus := dto.OpenAIErrorWithStatusCode{
|
||||||
|
StatusCode: -1,
|
||||||
|
Error: *openaiErr,
|
||||||
|
LocalError: false,
|
||||||
|
}
|
||||||
|
if isChannelEnabled && service.ShouldDisableChannel(&openAiErrWithStatus) && ban {
|
||||||
service.DisableChannel(channel.Id, channel.Name, err.Error())
|
service.DisableChannel(channel.Id, channel.Name, err.Error())
|
||||||
}
|
}
|
||||||
if !isChannelEnabled && service.ShouldEnableChannel(err, openaiErr, channel.Status) {
|
if !isChannelEnabled && service.ShouldEnableChannel(err, openaiErr, channel.Status) {
|
||||||
|
@ -128,7 +128,7 @@ func shouldRetry(c *gin.Context, channelId int, openaiErr *dto.OpenAIErrorWithSt
|
|||||||
func processChannelError(c *gin.Context, channelId int, err *dto.OpenAIErrorWithStatusCode) {
|
func processChannelError(c *gin.Context, channelId int, err *dto.OpenAIErrorWithStatusCode) {
|
||||||
autoBan := c.GetBool("auto_ban")
|
autoBan := c.GetBool("auto_ban")
|
||||||
common.LogError(c.Request.Context(), fmt.Sprintf("relay error (channel #%d, status code: %d): %s", channelId, err.StatusCode, err.Error.Message))
|
common.LogError(c.Request.Context(), fmt.Sprintf("relay error (channel #%d, status code: %d): %s", channelId, err.StatusCode, err.Error.Message))
|
||||||
if service.ShouldDisableChannel(&err.Error, err.StatusCode) && autoBan {
|
if service.ShouldDisableChannel(err) && autoBan {
|
||||||
channelName := c.GetString("channel_name")
|
channelName := c.GetString("channel_name")
|
||||||
service.DisableChannel(channelId, channelName, err.Error.Message)
|
service.DisableChannel(channelId, channelName, err.Error.Message)
|
||||||
}
|
}
|
||||||
|
@ -24,17 +24,20 @@ func EnableChannel(channelId int, channelName string) {
|
|||||||
notifyRootUser(subject, content)
|
notifyRootUser(subject, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ShouldDisableChannel(err *relaymodel.OpenAIError, statusCode int) bool {
|
func ShouldDisableChannel(err *relaymodel.OpenAIErrorWithStatusCode) bool {
|
||||||
if !common.AutomaticDisableChannelEnabled {
|
if !common.AutomaticDisableChannelEnabled {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if statusCode == http.StatusUnauthorized || statusCode == http.StatusForbidden {
|
if err.LocalError {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if err.StatusCode == http.StatusUnauthorized || err.StatusCode == http.StatusForbidden {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
switch err.Code {
|
switch err.Error.Code {
|
||||||
case "invalid_api_key":
|
case "invalid_api_key":
|
||||||
return true
|
return true
|
||||||
case "account_deactivated":
|
case "account_deactivated":
|
||||||
@ -42,7 +45,7 @@ func ShouldDisableChannel(err *relaymodel.OpenAIError, statusCode int) bool {
|
|||||||
case "billing_not_active":
|
case "billing_not_active":
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
switch err.Type {
|
switch err.Error.Type {
|
||||||
case "insufficient_quota":
|
case "insufficient_quota":
|
||||||
return true
|
return true
|
||||||
// https://docs.anthropic.com/claude/reference/errors
|
// https://docs.anthropic.com/claude/reference/errors
|
||||||
@ -53,13 +56,13 @@ func ShouldDisableChannel(err *relaymodel.OpenAIError, statusCode int) bool {
|
|||||||
case "forbidden":
|
case "forbidden":
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if strings.HasPrefix(err.Message, "Your credit balance is too low") { // anthropic
|
if strings.HasPrefix(err.Error.Message, "Your credit balance is too low") { // anthropic
|
||||||
return true
|
return true
|
||||||
} else if strings.HasPrefix(err.Message, "This organization has been disabled.") {
|
} else if strings.HasPrefix(err.Error.Message, "This organization has been disabled.") {
|
||||||
return true
|
return true
|
||||||
} else if strings.HasPrefix(err.Message, "You exceeded your current quota") {
|
} else if strings.HasPrefix(err.Error.Message, "You exceeded your current quota") {
|
||||||
return true
|
return true
|
||||||
} else if strings.HasPrefix(err.Message, "Permission denied") {
|
} else if strings.HasPrefix(err.Error.Message, "Permission denied") {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
Loading…
Reference in New Issue
Block a user