What is the difference between Selenium's mouseMove() and an actual mouse movement?
From my experience if you track the mouse from JS and a bot simply uses selenium to move the mouse pointer without a "sophisticated movement curves" the answer is yes.
But,
if the 'bot' is specifically designed to create a "sophisticated movement curves" or for example "replay a recorded movement data set", i think you cannot. (Similar question also with negative answer).
So,
You can just devise an "heuristic solution" but not a perfect one. If it is what you want i can try to give you some ideas. Otherwise, if you can follow other paths i would advise you some sort of selenium detection or captcha.