A number of problems are immediately apparent
if (BUTTON2 = HIGH)
Firstly, = is used for assignment of a value whilst == is used for comparison
However, BUTTON2 is initialised to zero and is only ever changed to LOW, ie zero, so it will never equal HIGH
The delay()s will also cause problems because they literally stop the code for the delay() period so can slow down response to inputs considerably. I am sure that you will need to use non blocking timing at some time so I suggest that you look at Using millis() for timing. A beginners guide, Several things at the same time and look at the BlinkWithoutDelay example in the IDE.