fix(telegram): guard against empty message text in sendTelegramText

Add early return guard in sendTelegramText() to prevent calling
Telegram API with empty text, which throws:
GrammyError: Call to 'sendMessage' failed! (400: Bad Request: message text is empty)

Also strengthen the chunk iteration check to skip chunks with empty html.

Closes #4409
This commit is contained in:
Clarity Saint 2026-01-30 13:55:43 +08:00
parent 613724c26e
commit 0b38f670e4

View File

@ -105,7 +105,7 @@ export async function deliverReplies(params: {
const chunks = chunkText(reply.text || "");
for (let i = 0; i < chunks.length; i += 1) {
const chunk = chunks[i];
if (!chunk) continue;
if (!chunk?.html?.trim()) continue;
// Only attach buttons to the first chunk.
const shouldAttachButtons = i === 0 && replyMarkup;
await sendTelegramText(bot, chatId, chunk.html, runtime, {
@ -501,6 +501,10 @@ async function sendTelegramText(
replyMarkup?: ReturnType<typeof buildInlineKeyboard>;
},
): Promise<number | undefined> {
if (!text?.trim()) {
logVerbose("sendTelegramText: skipping empty message");
return undefined;
}
const baseParams = buildTelegramSendParams({
replyToMessageId: opts?.replyToMessageId,
replyQuoteText: opts?.replyQuoteText,