you could make a script which sends a CTCP version and ban on that, or whois them and match the "realname"
else there is little you can do... there is no exact way to detect bots...
bots can be made in any number of languages and with some the version reply is what distincts them as bots, sometimes it's the realname, sometimes it's the reply to /msg NICKNAME hello ...
but alot of bots are just normal clients or are scripted in a way you can't detect that they are bots...
so no, there is no perfect way of doing this