sendVideo reports oversize only via log.append then returns undefined (download-video.ts:~304). In callbackQueryHandler the log is NoLog, so a user who taps "Yes please" on a >2GB video sees "Starting download..." and then nothing, ever — and the multi-GB file is never cleaned up. Same silence for inline queries (handlers.ts:~218).
Also in this cluster:
- yt-dlp stderr is discarded entirely in NoLog flows; thrown errors carry only "exited with code 1". execYtdlp should always console.error stderr and include the tail in the Error message.
- probeDuration failure returns undefined which silently bypasses the long-video confirmation guard (handlers.ts:49-50) — the unverifiable case is treated as short.
Fix direction: typed VideoTooLargeError (or discriminated result) with explicit user-facing handling per flow; stderr capture independent of the user-facing log.
sendVideo reports oversize only via log.append then returns undefined (download-video.ts:~304). In callbackQueryHandler the log is NoLog, so a user who taps "Yes please" on a >2GB video sees "Starting download..." and then nothing, ever — and the multi-GB file is never cleaned up. Same silence for inline queries (handlers.ts:~218).
Also in this cluster:
Fix direction: typed VideoTooLargeError (or discriminated result) with explicit user-facing handling per flow; stderr capture independent of the user-facing log.