Need help programming a photocell/relay shield

Try this, you will have to alter the '#define triggerLevel 512' value to suit your circuit and it's logic may need reversing from

  if (analogRead(ldrPin) < triggerLevel){

to

  if (analogRead(ldrPin) > triggerLevel){

the

#define relayDelay 20UL

defines the relay delay (20 seconds) but keep the UL on the end else it may cause timing issues later in code.

#define ldrPin A0                 // Pin the light dependent resistor is connected to
#define relayPin 2                // Pin relay is connected to
#define ledPin 13                 // Pin LED is connected to

#define triggerLevel 512          // Levels below this threshold will trigger relay
#define relayDelay 20UL           // Relay delay time in seconds

unsigned long relayOffTime = 0;   // Time to turn off relay

void setup(){
  //Serial.begin(115200);
  pinMode(relayPin,OUTPUT);
  digitalWrite(ledPin,LOW);       // Turn relay off
  pinMode(ledPin,OUTPUT);
  digitalWrite(ledPin,LOW);       // Turn LED off
}

void loop(){
  if (analogRead(ldrPin) < triggerLevel){
    if (relayOffTime == 0) {      // Relay off time zero so relay is off and we need to turn it on
      digitalWrite(ledPin,HIGH);  // Turn relay on
      digitalWrite(ledPin,HIGH);  // Turn LED on
      relayOffTime = (relayDelay * 1000UL) + millis();  // Set off time
      //Serial.println("Relay On");
    }
  }
  
  if (relayOffTime != 0) {        // Relay off time not zero so relay is on and we need to check if it's time to turn it off
    if (millis() > relayOffTime){ // Time expired?
      digitalWrite(ledPin,LOW);   // Turn relay off
      digitalWrite(ledPin,LOW);   // Turn LED off
      relayOffTime = 0;           // Clear off time
      //Serial.println("Relay Off");
    }
  }
}