First off, I want to say that this particular case can be approached as a generic AI problem and solve it by training a neural network that has for input layer whatever information is relevant in the battle (such as health of the Pokémon, number of items, PP of the attacks, etc...) and having as output layer the different actions to take.
If you want to take that approach, and you have no idea how neural networks work, you can look for an introduction to the topic (there are videos, books, articles, etc...) and I'd suggest the approach described in Evolving Neural Networks through
Augmenting Topologies to train and evolve your AI. For abstract, the paper proposes an approach to use genetic algorithms to evolve the topology (the connectivity) of neural networks.
Of course, training the AI requires to have it play multiple times, and using the feedback to improve it.
I cannot really comment on AI of third party games, although we can talk about the AI bot created by drac5290 who was kind enough to publish the decision tree it uses combat. We can consider it an expert system.
Note: Whatever it sucks or not is debatable. The AI beats the Elite Four of Pokémon Blue, but it was given arguably strong Pokémon to battle and an endless supply of healing items. Also, there are new mechanics in newer Pokémon that it doesn't have to bother with.
The decision tree is the following (Yes to the left, No to the right):
As you see, it requires to calculate if the Pokémon currently out will die of an attack of the enemy in the next turn, it also requires to determinate what Pokémon will take less damage and which one will do most damage to the enemy.
Also, it doesn't have much actions, it only does: Switch, Attack (with the best attack available), and Heal using items. As far as I can tell, inflicting status effects to the enemy is not taken into account.