ESP.deepSleep no working

I have a ESP8266 D1 Mini and want it to go into deep sleep overnight. I have the D0 and RST pin conned through a jumper wire. But when my code runs the deepsleep only lasts a second then reboots. I have a MQTT line that makes it go to sleep.
My code is below, any help is appreciated.

#include <ESP8266WiFi.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
#include <time.h>
#include "DHT.h"

#include <PubSubClient.h>

int pinCS = D6;
int numberOfHorizontalDisplays = 4;
int numberOfVerticalDisplays = 1;
char time_value[20];

const char* mqttServer = "192.168.0.50";
const int mqttPort = 1883;
const char* mqttUser = "";
const char* mqttPassword = "";
//bool timer_newMessageAvailable = false;
bool timer_done = false;
bool timer_clear = false;
bool timer_sleep = false;
String PayloadString = "";
int Seconds = 0;
int Minutes = 0;
String stSeconds = "";
String stMinutes = "";
WiFiClient espClient;
PubSubClient client(espClient);

// LED Matrix Pin -> ESP8266 Pin
// Vcc -> 3v (3V on NodeMCU 3V3 on WEMOS)
// Gnd -> Gnd (G on NodeMCU)
// DIN -> D7 (Same Pin for WEMOS)
// CS -> D4 (Same Pin for WEMOS)
// CLK -> D5 (Same Pin for WEMOS)

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

int wait = 70; // In milliseconds

int spacer = 1;
int width = 5 + spacer; // The font width is 5 pixels

int m;

#define DHTPIN 0 // D3

#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

String t, h;

void setup() {
Serial.begin(115200);
dht.begin();

//INSERT YOUR SSID AND PASSWORD HERE

WiFi.begin("", "");
matrix.setIntensity(0); // Use a value between 0 and 15 for brightness
matrix.setRotation(0, 1); // The first display is position upside down
matrix.setRotation(1, 1); // The first display is position upside down
matrix.setRotation(2, 1); // The first display is position upside down
matrix.setRotation(3, 1); // The first display is position upside down
matrix.fillScreen(LOW);
matrix.write();

while (WiFi.status() != WL_CONNECTED) {
Serial.println("Connecting to WiFi..");
matrix.drawChar(2, 0, 'W', HIGH, LOW, 1); // H
matrix.drawChar(8, 0, 'I', HIGH, LOW, 1); // HH
matrix.drawChar(14, 0, '-', HIGH, LOW, 1); // HH:
matrix.drawChar(20, 0, 'F', HIGH, LOW, 1); // HH:M
matrix.drawChar(26, 0, 'I', HIGH, LOW, 1); // HH:MM
matrix.write(); // Send bitmap to display
delay(250);
matrix.fillScreen(LOW);
matrix.write();
delay(250);
}
Serial.println("Connected to the WiFi network");
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);

while (!client.connected()) {
Serial.println("Connecting to MQTT...");

if (client.connect("ESP8266Client", mqttUser, mqttPassword )) {

Serial.println("connected");

} else {

Serial.print("failed with state ");
Serial.print(client.state());
delay(2000);

}
}
client.publish("wled/status", "starting");
delay(1000);
client.publish("wled/status", "up");
client.subscribe("wled/timer");
client.subscribe("wled/timerdone");
//CHANGE THE POOL WITH YOUR CITY. SEARCH AT https://www.ntppool.org/zone/@

configTime(0 * 3600, 0, "it.pool.ntp.org", "time.nist.gov");

setenv("TZ", "GMT+6BST", 1);

}

