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