if you can recompile the source yourself, a tentative patch would be:
bot_buycode.cpp line 214
Code:
if (buy_weapon == -1 && weapon_table[i].priority >0)
that makes it so that anything with a priority of 0 or less, the bot will not buy, dunno if that's what everyone wants though, so i'm not committing that change. Also, you colud try removing it from the bot_buytable.ini or whatever file it is, or you can increase the price of the shield in the buytable.
HTH