Roblox generously provides a code to detect whether a player moves or not:
game.Workspace.Player.Humanoid.Running:Connect(function(speed)
if speed > 0 then
print("Player is running")
else
print("Player has stopped")
end
end)
but the problem with this is that the script sometimes misfires, meaning the when the script prints "Player is running", it would fire 3 times or so before stopping, and the same would be when the player stops.
Is there an accurate way to outright detect whether the player began moving or completely stop. I preferably would not like to use key pressing events as I would like this to work on Console where they use thumbsticks.

2 comments
UserInputService and ContextActionService provide you with gamepad support. Any other reason to not use them?
I don't really like infinite loops, but I think my updated solution will work for your purpose.