void loop() {

//Serial.println("Test");
if (!client.connected()) { // MQTT reconnect
reconnect();
}
client.loop();

//m = map(analogRead(0), 0, 1024, 0, 12);
//matrix.setIntensity(m);
//matrix.fillScreen(LOW);

// Serial.println(Seconds);
while (Seconds > 0) {

stMinutes=Minutes;
if (Minutes>9) {stMinutes=stMinutes;} else {stMinutes="0" + stMinutes;}
stSeconds = Seconds-(Minutes*60);
if ((Seconds-(Minutes*60))>9) {stSeconds=stSeconds;} else {stSeconds="0" + stSeconds;}
String time_value = stMinutes + ":" + stSeconds;

//String time_value = String(Seconds);
matrix.drawChar(2, 0, time_value[0], HIGH, LOW, 1); // H
matrix.drawChar(8, 0, time_value[1], HIGH, LOW, 1); // HH
matrix.drawChar(14, 0, time_value[2], HIGH, LOW, 1); // HH:
matrix.drawChar(20, 0, time_value[3], HIGH, LOW, 1); // HH:M
matrix.drawChar(26, 0, time_value[4], HIGH, LOW, 1); // HH:MM
matrix.write(); // Send bitmap to display
Seconds--;
Minutes = (Seconds/60);
client.loop();
delay(1000);
}
if (timer_done) {
matrix.drawChar(2, 0, 'D', HIGH, LOW, 1); // H
matrix.drawChar(8, 0, 'O', HIGH, LOW, 1); // HH
matrix.drawChar(14, 0, 'N', HIGH, LOW, 1); // HH:
matrix.drawChar(20, 0, 'E', HIGH, LOW, 1); // HH:M
matrix.drawChar(26, 0, '!', HIGH, LOW, 1); // HH:MM
matrix.write(); // Send bitmap to display
delay(6000);
timer_done=false;
}
if (timer_clear) {
matrix.fillScreen(LOW);
matrix.write();

//matrix.clear();
delay(1);
timer_clear=false;
} 
if (timer_sleep) {
//sleep();
client.publish("wled/status", "sleep");
delay(1000);
timer_sleep=false;
//Serial.println("going to sleep");
ESP.deepSleep(10000); 
//WiFi.disconnect();
//WiFi.forceSleepBegin();
delay(10000);

} 
//ESP.deepSleep(5000)
delay(10); 
}

void sleep(){
client.publish("wled/status", "sleep");
delay(1000);
timer_sleep=false;
Serial.println("going to sleep");
ESP.deepSleep(10000); 
delay(10000);
}

void display_message(String message) {
for ( int i = 0 ; i < width * message.length() + matrix.width() - spacer; i++ ) {
//matrix.fillScreen(LOW);
int letter = i / width;
int x = (matrix.width() - 1) - i % width;
int y = (matrix.height() - 8) / 2; // center the text vertically
while ( x + width - spacer >= 0 && letter >= 0 ) {
if ( letter < message.length() ) {
matrix.drawChar(x, y, message[letter], HIGH, LOW, 1); // HIGH LOW means foreground ON, background off, reverse to invert the image
}
letter--;
x -= width;
}
matrix.write(); // Send bitmap to display
delay(wait / 2);
}
}

void callback(char* topic, byte* payload, unsigned int length) {
PayloadString="";
Serial.print("Message arrived in topic: ");
Serial.println(topic);

Serial.print("Message:");
for (int i = 0; i < length; i++) {
PayloadString = PayloadString + (char)payload*;*
_ Serial.print((char)payload*);*_
_* }*_
_* //Serial.print(payload);*_
_* Serial.println();*_
_* Serial.println("-----------------------");*_
_* if (strcmp(topic, "wled/timer") == 0) {*_
<em>* //timer_newMessageAvailable = true;*</em>
_* Serial.println(PayloadString);*_
_* Seconds = PayloadString.toInt();*_
_* Minutes = Seconds/60;*_
_* //Serial.print("Minutes:");*_
_* //Serial.println(Minutes);*_
_* }*_
_* if (strcmp(topic, "wled/timerdone") == 0) {*_
_* if (PayloadString == "Done") {*_
<em>* timer_done = true;*</em>
_* }*_
_* if (PayloadString == "clear") {*_
<em>* timer_clear = true;*</em>
_* }*_
_* if (PayloadString == "sleep") {*_
<em>* timer_sleep = true;*</em>
_* }*_
_* } *_ 

_*}*_
_*void reconnect() {*_
_* while (!client.connected()) {*_
_* // Create a random client ID*_
_* String clientId = "ESP8266Client-";*_
_* clientId += String(random(0xffff), HEX);*_
_* client.setServer(mqttServer, mqttPort);*_
_* client.setCallback(callback);*_
_* // Attempt to connect*_
<em>* if (client.connect(clientId.c_str(), mqttUser, mqttPassword)) {*</em>
_* Serial.println("subscribe objects");*_
_* client.publish("wled/status", "up");*_
_* client.subscribe("wled/timerdone");*_
_* client.subscribe("wled/timer");*_

_* }*_
_* else*_
_* {*_
_* Serial.print("failed, rc=");*_
_* Serial.print(client.state());*_
_* Serial.println(" try again in 5 seconds");*_
_* delay(5000);*_
_* }*_
_* }*_
_*}*_
_*```*_

Could you take a few moments to Learn How To Use The Forum.
It will help you get the best out of the forum in the future.
Other general help and troubleshooting advice can be found here.