The only way I can think of is to constantly cycle through every humanoid in the game and checking their distances, and fire a method if a humanoid comes within a certain range, but I feel like that method is very is very ineffective and I was hoping there is a better, cleaner method.
Officer's answer is very flawed, for you would have to sacrifice the speed and integrity of your game to do so, which is against the main idea of the question.
I am sorry to say( not really ), checking all the humanoids in the game is definitely the best option.
If you make code that is clean and efficient, and is true to it's purpose of collecting the distance between all humanoids and the object using recursion, or make a system that keeps track of all humanoids, magnitude comparison is undoubtedly the best choice.
Just make a transparent brick and script it with your humanoid script and make sure it is on touch.