Create the message in an entity by means of the microflow. Also set the new send time.
Then in a scheduled event add a microflow that retrieves all message records for which the next send time is in the past.
Then send the message in the microflow used in the scheduled event and set the new send time.
I’d also add something like a status boolean so you can also set messages to not to be send anymore, and incorporate this in the scheduled event microflow’s retrieve xpath.
Be aware that when running locally the schedule event needs to enabled and set the start time somewhere in the past.