Telegram: cast fetch to grammy client type

This commit is contained in:
Tobias Bischoff
2026-01-08 15:16:53 +01:00
parent ecd4c9c4f5
commit 3149d6d331
2 changed files with 18 additions and 8 deletions

View File

@@ -1,5 +1,5 @@
import type { ReactionType, ReactionTypeEmoji } from "@grammyjs/types"; import type { ReactionType, ReactionTypeEmoji } from "@grammyjs/types";
import { Bot, InputFile } from "grammy"; import { Bot, InputFile, type ApiClientOptions } from "grammy";
import { loadConfig } from "../config/config.js"; import { loadConfig } from "../config/config.js";
import { formatErrorMessage } from "../infra/errors.js"; import { formatErrorMessage } from "../infra/errors.js";
import type { RetryConfig } from "../infra/retry.js"; import type { RetryConfig } from "../infra/retry.js";
@@ -113,10 +113,12 @@ export async function sendMessageTelegram(
// Use provided api or create a new Bot instance. The nullish coalescing // Use provided api or create a new Bot instance. The nullish coalescing
// operator ensures api is always defined (Bot.api is always non-null). // operator ensures api is always defined (Bot.api is always non-null).
const fetchImpl = resolveTelegramFetch(); const fetchImpl = resolveTelegramFetch();
const client: ApiClientOptions | undefined = fetchImpl
? { fetch: fetchImpl as unknown as ApiClientOptions["fetch"] }
: undefined;
const api = const api =
opts.api ?? opts.api ??
new Bot(token, fetchImpl ? { client: { fetch: fetchImpl } } : undefined) new Bot(token, client ? { client } : undefined).api;
.api;
const mediaUrl = opts.mediaUrl?.trim(); const mediaUrl = opts.mediaUrl?.trim();
// Build optional params for forum topics and reply threading. // Build optional params for forum topics and reply threading.
@@ -271,10 +273,12 @@ export async function reactMessageTelegram(
const chatId = normalizeChatId(String(chatIdInput)); const chatId = normalizeChatId(String(chatIdInput));
const messageId = normalizeMessageId(messageIdInput); const messageId = normalizeMessageId(messageIdInput);
const fetchImpl = resolveTelegramFetch(); const fetchImpl = resolveTelegramFetch();
const client: ApiClientOptions | undefined = fetchImpl
? { fetch: fetchImpl as unknown as ApiClientOptions["fetch"] }
: undefined;
const api = const api =
opts.api ?? opts.api ??
new Bot(token, fetchImpl ? { client: { fetch: fetchImpl } } : undefined) new Bot(token, client ? { client } : undefined).api;
.api;
const request = createTelegramRetryRunner({ const request = createTelegramRetryRunner({
retry: opts.retry, retry: opts.retry,
configRetry: account.config.retry, configRetry: account.config.retry,

View File

@@ -1,4 +1,4 @@
import { Bot } from "grammy"; import { Bot, type ApiClientOptions } from "grammy";
import { resolveTelegramFetch } from "./fetch.js"; import { resolveTelegramFetch } from "./fetch.js";
export async function setTelegramWebhook(opts: { export async function setTelegramWebhook(opts: {
@@ -8,9 +8,12 @@ export async function setTelegramWebhook(opts: {
dropPendingUpdates?: boolean; dropPendingUpdates?: boolean;
}) { }) {
const fetchImpl = resolveTelegramFetch(); const fetchImpl = resolveTelegramFetch();
const client: ApiClientOptions | undefined = fetchImpl
? { fetch: fetchImpl as unknown as ApiClientOptions["fetch"] }
: undefined;
const bot = new Bot( const bot = new Bot(
opts.token, opts.token,
fetchImpl ? { client: { fetch: fetchImpl } } : undefined, client ? { client } : undefined,
); );
await bot.api.setWebhook(opts.url, { await bot.api.setWebhook(opts.url, {
secret_token: opts.secret, secret_token: opts.secret,
@@ -20,9 +23,12 @@ export async function setTelegramWebhook(opts: {
export async function deleteTelegramWebhook(opts: { token: string }) { export async function deleteTelegramWebhook(opts: { token: string }) {
const fetchImpl = resolveTelegramFetch(); const fetchImpl = resolveTelegramFetch();
const client: ApiClientOptions | undefined = fetchImpl
? { fetch: fetchImpl as unknown as ApiClientOptions["fetch"] }
: undefined;
const bot = new Bot( const bot = new Bot(
opts.token, opts.token,
fetchImpl ? { client: { fetch: fetchImpl } } : undefined, client ? { client } : undefined,
); );
await bot.api.deleteWebhook(); await bot.api.deleteWebhook();
} }