Я думал реализовать в сессии метод принимающий ссылку и размер чанков, а возвращающий условный StreamContent. Логику скачивания файлов реализовать в
bot.download().
В URLInputFile брать бота из контекста, обращаться к сессии, получать StreamContent и возвращать его содержимое уже как положено в InputFile