Applescript not letting my machine turn off

Solution 1:

I think using on idle rather than repeat should stop it preventing sleep.
You can check this in Activity Monitor - set the View Menu to All Processes, then from the CPU or Memory tabs, right click the header & add Preventing Sleep, then sort by this.

enter image description here

The return value is to idle what delay is to a regular repeat. Your existing script is hammering round as fast as it can go, which it doesn't really need to do.
If it doesn't find 00:00 the first time round then the else sets it to check every minute until it does, then the return goes out to a full hour. I'm assuming you don't need millisecond precision for this ;)

on idle
    if the minutes of the (current date) is 0 then
        display notification "Time to standup" with title "Standup" sound name "Blow"
        return 3600
    else
        return 60
    end if
end idle

Save as an application & check 'Stay open after run handler'.