From 4a014083ff1fd1695b6c4fdc740d23287c7f6958 Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Sat, 28 Mar 2026 09:48:06 +0530 Subject: [PATCH] refactor(telegram): tighten api result typings --- extensions/telegram/src/audit-membership-runtime.ts | 8 ++++---- extensions/telegram/src/draft-stream.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/extensions/telegram/src/audit-membership-runtime.ts b/extensions/telegram/src/audit-membership-runtime.ts index a8cc98f4701..378835b72e1 100644 --- a/extensions/telegram/src/audit-membership-runtime.ts +++ b/extensions/telegram/src/audit-membership-runtime.ts @@ -11,6 +11,7 @@ import { makeProxyFetch } from "./proxy.js"; type TelegramApiOk = { ok: true; result: T }; type TelegramApiErr = { ok: false; description?: string }; type TelegramGroupMembershipAuditData = Omit; +type TelegramChatMemberResult = { status?: string }; export async function auditTelegramGroupMembershipImpl( params: AuditTelegramGroupMembershipParams, @@ -27,7 +28,7 @@ export async function auditTelegramGroupMembershipImpl( try { const url = `${base}/getChatMember?chat_id=${encodeURIComponent(chatId)}&user_id=${encodeURIComponent(String(params.botId))}`; const res = await fetchWithTimeout(url, {}, params.timeoutMs, fetcher); - const json = (await res.json()) as TelegramApiOk<{ status?: string }> | TelegramApiErr; + const json = (await res.json()) as TelegramApiOk | TelegramApiErr; if (!res.ok || !isRecord(json) || !json.ok) { const desc = isRecord(json) && !json.ok && typeof json.description === "string" @@ -43,9 +44,8 @@ export async function auditTelegramGroupMembershipImpl( }); continue; } - const status = isRecord((json as TelegramApiOk).result) - ? ((json as TelegramApiOk<{ status?: string }>).result.status ?? null) - : null; + const status = + isRecord(json.result) && typeof json.result.status === "string" ? json.result.status : null; const ok = status === "creator" || status === "administrator" || status === "member"; groups.push({ chatId, diff --git a/extensions/telegram/src/draft-stream.ts b/extensions/telegram/src/draft-stream.ts index b6c34fcf60f..36f0a780dcd 100644 --- a/extensions/telegram/src/draft-stream.ts +++ b/extensions/telegram/src/draft-stream.ts @@ -21,6 +21,8 @@ type TelegramSendMessageDraft = ( }, ) => Promise; +type TelegramSendMessageParams = Parameters[2]; + /** * Keep draft-id allocation shared across bundled chunks so concurrent preview * lanes do not accidentally reuse draft ids when code-split entries coexist. @@ -179,7 +181,7 @@ export function createTelegramDraftStream(params: { : replyParams; const usedThreadParams = "message_thread_id" in (sendParams ?? {}) && - typeof (sendParams as { message_thread_id?: unknown }).message_thread_id === "number"; + typeof sendParams?.message_thread_id === "number"; try { return { sent: await params.api.sendMessage(chatId, sendArgs.renderedText, sendParams), @@ -189,9 +191,7 @@ export function createTelegramDraftStream(params: { if (!usedThreadParams || !THREAD_NOT_FOUND_RE.test(String(err))) { throw err; } - const threadlessParams = { - ...(sendParams as Record), - }; + const threadlessParams: TelegramSendMessageParams = { ...(sendParams ?? {}) }; delete threadlessParams.message_thread_id; params.warn?.(sendArgs.fallbackWarnMessage); return {