There is no proper way to detect a bot with any algorithm.
Detecting via accuracy:
- will kick high-level players
- consider: bots, especially in vanilla, miss more shots than high-level players (kind of all grenades are misses!)
- how do you want to detect shots that are supposed to hit and "luckshots" (spamming with gun, defensive grenades)?
Detecting via aiming:
- there are bots that always aim the opponent tee, all the time
- there are bots, that don't do
- bots, that do, will change their code
Conclusion: You might be able to detect few different kinds of bots, but devs will change their code, or ppl will simply start using other bots.