feat: add native result-file delivery

This commit is contained in:
xmanrui 2026-08-23 20:02:06 +08:00
parent 2803bbcbab
commit d472dd5a75
65 changed files with 10205 additions and 255 deletions

View file

@ -146,7 +146,7 @@ export function telegramInboundAllowed(message, {
&& allowedPrivateUserIds.has(String(message.senderId));
}
class TelegramBotClient {
export class TelegramBotClient {
#api;
#signal;
@ -157,17 +157,20 @@ class TelegramBotClient {
async sendText(target, text) {
const chunks = splitMessageText(text, 4_000);
let result = null;
const providerMessageIds = [];
for (const [index, chunk] of chunks.entries()) {
result = await this.#api.sendMessage({
const result = await this.#api.sendMessage({
chatId: target.chatId,
text: chunk,
replyToMessageId: index === 0 ? target.replyToMessageId : undefined,
messageThreadId: target.messageThreadId,
signal: this.#signal,
});
if (Number.isSafeInteger(result?.message_id)) {
providerMessageIds.push(String(result.message_id));
}
}
return result;
return { providerMessageIds };
}
sendTyping(target) {
@ -178,6 +181,16 @@ class TelegramBotClient {
});
}
sendFile(target, file) {
return this.#api.sendDocument({
chatId: target.chatId,
file,
replyToMessageId: target.replyToMessageId,
messageThreadId: target.messageThreadId,
signal: this.#signal,
});
}
async openStream(target) {
const stream = createEditableMessageStream({
limit: 4_000,
@ -203,6 +216,7 @@ class TelegramBotClient {
messageThreadId: target.messageThreadId,
signal: this.#signal,
}),
messageIdForResult: (message) => message?.message_id,
});
return stream.start();
}