How to (optimally) fetch a button press?
You should use the millis function (see millis). 

Create a variable of type unsigned long and check it against the current time, with some offset. 

See also the debouncing example, how to use this function and maybe you want to implement the debouncing too.