Bots are tricky because they require a certain amount of AI. There a number of different systems for this, and they're all quite complex. Trying to get them to interface with the environment is a chore all by itself.
Technical issues aside, a bot should do three main things:
Search
Engage
Recover
You can modify each one of those to do something more complex. For example, during the search phase, it would follow that if the health was below a certain threshold, the bot would search for health. This also opens up opportunities for different bot behaviors: armour stockpiling, for example, or an obsessive healer.
The search phase would also be the primary time for the bot to try to find a target. Ideally, it pursues the same target unless that target leaves it's range and a new one enters its range. This way, the bot won't shoot at the closest thing it sees. Similarly, a bot should return fire at someone whose shooting at it. Like before, this behavior needs to be adjusted so that the bot doesn't ignore everyone else. There are multiple ways of accomplishing this, like weighting behaviors for priority or simply hard-coding behavior.
Once a bot has found a target, it switches into the engage mode. This basically boils down to calculating trajectories for bullets to make sure the target is hit. This would including not trying to shoot through walls and picking the right weapon for the job. You'd obviously need to add a certain amount of randomness to this so the bot isn't dead-on every time. One behavior I notice in a lot of players is that they aim up and start shooting, and then bring the gun down to the aiming level.
If the target leaves the range, the bot is significantly weak, or is out of ammo (again, this could a point of modified bot behavior: if it runs out of ammo in one weapon, switch to another, and then another), enter the search phase again only if the ammo of the weapons, health, or armour are above a certain threshold. If they aren't, the bot should look only for health or ammo, returning fire only defensively and without pursuing targets.
Naturally, all of these could be tweaked and modified to suit the needs of the players. These behaviors are common to all players, and to my own strategy. I'm by no means the best Teewars player, but I'm good enough that I think these traits would provide a robust bot.