I can solve the problem of botting in League with one observation: No "bot" can score high grades.
Low level accounts need experience to level up to 30. Botters build scripts to basically run it down, and gain experience even though their grades are extremely bad. The seemingly obvious solution is to give no experience to very bad grades. So if you grade a below a C, then you get no experience. And anything below a B, give reduced experience. Any human with a real hand on the mouse should be able to grade better than a C in the vast majority of pre-30 games.
Then, to bring balance to the force, for situations where even a human would have a bad game occasionally, give bonus experience for high grades. With grades of S or more giving even extra bonus.
And in case anyone thinks botters would simply pick easy champions that you can't possibly grade low on, think again, because the grading system grades you based on your performance on that specific champion... so picking an easy champion isn't going to fix much, the bot will still play that specific champion much worse than a human, and so it's still going to get a low grade no matter what the pick.
There, I just completely solved the problem of botting in league of legends, on a global scale. Somebody gift me a skin.
Update: I see all the botters dropped by to downvote this thread.