Share a solution to stop the echo area overwriting the minibuffer

Share a solution to stop the echo area overwriting the minibuffer

(defun clear-message (&rest args)
    (cancel-function-timers 'message)
    (advice-remove 'message  #'clear-message)
    (run-with-timer 4 nil
                    (lambda () (message nil)
                            (advice-add 'message :after #'clear-message))))
(advice-add 'message :after #'clear-message)

The original question:

Often, when I’m finding a file, or entering some command via M-x what I’m typing gets overwritten by a message being sent to the echo area. The messages don’t seem to vanish after a delay, and the only way I can get rid of them is to either C-f or some other movement or C-g.