The main things about bots are:
- they should understand the game mode and behave according to it
- they shouldn't get stuck or be staying in only one area
-> they should either have waypoints and chose their route from them (which basically would mean you'd have to have waypoints for every map you want the bots to work on)
or they should navigate around the map freely without waypoints (even more difficult and most of the times implies they should be 'learning' the map during gameplay or reading out what they learned the last time around)
So the problem of programming an AI comes down to "how smart should they be?". Even a simple dissatisfying AI would have to be taught basic behaviour like "if there are two routes, alwas go left" and recognition of their surroundings (how far will you scan for walls and will you remember walls you already found? -> big scanrange = slowing your system (per bot of course), small scanrage = recogition of walls very late, e.g. if they're already running into them.) making that part non-trivial.
Even with waypoints bots shouldn't unload all their ammo into a wall. Shooting/hitting targets once they know there isn't a wall should be easy, it's all about percentage, i.e. how likely you wan't them to hit.