A couple of things, are we allowed to have the bot "learn"? ie. Store information and/or change it's own code (I'm guessing not)
Currently there's no place for the AI to store data in between turns. The best you can do now is to have it learn during the development process, then store that learned logic in the code.
and are we allowed to have the bot make partially random decisions? (like the current AI does)
Absolutely, and I think it's a good idea to for bots to be partially influenced by randomness. If there's no randomness, people tend to learn how the AI acts and can exploit it too easily.
Personally I like doing weighted randoms, so the AI is more likely to do the things it thinks are best, but it still has a chance of doing something less good (or even stupid) on rare occasions.