This is sort of a redesign of my original thread, and it's intended to inform bot-makers of the possible ways to detect bots.
This is not a list of ways Blizzard is currently detecting bots. This is a list of the ways Blizzard could detect bots, if it decides to do so. The purpose of this thread is to inform any new bot-makers of the types of things to consider when making a bot. The list is in no order and all things should be considered equally. This list is especially important if you want to use terminology that suggests your bot is impossible to detect, hard to detect or undetectable, or if you are charging for your bot. It makes several assumptions of the capabilities of Blizzard, which is based on real-world database and service hosting and management.
All player modifications like bans, all item modifications like nerfs, work in a couple of steps. One of them is the database query, which allows you to crawl through the database and find a list of items, players, monsters, etc, which meet certain criteria.
If I Worked at Blizzard, Could I Detect Your Bot?
Q: Do you require that players have only certain skills?
Yes: This makes detecting your bot easier. While this alone won't do the trick, it can act as an important part of the database query. See the next question.
No: Good, because bots should not tie users to skills. At the very least offer a few configurations.
Q: If you Answered yes above, do you require that the skills be assigned in a particular order?
Yes: You are making this much easier for me. Now all I have to do is come up with a few more items and my query is complete.
No: Well requiring certain skills in any order is not enough to ban alone, though it is still useful information for me.
Q: Do you require any specific bindings in the game's options, such as move -> mouse3 ?
Yes: Well that's great to know. So now I know anyone who has that key bound is suspect.
No: Well I guess you've managed to dodge this bullet.
Q: Does your bot do only one thing, such as the same boss over and over?
Yes: Great, because practically no human can reliably keep this up game in and game out over the span of many hours. You are acting suspect.
No: So you are not only doing a boss, but you are doing another boss, and repairing, and stashing, and going into the auction house and sometimes doing nothing? Well that looks very much like a human to me.
Q: How many games per hour are you making?
20+: Well guess what, that's very rare for a human.
0-10: Sounds like a human to me.
Q: How long is each game that you are playing, on average?
0-10 minutes: No one who plays this game in a normal fashion will mix this amount of time with a few other positive answers.
10+ minutes: Seems like a reasonably human entity.
Q: Are you doing the exact same things every game, in the same order?
Yes: Really? Sounds like a computer to me.
No: Human I might guess.
Q: Are you posting things into chat, which come from a list of certain phrases?
Yes: Great, that makes my search much easier.
No: Good, because that's what bots do.
Q: Are you changing to the same quest and running it over and over and over?
Yes: Looks like it might be a bot!
No: OK, that's more normal.
Q: Are you clicking things an exact amount of milliseconds in between each other, every game?
Yes: Seems strange.
No: No human could do that.
Q: Are you playing 24 hours a day?
Yes: Weird, seems only a computer could do that.
No: Normal people don't do that without eventually dying.
Q: Did you design your bot for maximum efficiency, or for maximum realness?
Efficiency: Your behavior will tend to be more obviously a bot.
Realness: You are hard to detect.
Q: Whatever you do, is it constantly making patterns of behavior which go uninterrupted for some time?
Yes: Just like a bot.
No: Then how can I tell you're a bot?
Q: Are you altering memory or program files of Diablo?
Yes: As your bot gets more popular we will ban it.
No: Smart.
Keep in mind almost none of these things are enough for me to pinpoint you as a bot. But 2+ of them make you more likely to be able to be detected, if I worked at Blizzard.