button not working

const int led4 = 6;


...if ((buttonstate == HIGH) && (digitalRead(led4 == HIGH)))

led4 is a constant. It's always equal to 6 and anything that's not zero will be considered "high" and it can never be low.

There might be other issues but that's what I noticed.

...The LED isn't always on, but the constant called 'led1' is always equal to 6. You'll need another variable to keep track of the state of that LED.

P.S.
Your "timing" probably won't work the way you expect because you can't read the button during the delay times. You'll only read the button at the beginning, and then after the delays, then again after the 2nd group of delays when it loops-around again.

You'll need to use the millis() technique from the Blink Without Delay Example so you can loop quickly (without delays) to read switch more often while checking millis() every-time through your quick-loop.