From 8ac88fc4ade06bcdd6ed59ce22d1da4a45cd3ca4 Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 5 May 2026 13:46:42 +0000 Subject: [PATCH] fix: handle Telegram API array-like response format --- src/bot/message-sender.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/bot/message-sender.js b/src/bot/message-sender.js index 1f6b876e..07990899 100644 --- a/src/bot/message-sender.js +++ b/src/bot/message-sender.js @@ -60,12 +60,24 @@ export async function sendStreamingMessage(ctx, text, options = {}) { logger.info('📡 Reply response type:', typeof sentMsg); logger.info('📡 Reply response keys:', sentMsg ? Object.keys(sentMsg) : 'null'); - logger.info('📡 Message ID:', sentMsg?.message_id); - logger.info('📡 Chat ID:', sentMsg?.chat?.id); - // Extract IDs safely - const messageId = sentMsg?.message_id; - const chatId = sentMsg?.chat?.id; + // Handle Telegram API response format (can be array-like) + let messageId, chatId; + if (sentMsg?.message_id !== undefined) { + messageId = sentMsg.message_id; + chatId = sentMsg.chat?.id; + } else if (Array.isArray(sentMsg) || Object.keys(sentMsg).every(k => /^\d+$/.test(k))) { + // Array-like response from Telegram API + messageId = sentMsg[0]?.message_id || sentMsg['message_id']; + chatId = sentMsg[0]?.chat?.id || sentMsg['chat']?.id; + } else { + // Try direct property access + messageId = sentMsg?.['message_id'] || sentMsg?.[0]?.['message_id']; + chatId = sentMsg?.['chat']?.['id'] || sentMsg?.[0]?.['chat']?.['id']; + } + + logger.info('📡 Extracted Message ID:', messageId); + logger.info('📡 Extracted Chat ID:', chatId); if (!messageId || !chatId) { logger.error('Failed to extract message ID or chat ID from reply response');