There is a lot of information here that is spot on and a lot that misses the mark completely.
To start, I've been a professional online poker player for years. I've played on multiple sites (stars, ftp, party, pacific) and played multiple forms of poker successfully (MTT, SNG, LHE, NLHE, PLO, STUD). I mod the High Stakes PLO forum at 2+2 (largest online poker community) and have been approached by most all the big training sites to make training videos for PLO, my current game. I've made a few videos for LeggoPoker and have also coached a few high stakes players as well. I don't play the ultra high stakes games but I'm friendly with a few high stakes players that I've talked 100s of hours of strategy with and have even discussed writing books and building software to help analyze the game better. On top of that, I've also been speaking with Darse Billings (from the article) over the past few months on a number of topics. I've read his (and his teams) papers on opponent modeling and constructing a poker program (google "Polaris"). Lastly I've spoken to several bot developers as well as computer scientists that have helped a poker site (FTP to be specific) develop detection algorithms for locating bots. So I think I can shed some light on the topic.
*Full disclosure: I've never been involved with developing, implementing or profited from botting of any sort.*
I started reading every post in this thread but as I realized how long it was I started to skim. Some of this may be covered...but if anyone has any questions, I'd be happy to answer whatever I can. This is a subject I know quite a bit about and it's something I'm extremely interested in as well.
To start, most bots that are caught by the sites are extremely unsophisticated. You can purchase off the shelf, very basic, run of the mill bots that don't have many options as far as developing strategy. These bots aren't designed to win. Surprised? They are there for rakeback and bonus-whoring. Think of these bots like market makers for very small stakes (i.e. bad players). The small stakes games run often (liquidity) and are filled with bad players. So these bots don't need to be ultra sophisticated to turn a profit...despite that, most bots are very basic and they only need to break even...if they win...thats great but the idea is to play millions of hands...and not lose. They earn money by collecting rake back from the site and for clearing bonuses and earning frequent player points at the sites...which are redeemable for cash.
According to my bot developer contacts...Full Tilt Poker was extremely lax on the botting issue until recently. I think they viewed it as a positive for the site (they keep the games running and provide rake). Officially, it was "No Botting Allowed" but I don't believe they actively tried to stop it...until recently. Today however, it's growing into a bigger and bigger issue...the sites rarely talk about how big the "problem" is but I can assure it that it's a major problem for the sites and will continue to grow.
Online sites discourage botting to protect their image and their creditability...which might sound somewhat miniscule but a sites reputation is a HUUUUUUGE asset to the company (I'd say it's largest). There are a number of other reasons why a site shouldn't allow botting, if anyone thinks other wise I'll elaborate.
Building a bot is obviously possible. Building a bot that can compete vs smart players is extremely hard. And I mean, seriously difficult. The problem isn't in developing strategy...that is the easiest part (not easy...easiest). The problem is putting together enough hardware and software that can handle the amount of of memory/calculations needed to process these decisions timely. And I'm talking about NLHE and PLO cash games btw. HU LHE, SNGs, MTTs will be easier because there are less decisions and variables involved with those games...they're easier to quantify basically.
If poker was a set strategy then this wouldn't be that much of an issue. But a winning strategy in poker is an adaptive one (for now) based on outside variables that we can't control. Unlike say checkers or chess where the best move is always (usually) the best move...in poker the best move depends on a number of variables: The cards we are dealt, the number of players at the table, the stack size each player has, the position we are in and most importantly the tendancies of our opponents (opponent modeling). If anyone thinks I'd be easy to build a competitive bot that can beat 2/4 NLHE/PLO online then again, I can elaborate. Just know that the issue isn't really finding a strategy...it's putting together a system that can execute it. If anyone here thinks they can put together a system like this, then I know a number of people that would looooove to make your acquaintance.
Those are some of the hurdles that it takes to even make a competitive bot. Lest we forget there are teams of very smart people at the pokersites designing detection systems to find you. Not only do you have to build a system that can execute a winning strategy...you also have to avoid being caught by the site and having ALL of your money confiscated. A few posts above David points out some simple quick tips that might help avoid detection. Some of that stuff is implemented like randomizing timing, clicking, mouse movements, playing style, etc but that won't keep you hidden from the sites. And yes, sites have pop ups for people who mass table to ensure that they are human players. This is easily worked around. The sites also update their systems constantly. Ideally, you'd want to tap into the client feed to understand the state of a certain game. Holes are constantly fixed or changed so you'll be in a constant battle of updating your system so that it can attach to the poker client and understand that actual state of the game....How would your system know what cards it is dealt and how much money is in the pot? A bot needs to get that information somewhere...and outside of relying on primitive screen capture programs to read the actual state of the game, you'll need to tap into some feed that your computer gets to get that information in real time. Imagine building a whole system that relies on some hole you found that gets patched up next week...no fun.
I guess I'll stop here. There is a lot more I could say but I'm rambling and not really responding to anyone question or comment...just spewing my thoughts. If anyone has questions or anything like that feel free to PM me or post here and I'd be happy to answer as best I can.
Scott