mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-06 14:51:08 +00:00
* test(telegram): add URL construction tests for custom apiRoot Add comprehensive test cases to verify that file download URLs are correctly constructed when using a custom apiRoot configuration for local Bot API servers. Tests validate: - Document downloads use the custom apiRoot in the constructed URL - Sticker downloads use the custom apiRoot in the constructed URL - SSRF policy correctly includes the custom hostname This ensures issue #59512 (Telegram file downloads with local Bot API) is properly covered by regression tests. * refactor(telegram): improve media resolution code quality Apply KISS and YAGNI principles to reduce code duplication and improve maintainability: 1. Extract media metadata resolution - Consolidate resolveMediaFileRef(), resolveTelegramFileName(), and resolveTelegramMimeType() into single resolveMediaMetadata() function - Returns typed MediaMetadata object with fileRef, fileName, mimeType - Reduces duplication and improves readability 2. Add logging for apiRoot parsing failures - Log when custom apiRoot URL parsing fails in buildTelegramMediaSsrfPolicy() - Helps debug configuration issues with local Bot API servers 3. Fix missing apiRoot in buffered messages - Add telegramCfg.apiRoot parameter to resolveMedia() calls in bot-handlers.buffers.ts (lines 150-159, 189) - Ensures reply media in buffered contexts respects custom apiRoot config - Fixes inconsistency where runtime handler passed apiRoot but buffers didn't These changes improve code quality while maintaining backward compatibility and ensuring issue #59512 (Telegram file downloads with local Bot API) works correctly in all contexts. * fix(telegram): resolve bot review issues Address critical issues identified by Greptile code review: 1. Define telegramCfg in bot-handlers.buffers.ts - Extract telegramCfg from cfg.channels?.telegram - Fixes ReferenceError when accessing telegramCfg.apiRoot - Ensures buffered message handlers can access apiRoot configuration 2. Restore type safety for MediaMetadata.fileRef - Change from 'unknown' to proper union type - Preserves type information for downstream file_id access - Prevents TypeScript strict mode compilation errors These fixes ensure the PR compiles correctly and handles buffered media downloads with custom apiRoot configuration. * fix(telegram): use optional chaining for telegramCfg.apiRoot TypeScript strict mode requires optional chaining when accessing properties on potentially undefined objects. Changed telegramCfg.apiRoot to telegramCfg?.apiRoot to handle cases where telegramCfg is undefined. Fixes TypeScript errors: - TS18048: 'telegramCfg' is possibly 'undefined' (line 160) - TS18048: 'telegramCfg' is possibly 'undefined' (line 191) * fix(telegram): add missing optional chaining on line 191 Complete the fix for telegramCfg optional chaining. Previous commit only fixed line 160, but line 191 also needs the same fix to prevent TS18048 error. * fix: cover buffered Telegram apiRoot downloads (#59544) (thanks @SARAMALI15792) --------- Co-authored-by: Ayaan Zaidi <hi@obviy.us>