(fix): polling retry-after
Golang lint / lint (pull_request) Successful in 3m4s
Golang lint / lint (push) Successful in 3m8s

(tests): polling rate-limit

(doc): changelog update
This commit is contained in:
2026-05-08 14:11:58 +03:00
parent daa1b862ed
commit 5959d69945
6 changed files with 110 additions and 6 deletions
+11 -1
View File
@@ -255,6 +255,12 @@ func (r TelegramRequest[R, P]) doRequest(ctx context.Context, api *API) (R, erro
}
if !response.Ok {
responseErr := &ResponseError{
Code: response.ErrorCode,
Description: response.Description,
Parameters: response.Parameters,
}
// Handle rate limiting (429)
if response.ErrorCode == 429 && response.Parameters != nil && response.Parameters.RetryAfter != nil {
after := *response.Parameters.RetryAfter
@@ -269,6 +275,10 @@ func (r TelegramRequest[R, P]) doRequest(ctx context.Context, api *API) (R, erro
}
}
if r.method == "getUpdates" {
return zero, responseErr
}
// Wait and retry
select {
case <-ctx.Done():
@@ -279,7 +289,7 @@ func (r TelegramRequest[R, P]) doRequest(ctx context.Context, api *API) (R, erro
}
// Other API errors
return zero, fmt.Errorf("[%d] %s", response.ErrorCode, response.Description)
return zero, responseErr
}
return response.Result, nil