2323import com .pengrad .telegrambot .TelegramBot ;
2424import com .pengrad .telegrambot .TelegramException ;
2525import com .pengrad .telegrambot .UpdatesListener ;
26+ import com .pengrad .telegrambot .model .ResponseParameters ;
2627import com .pengrad .telegrambot .model .Update ;
2728import com .pengrad .telegrambot .model .request .ReplyParameters ;
2829import com .pengrad .telegrambot .model .request .richmessages .InputRichMessage ;
3334import com .pengrad .telegrambot .request .richmessages .SendRichMessage ;
3435import com .pengrad .telegrambot .request .richmessages .SendRichMessageDraft ;
3536import com .pengrad .telegrambot .response .BaseResponse ;
37+ import org .jspecify .annotations .Nullable ;
3638import org .slf4j .event .Level ;
3739
3840import java .io .File ;
@@ -231,10 +233,12 @@ private <T extends BaseRequest<T, R>, R extends BaseResponse> R execute(BaseRequ
231233 return response ;
232234 }
233235
234- for (int retry = 1 ; retry <= 3 && response .parameters () != null && response .parameters ().retryAfter () != null ; retry ++) {
235- var retryDelay = Duration .ofSeconds (response .parameters ().retryAfter ());
236+ for (int retry = 1 ; retry <= 3 && isRetriable (response .parameters ()); retry ++) {
237+ var retryDelay = response .parameters ().retryAfter ();
238+ LOGGER .at (Level .WARN ).log ("The {} request failed, retrying in {} seconds" , request .getMethod (), retryDelay );
239+
236240 try {
237- Thread .sleep (retryDelay );
241+ Thread .sleep (Duration . ofSeconds ( retryDelay ) );
238242
239243 response = bot .execute (request );
240244
@@ -250,6 +254,10 @@ private <T extends BaseRequest<T, R>, R extends BaseResponse> R execute(BaseRequ
250254 throw new TelegramApiException (request .getMethod (), response .description ());
251255 }
252256
257+ private static boolean isRetriable (@ Nullable ResponseParameters parameters ) {
258+ return parameters != null && parameters .retryAfter () != null && parameters .retryAfter () > 0 ;
259+ }
260+
253261 private static void deleteTempFiles (Set <Path > pathsToDelete ) {
254262 for (var path : pathsToDelete ) {
255263 try {
0 commit comments