



















@@ -595,6 +595,10 @@ async function sendGroupMessage(token: string, groupId: string, text: string) {
595595});
596596}
597597598+async function waitForTelegramPollRetryDelay(remainingMs: number) {
599+await new Promise((resolve) => setTimeout(resolve, Math.min(250, Math.max(100, remainingMs))));
600+}
601+598602async function waitForObservedMessage(params: {
599603token: string;
600604initialOffset: number;
@@ -606,6 +610,7 @@ async function waitForObservedMessage(params: {
606610}) {
607611const startedAt = Date.now();
608612let offset = params.initialOffset;
613+let lastPollingError: unknown;
609614while (Date.now() - startedAt < params.timeoutMs) {
610615const remainingMs = Math.max(
6116161_000,
@@ -624,10 +629,13 @@ async function waitForObservedMessage(params: {
624629},
625630timeoutSeconds * 1000 + 5_000,
626631);
632+lastPollingError = undefined;
627633} catch (error) {
628634if (!isRecoverableTelegramQaPollError(error)) {
629635throw error;
630636}
637+lastPollingError = error;
638+await waitForTelegramPollRetryDelay(params.timeoutMs - (Date.now() - startedAt));
631639continue;
632640}
633641const batchObservedAtMs = Date.now();
@@ -653,7 +661,13 @@ async function waitForObservedMessage(params: {
653661}
654662}
655663}
656-throw new Error(`timed out after ${params.timeoutMs}ms waiting for Telegram message`);
664+const timeoutMessage = `timed out after ${params.timeoutMs}ms waiting for Telegram message`;
665+if (lastPollingError) {
666+throw new Error(
667+`${timeoutMessage}; last polling error: ${formatErrorMessage(lastPollingError)}`,
668+);
669+}
670+throw new Error(timeoutMessage);
657671}
658672659673async function waitForTelegramChannelRunning(
@@ -1472,4 +1486,5 @@ export const __testing = {
14721486 shouldLogTelegramQaLiveProgress,
14731487 formatTelegramQaProgressDetails,
14741488 renderTelegramQaMarkdown,
1489+ waitForObservedMessage,
14751490};
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。