Telegram-user: ignore sends after shutdown
This commit is contained in:
parent
fb9d36e433
commit
af88af01fe
@ -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",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user