Text pops up (just once) at 21 hours and 30 minutes
OR
Anytime after that (just once) up to 2am
I hope I understood the task correctly, you need to check it because I haven't tested it.
I suggest first optimizing and adding the frequency of checks so that it does not happen every tick, for example, 3 times per second.
Then we check the mandatory conditions for the text to appear.
-Is there already such a text?
-Is there a pause?
-Is it too late, less than 2 hours after midnight?
-Is the time greater than or equal to 21?
In the next block, we specify whether we have more than 22 hours or more than 30 minutes.
This way, our block should work once, and the check will not overload the entire game.