Essentially, a hidden field containing an arbitrary value which changes quite often, and the form posting is not accepted without the right value in this field.
This technique is normally used to prevent / mitigate CSRF attacks rather than discourage bots, but can help that too.
Sadly, due to ASP.NET, which uses such a value on every form, bots are now largely capable of passing this.
If you don't mind requiring Javascript, you could put some simple client-side Javascript to populate a hidden field - bots don't normally run this.
It is VERY unlikely that a spammer is going to create a robot specifically for your site. Spammers don't actually create tools at all - they can't code. They just run other peoples' tools which are NOT created specifically for your site.
If you think a spammer is going to code a bot for your site, you are probably being somewhat big-headed about the importance of your site. Unless of course, you're the next Google or Yahoo, Flickr etc (yeah, right!).
Mark