Error Message } before else (which i have got)

I am writing a code to turn on an led when I press a button if it has been five seconds since the button was clicked last. I have done what it says but The compiler says this still:

Arduino: 1.8.9 (Windows 10), Board: "Arduino/Genuino Uno"

C:\Users\noodl\Documents\Arduino\sketch_sep23a\sketch_sep23a.ino: In function 'void loop()':

C:\Users\noodl\Documents\Arduino\sketch_sep23a\sketch_sep23a.ino:28:26: warning: invalid conversion from 'long unsigned int (*)()' to 'uint8_t {aka unsigned char}' [-fpermissive]

digitalWrite(millis,0);

^

In file included from sketch\sketch_sep23a.ino.cpp:1:0:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:134:6: note: initializing argument 1 of 'void digitalWrite(uint8_t, uint8_t)'

void digitalWrite(uint8_t, uint8_t);

^

sketch_sep23a:30:3: error: expected '}' before 'else'

}else{digitalWrite(led, LOW);

^

exit status 1
expected '}' before 'else'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

the code:
// try two of making a led button limited to 5 seconds
int led = 8;
int push = 1;
unsigned long currentMillis = millis ();
int pushState = 0;

void setup() {
// put your setup code here, to run once:
pinMode(led, OUTPUT);
pinMode(push, INPUT);
}
void loop() {

pushState = digitalRead(push);
digitalWrite(led,LOW);
if (pushState == HIGH){
if (5000>currentMillis){
digitalWrite(led, HIGH);
digitalWrite(millis,0);
}else{digitalWrite(led, LOW);
}else{digitalWrite(led, LOW);
}

}

Please read How to use this forum - please read, specifically point #7 about posting code.

Your code is missing a } somewhere; it currently looks like

  if (pushState == HIGH)
  {
    if (5000 > currentMillis)
    {
    }
    else
    {
    }
    else
    {
    }


  }

You have two else's for one if.

Further I suggest that you get in the habit of properly indenting the code. Use tools -> auto format in the IDE and it would be clear that you're missing a }.

// try two of making a led button limited to 5 seconds

int led = 8;
int push = 1;
unsigned long currentMillis = millis ();
int pushState = 0;

void setup() {
  // put your setup code here, to run once:
  pinMode(led, OUTPUT);
  pinMode(push, INPUT);
}

void loop() {

  pushState = digitalRead(push);
  digitalWrite(led, LOW);
  if (pushState == HIGH) {
    if (5000 > currentMillis) {
      digitalWrite(led, HIGH);
      digitalWrite(millis, 0);
    } else {
      digitalWrite(led, LOW);
    } else {
      digitalWrite(led, LOW);
    }


  }

If you use the autoformat and the { and } were all matched, the last } would have been at the beginning of the line.

Lastly, what is this supposed to do?

digitalWrite(millis, 0);

reset my variable

Which variable?

Does it matter that you never update currentMillis?

How is this a bootloader issue?

digitalWrite is used only to write to pins. The first argument must be a pin number.

For assigning values to variables, use the = operator.

millis() is a function. It returns a value. To get/use this value, you must call that function and assign it to a variable, eg
CurrentMillis=millis()

Sets the variable currentMillis to what millis() returns (milliseconds since last reset, as an unsigned long) at that instant.

I have done what it says

No. No you didn't.
If the compiler says you have an error, swallow your pride and admit you have an error. You have done something that you think is right, but isn't. Take a deep breath, use the formatting tools available to you, read up on subjects that you aren't super familiar with that the compiler lists as problem areas (millis, functions, how to count { and }, etc.)