One of the main hurdles associated with creating a poker bot is avoiding detection.
I imagine most people when initially considering the problem look at it from the vantage point of the poker site. You ask yourself: “If I was charge of security, what would I look for to detect poker bots?”
So you make a short list of everything you can think of and start brainstorming ways not to violate those principles.
Your list might look something like this:
Mouse movement – Figure out an algorithm that closely models human behavior
Mouse clicks – Don’t click in the same location every time
Number of hands – Don’t play an excessive number of hands in given period of time
etc etc. You get the idea.
It’s critical that you take these precautions because its likely the first thing the poker sites look at when determining who’s been naughty and who’s been nice (or maybe not).
However, in my experience, the biggest challenge is NOT how to fool the poker site, its how to fool your opponents. These are the people that the bot will spend the most time with you and if it plays in a robotic or in an abnormal manner, someone might get suspicious. All it takes is one person emailing the poker site saying “Hey, what’s up with this guy?” and you’re toast.
Since most bots rely on playing a large number of hands, it’s vital that you devote a lot of time and energy to how you’re going to deal with people.
One of the problems you’ll have to figure out is what you want to do when people talk to your bot.
Do you want to create some IF/THEN rules that talk back when someone says a specific word or phrase? Maybe have the bot text your phone and then send your response back to that chat? You can get pretty creative, but I recommend keeping it simple. The more complicated your system, the more likely it is to fail.
Here’s the thing: most players never chat so if your bot never does, most people won’t raise an eyebrow. 99% of the time you can safely ignore what people say and you’ll be just fine.
However, in certain circumstances, especially when you’re heads up and someone says something provocative, you definitely want to respond. Take, for instance, if someone says: “Agh I hate bots”
You could ignore it… but its probably not the best way to increase your chances of long term success.
Here’s what I did: I created a list of words like “bot”, “computer”, and “cheater” and if anyone said one of those words, my computer would start playing a loud, annoying bell. If I was in the around I could pause the bot, answer the the belligerent individual, and hopefully quell his suspicion.
Simple and effective.
What do you do if you’re not around?
Tip #2: be around. It’s not as sexy (?) as picturing yourself out to the movies while your bot’s at home paying for your evening out, but it will drastically increase how long your bot survives. There will be bugs. Things will break. Stuff will happen that you’ve never seen before. Be around. You don’t have to be there at your desk watching every move, but be in the vicinity. Also, the easiest way to ensure the bot isn’t playing an excessive number of hours is to make sure that you’re around when the bot is playing. In theory, you could be playing the same number of hours.
In general, you don’t want to stick out at all. Leaving your bot on all night is a sure-fire way to fail at that. You want the bot’s behavior to be as average as possible.
…except for its results :)
Nice post. Are you going to go into more technical detail about how you stopped the casino from detecting your bot?
The Improving Pokerstars’s Bot Detection Techniques post covers some of that.
There are additional things I can go into detail about.
What specifically do you want to know?
For the HU games handling chat is probably necessary. But for the fullring or 6max it is not so essential, I think.
I’d have gone for “Sorry, got six games on the go. brb” but that might seem a bit obvious if you use it more than once.
Wouldn’t ignoring all chat *except* chat about bots and cheating be a bit of a giveaway? :)
Hmm never thought of that.