Telegram-user: ignore sends after shutdown

This commit is contained in:
Muhammed Mukhthar CM 2026-01-23 10:46:45 +00:00
parent fb9d36e433
commit af88af01fe

View File

@ -73,6 +73,11 @@ function resolveTelegramUserPeer(target: string): number | string {
return target; return target;
} }
function isDestroyedClientError(err: unknown): boolean {
const message = err instanceof Error ? err.message : String(err);
return /client is destroyed/i.test(message);
}
function firstDefined<T>(...values: Array<T | undefined>): T | undefined { function firstDefined<T>(...values: Array<T | undefined>): T | undefined {
for (const value of values) { for (const value of values) {
if (typeof value !== "undefined") return value; if (typeof value !== "undefined") return value;
@ -626,13 +631,18 @@ export function createTelegramUserMessageHandler(params: TelegramUserHandlerPara
runtime.error?.(`telegram-user voice typing failed: ${String(err)}`); runtime.error?.(`telegram-user voice typing failed: ${String(err)}`);
}); });
} }
await sendMediaTelegramUser(replyTarget, replyText, { try {
client, await sendMediaTelegramUser(replyTarget, replyText, {
accountId, client,
replyToId, accountId,
mediaUrl, replyToId,
maxBytes: mediaMaxMb * 1024 * 1024, mediaUrl,
}); maxBytes: mediaMaxMb * 1024 * 1024,
});
} catch (err) {
if (isDestroyedClientError(err)) return;
throw err;
}
hasReplied = true; hasReplied = true;
core.channel.activity.record({ core.channel.activity.record({
channel: "telegram-user", channel: "telegram-user",
@ -645,11 +655,16 @@ export function createTelegramUserMessageHandler(params: TelegramUserHandlerPara
for (const chunk of core.channel.text.chunkMarkdownText(replyText, textLimit)) { for (const chunk of core.channel.text.chunkMarkdownText(replyText, textLimit)) {
const trimmed = chunk.trim(); const trimmed = chunk.trim();
if (!trimmed) continue; if (!trimmed) continue;
await sendMessageTelegramUser(replyTarget, trimmed, { try {
client, await sendMessageTelegramUser(replyTarget, trimmed, {
accountId, client,
replyToId, accountId,
}); replyToId,
});
} catch (err) {
if (isDestroyedClientError(err)) return;
throw err;
}
hasReplied = true; hasReplied = true;
core.channel.activity.record({ core.channel.activity.record({
channel: "telegram-user", channel: "telegram-user",