And I guess even a good bot could still do this .. unless such a thing could be programmed into the bot which I have no idea how that would even work.
The simple AI that plays perfectly in all games is this:
- Consider all the moves you could make
- Consider all your opponent's responses to each of your moves
- Consider all your responses to each of your opponent's responses to each of your moves
... and so on, until you've explored the entire space of game states. At each game-ending move, take note of who wins. Assume every player tries to make moves that make themselves win and not lose, given optimal future play from the opponent(s), and treat the first move of a mate-in-n as winning move, for increasing values of n. Make a (treated-as-a-)winning move from the starting position if there is one.
This is great for tic-tac-toe which has a small state space (less than 100000 game states, if you merge the symmetric ones), and horribly unrealistically slow for chess which has a large state space—the sun would definitely explode before anything happens, and probably also the heat death of the universe.
One approach which works in practice is to search part of the state space and use some kind of proxy for the win condition. In chess, count pieces (with weights), have heuristics for positional factors; in Dominion, count points. It's a bit of an art to pick a useful subset of the search space. But if you can do that, then it should be fairly easy to create a bot that optimizes for player X winning rather than itself winning: just use "player X wins" instead of "I win" as the thing you're optimizing for.
If both player X and player Y are trying to make player Y win (where none of those are the bot), then it might not succeed; but you can't really blame it for losing to a bigger crowd of dirty kingmakers