Looking to limit file attachment downloads

If your attachment is handled via the WP media library, each one has unique ID, just like Posts. When your users download the attachment by clicking the button, store a reference to that attachment ID in a user_meta setting and then update the button accordingly.

Another option: https://easydigitaldownloads.com/